Search in sources :

Example 1 with CustomTabsSessionToken

use of android.support.customtabs.CustomTabsSessionToken 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)

Example 2 with CustomTabsSessionToken

use of android.support.customtabs.CustomTabsSessionToken in project AndroidChromium by JackyAndroid.

the class CustomTabActivity method handleInActiveContentIfNeeded.

/**
     * Used to check whether an incoming intent can be handled by the
     * current {@link CustomTabContentHandler}.
     * @return Whether the active {@link CustomTabContentHandler} has handled the intent.
     */
public static boolean handleInActiveContentIfNeeded(Intent intent) {
    if (sActiveContentHandler == null)
        return false;
    if (sActiveContentHandler.shouldIgnoreIntent(intent)) {
        Log.w(TAG, "Incoming intent to Custom Tab was ignored.");
        return false;
    }
    CustomTabsSessionToken session = CustomTabsSessionToken.getSessionTokenFromIntent(intent);
    if (session == null || !session.equals(sActiveContentHandler.getSession()))
        return false;
    String url = IntentHandler.getUrlFromIntent(intent);
    if (TextUtils.isEmpty(url))
        return false;
    sActiveContentHandler.loadUrlAndTrackFromTimestamp(new LoadUrlParams(url), IntentHandler.getTimestampFromIntent(intent));
    return true;
}
Also used : LoadUrlParams(org.chromium.content_public.browser.LoadUrlParams) CustomTabsSessionToken(android.support.customtabs.CustomTabsSessionToken)

Aggregations

CustomTabsSessionToken (android.support.customtabs.CustomTabsSessionToken)2 LoadUrlParams (org.chromium.content_public.browser.LoadUrlParams)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 View (android.view.View)1 OnClickListener (android.view.View.OnClickListener)1 RemoteViews (android.widget.RemoteViews)1 LayoutManagerDocument (org.chromium.chrome.browser.compositor.layouts.LayoutManagerDocument)1 ToolbarControlContainer (org.chromium.chrome.browser.toolbar.ToolbarControlContainer)1 FindToolbarManager (org.chromium.chrome.browser.widget.findinpage.FindToolbarManager)1