Bug 1377579 - Add progress bar to GeckoView-based custom tabs. r=snorp

This commit is contained in:
Dylan Roeh 2017-07-12 11:23:06 -05:00
Родитель f2a78cd788
Коммит 5bad4263c8
2 изменённых файлов: 30 добавлений и 0 удалений

Просмотреть файл

@ -27,6 +27,16 @@
android:layout_height="match_parent"
android:scrollbars="none"/>
<ProgressBar
android:id="@id/page_progress"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_alignTop="@id/gecko_view"
android:background="@drawable/url_bar_bg"
android:progressDrawable="@drawable/progressbar"
tools:progress="70"/>
<View android:id="@+id/custom_tabs_doorhanger_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"

Просмотреть файл

@ -28,6 +28,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ProgressBar;
import org.mozilla.gecko.ActivityHandlerHelper;
import org.mozilla.gecko.EventDispatcher;
@ -61,6 +62,7 @@ public class CustomTabsActivity extends AppCompatActivity
private GeckoPopupMenu popupMenu;
private View doorhangerOverlay;
private ActionBarPresenter actionBarPresenter;
private ProgressBar mProgressView;
// A state to indicate whether this activity is finishing with customize animation
private boolean usingCustomAnimation = false;
@ -86,6 +88,8 @@ public class CustomTabsActivity extends AppCompatActivity
doorhangerOverlay = findViewById(R.id.custom_tabs_doorhanger_overlay);
mProgressView = (ProgressBar) findViewById(R.id.page_progress);
updateProgress(10);
final Toolbar toolbar = (Toolbar) findViewById(R.id.actionbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
@ -388,6 +392,19 @@ public class CustomTabsActivity extends AppCompatActivity
forwardMenuItem.setEnabled(mCanGoForward);
}
/**
* Update the state of the progress bar.
* @param progress The current loading progress; must be between 0 and 100
*/
private void updateProgress(final int progress) {
if (mCanStop) {
mProgressView.setVisibility(View.VISIBLE);
mProgressView.setProgress(progress);
} else {
mProgressView.setVisibility(View.GONE);
}
}
/**
* Update loading status of current page
*/
@ -498,6 +515,7 @@ public class CustomTabsActivity extends AppCompatActivity
public void onLocationChange(GeckoView view, String url) {
mCurrentUrl = url;
updateActionBar();
updateProgress(60);
}
@Override
@ -518,12 +536,14 @@ public class CustomTabsActivity extends AppCompatActivity
mCanStop = true;
updateActionBar();
updateCanStop();
updateProgress(20);
}
@Override
public void onPageStop(GeckoView view, boolean success) {
mCanStop = false;
updateCanStop();
updateProgress(100);
}
@Override