use of org.chromium.chrome.browser.toolbar.ToolbarControlContainer in project AndroidChromium by JackyAndroid.
the class ChromeActivity method initializeToolbar.
/**
* Constructs {@link ToolbarManager} and the handler necessary for controlling the menu on the
* {@link Toolbar}. Extending classes can override this call to avoid creating the toolbar.
*/
protected void initializeToolbar() {
final View controlContainer = findViewById(R.id.control_container);
assert controlContainer != null;
ToolbarControlContainer toolbarContainer = (ToolbarControlContainer) controlContainer;
mAppMenuPropertiesDelegate = createAppMenuPropertiesDelegate();
mAppMenuHandler = sAppMenuHandlerFactory.get(this, mAppMenuPropertiesDelegate, getAppMenuLayoutId());
mToolbarManager = new ToolbarManager(this, toolbarContainer, mAppMenuHandler, mAppMenuPropertiesDelegate, getCompositorViewHolder().getInvalidator());
mAppMenuHandler.addObserver(new AppMenuObserver() {
@Override
public void onMenuVisibilityChanged(boolean isVisible) {
if (isVisible && !isInOverviewMode()) {
// The app menu badge should be removed the first time the menu is opened.
if (mToolbarManager.getToolbar().isShowingAppMenuUpdateBadge()) {
mToolbarManager.getToolbar().removeAppMenuUpdateBadge(true);
mCompositorViewHolder.requestRender();
}
}
if (!isVisible) {
mAppMenuPropertiesDelegate.onMenuDismissed();
MenuItem updateMenuItem = mAppMenuHandler.getAppMenu().getMenu().findItem(R.id.update_menu_id);
if (updateMenuItem != null && updateMenuItem.isVisible()) {
UpdateMenuItemHelper.getInstance().onMenuDismissed();
}
}
}
});
}
use of org.chromium.chrome.browser.toolbar.ToolbarControlContainer in project AndroidChromium by JackyAndroid.
the class CustomTabActivity method finishNativeInitialization.
@Override
public void finishNativeInitialization() {
final CustomTabsConnection connection = CustomTabsConnection.getInstance(getApplication());
// prerendering doesn't support extra headers.
if (IntentHandler.getExtraHeadersFromIntent(getIntent()) != null) {
connection.cancelPrerender(mSession);
}
getTabModelSelector().getModel(false).addObserver(mTabModelObserver);
boolean successfulStateRestore = false;
// Attempt to restore the previous tab state if applicable.
if (getSavedInstanceState() != null) {
assert mMainTab == null;
getTabModelSelector().loadState(true);
getTabModelSelector().restoreTabs(true);
mMainTab = getTabModelSelector().getCurrentTab();
successfulStateRestore = mMainTab != null;
if (successfulStateRestore)
initializeMainTab(mMainTab);
}
// If no tab was restored, create a new tab.
if (!successfulStateRestore) {
if (mHasCreatedTabEarly) {
// When the tab is created early, we don't have the TabContentManager connected,
// since compositor related controllers were not initialized at that point.
mMainTab.attachTabContentManager(getTabContentManager());
} else {
mMainTab = createMainTab();
}
getTabModelSelector().getModel(false).addTab(mMainTab, 0, mMainTab.getLaunchType());
}
ToolbarControlContainer controlContainer = (ToolbarControlContainer) findViewById(R.id.control_container);
LayoutManagerDocument layoutDriver = new CustomTabLayoutManager(getCompositorViewHolder());
initializeCompositorContent(layoutDriver, findViewById(R.id.url_bar), (ViewGroup) findViewById(android.R.id.content), controlContainer);
mFindToolbarManager = new FindToolbarManager(this, getToolbarManager().getActionModeController().getActionModeCallback());
if (getContextualSearchManager() != null) {
getContextualSearchManager().setFindToolbarManager(mFindToolbarManager);
}
getToolbarManager().initializeWithNative(getTabModelSelector(), getFullscreenManager(), mFindToolbarManager, null, layoutDriver, null, null, null, new OnClickListener() {
@Override
public void onClick(View v) {
RecordUserAction.record("CustomTabs.CloseButtonClicked");
finishAndClose();
}
});
mMainTab.setFullscreenManager(getFullscreenManager());
mCustomTabContentHandler = new CustomTabContentHandler() {
@Override
public void loadUrlAndTrackFromTimestamp(LoadUrlParams params, long timestamp) {
if (!TextUtils.isEmpty(params.getUrl())) {
params.setUrl(DataReductionProxySettings.getInstance().maybeRewriteWebliteUrl(params.getUrl()));
}
loadUrlInTab(getActivityTab(), params, timestamp);
}
@Override
public CustomTabsSessionToken getSession() {
return mSession;
}
@Override
public boolean shouldIgnoreIntent(Intent intent) {
return mIntentHandler.shouldIgnoreIntent(CustomTabActivity.this, intent);
}
@Override
public boolean updateCustomButton(int id, Bitmap bitmap, String description) {
CustomButtonParams params = mIntentDataProvider.getButtonParamsForId(id);
if (params == null)
return false;
params.update(bitmap, description);
if (params.showOnToolbar()) {
if (!CustomButtonParams.doesIconFitToolbar(CustomTabActivity.this, bitmap)) {
return false;
}
showCustomButtonOnToolbar();
} else {
if (mBottomBarDelegate != null) {
mBottomBarDelegate.updateBottomBarButtons(params);
}
}
return true;
}
@Override
public boolean updateRemoteViews(RemoteViews remoteViews, int[] clickableIDs, PendingIntent pendingIntent) {
if (mBottomBarDelegate == null)
return false;
return mBottomBarDelegate.updateRemoteViews(remoteViews, clickableIDs, pendingIntent);
}
};
recordClientPackageName();
connection.showSignInToastIfNecessary(mSession, getIntent());
String url = getUrlToLoad();
String packageName = connection.getClientPackageNameForSession(mSession);
if (TextUtils.isEmpty(packageName)) {
packageName = connection.extractCreatorPackage(getIntent());
}
DataUseTabUIManager.onCustomTabInitialNavigation(mMainTab, packageName, url);
if (!mHasCreatedTabEarly && !successfulStateRestore) {
loadUrlInTab(mMainTab, new LoadUrlParams(url), IntentHandler.getTimestampFromIntent(getIntent()));
}
// Put Sync in the correct state by calling tab state initialized. crbug.com/581811.
getTabModelSelector().markTabStateInitialized();
SharedPreferences preferences = ContextUtils.getAppSharedPreferences();
String lastUrl = preferences.getString(LAST_URL_PREF, null);
if (lastUrl != null && lastUrl.equals(getUrlToLoad())) {
RecordUserAction.record("CustomTabsMenuOpenSameUrl");
} else {
preferences.edit().putString(LAST_URL_PREF, getUrlToLoad()).apply();
}
super.finishNativeInitialization();
}
Aggregations