Search in sources :

Example 1 with ToolbarControlContainer

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();
                }
            }
        }
    });
}
Also used : AppMenuObserver(org.chromium.chrome.browser.appmenu.AppMenuObserver) ToolbarManager(org.chromium.chrome.browser.toolbar.ToolbarManager) MenuItem(android.view.MenuItem) DistilledPagePrefsView(org.chromium.chrome.browser.dom_distiller.DistilledPagePrefsView) View(android.view.View) ContentVideoView(org.chromium.content.browser.ContentVideoView) ToolbarControlContainer(org.chromium.chrome.browser.toolbar.ToolbarControlContainer)

Example 2 with ToolbarControlContainer

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();
}
Also used : SharedPreferences(android.content.SharedPreferences) CustomTabsIntent(android.support.customtabs.CustomTabsIntent) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) LayoutManagerDocument(org.chromium.chrome.browser.compositor.layouts.LayoutManagerDocument) View(android.view.View) ToolbarControlContainer(org.chromium.chrome.browser.toolbar.ToolbarControlContainer) Bitmap(android.graphics.Bitmap) RemoteViews(android.widget.RemoteViews) FindToolbarManager(org.chromium.chrome.browser.widget.findinpage.FindToolbarManager) OnClickListener(android.view.View.OnClickListener) LoadUrlParams(org.chromium.content_public.browser.LoadUrlParams) PendingIntent(android.app.PendingIntent) CustomTabsSessionToken(android.support.customtabs.CustomTabsSessionToken)

Aggregations

View (android.view.View)2 ToolbarControlContainer (org.chromium.chrome.browser.toolbar.ToolbarControlContainer)2 PendingIntent (android.app.PendingIntent)1 Intent (android.content.Intent)1 SharedPreferences (android.content.SharedPreferences)1 Bitmap (android.graphics.Bitmap)1 CustomTabsIntent (android.support.customtabs.CustomTabsIntent)1 CustomTabsSessionToken (android.support.customtabs.CustomTabsSessionToken)1 MenuItem (android.view.MenuItem)1 OnClickListener (android.view.View.OnClickListener)1 RemoteViews (android.widget.RemoteViews)1 AppMenuObserver (org.chromium.chrome.browser.appmenu.AppMenuObserver)1 LayoutManagerDocument (org.chromium.chrome.browser.compositor.layouts.LayoutManagerDocument)1 DistilledPagePrefsView (org.chromium.chrome.browser.dom_distiller.DistilledPagePrefsView)1 ToolbarManager (org.chromium.chrome.browser.toolbar.ToolbarManager)1 FindToolbarManager (org.chromium.chrome.browser.widget.findinpage.FindToolbarManager)1 ContentVideoView (org.chromium.content.browser.ContentVideoView)1 LoadUrlParams (org.chromium.content_public.browser.LoadUrlParams)1