Java源码示例:org.chromium.chrome.browser.firstrun.FirstRunStatus

示例1
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    notifyContextualActionBarVisibilityChanged(true);

    int allowedActionModes = ActionModeCallbackHelper.MENU_ITEM_PROCESS_TEXT
            | ActionModeCallbackHelper.MENU_ITEM_SHARE;
    // Disable options that expose additional Chrome functionality prior to the FRE being
    // completed (i.e. creation of a new tab).
    if (FirstRunStatus.getFirstRunFlowComplete()) {
        allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
    }
    mHelper.setAllowedMenuItems(allowedActionModes);

    mHelper.onCreateActionMode(mode, menu);
    return true;
}
 
示例2
/**
 * @return whether Contextual Search is enabled and active in this tab.
 */
private boolean isContextualSearchActive(ContentViewCore cvc) {
    ContextualSearchManager manager = getContextualSearchManager();
    if (manager == null) return false;

    return !cvc.getWebContents().isIncognito()
            && FirstRunStatus.getFirstRunFlowComplete()
            && !PrefServiceBridge.getInstance().isContextualSearchDisabled()
            && TemplateUrlService.getInstance().isDefaultSearchEngineGoogle()
            // Svelte and Accessibility devices are incompatible with the first-run flow and
            // Talkback has poor interaction with tap to search (see http://crbug.com/399708 and
            // http://crbug.com/396934).
            && !manager.isRunningInCompatibilityMode()
            && !(mTab.isShowingErrorPage() || mTab.isShowingInterstitialPage())
            && isDeviceOnline(manager);
}
 
示例3
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    boolean retVal = super.onCreateOptionsMenu(menu);
    if (!FirstRunStatus.getFirstRunFlowComplete(this)) return retVal;
    menu.add(Menu.NONE, R.id.menu_id_open_in_chrome, Menu.NONE, R.string.menu_open_in_chrome);
    return true;
}
 
示例4
@Override
public void finishNativeInitialization() {
    try {
        TraceEvent.begin("ChromeTabbedActivity.finishNativeInitialization");

        launchFirstRunExperience();

        ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance(this);
        // Promos can only be shown when we start with ACTION_MAIN intent and
        // after FRE is complete.
        if (!mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete(this)) {
            // Only show promos on the second oppurtunity. This is because we show FRE on the
            // first oppurtunity, and we don't want to show such content back to back.
            if (preferenceManager.getPromosSkippedOnFirstStart()) {
                // Data reduction promo should be temporarily suppressed if the sign in promo is
                // shown to avoid nagging users too much.
                if (!SigninPromoUtil.launchSigninPromoIfNeeded(this)) {
                    DataReductionPromoScreen.launchDataReductionPromo(this);
                }
            } else {
                preferenceManager.setPromosSkippedOnFirstStart(true);
            }
        }

        refreshSignIn();

        initializeUI();

        // The dataset has already been created, we need to initialize our state.
        mTabModelSelectorImpl.notifyChanged();

        getWindow().setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,
                Window.PROGRESS_VISIBILITY_OFF);

        // Check for incognito tabs to handle the case where Chrome was swiped away in the
        // background.
        int incognitoCount = TabWindowManager.getInstance().getIncognitoTabCount();
        if (incognitoCount == 0) IncognitoNotificationManager.dismissIncognitoNotification();

        super.finishNativeInitialization();
    } finally {
        TraceEvent.end("ChromeTabbedActivity.finishNativeInitialization");
    }
}
 
示例5
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    boolean retVal = super.onCreateOptionsMenu(menu);
    if (!FirstRunStatus.getFirstRunFlowComplete()) return retVal;
    return true;
}
 
示例6
@Override
public void finishNativeInitialization() {
    try {
        TraceEvent.begin("ChromeTabbedActivity.finishNativeInitialization");

        launchFirstRunExperience();

        refreshSignIn();

        ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance(this);
        // Promos can only be shown when we start with ACTION_MAIN intent and
        // after FRE is complete.
        if (!mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete()) {
            // Only show promos on the second oppurtunity. This is because we show FRE on the
            // first oppurtunity, and we don't want to show such content back to back.
            if (preferenceManager.getPromosSkippedOnFirstStart()) {
                // Data reduction promo should be temporarily suppressed if the sign in promo is
                // shown to avoid nagging users too much.
                if (!SigninPromoUtil.launchSigninPromoIfNeeded(this)) {
                    DataReductionPromoScreen.launchDataReductionPromo(this);
                }
            } else {
                preferenceManager.setPromosSkippedOnFirstStart(true);
            }

            // Notify users experimenting with WebAPKs if they need to do extra steps to enable
            // WebAPKs.
            ChromeWebApkHost.launchWebApkRequirementsDialogIfNeeded(this);
        }

        initializeUI();

        // The dataset has already been created, we need to initialize our state.
        mTabModelSelectorImpl.notifyChanged();

        getWindow().setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,
                Window.PROGRESS_VISIBILITY_OFF);

        // Check for incognito tabs to handle the case where Chrome was swiped away in the
        // background.
        int incognitoCount = TabWindowManager.getInstance().getIncognitoTabCount();
        if (incognitoCount == 0) IncognitoNotificationManager.dismissIncognitoNotification();

        // LocaleManager can only function after the native library is loaded.
        mLocaleManager = LocaleManager.getInstance();
        mLocaleManager.showSearchEnginePromoIfNeeded(this);

        super.finishNativeInitialization();
    } finally {
        TraceEvent.end("ChromeTabbedActivity.finishNativeInitialization");
    }
}
 
示例7
@Override
public List<Pair<Integer, List<ContextMenuItem>>> buildContextMenu(
        ContextMenu menu, Context context, ContextMenuParams params) {
    // Add all items in a group
    Set<ContextMenuItem> supportedOptions = new HashSet<>();
    if (FirstRunStatus.getFirstRunFlowComplete()) {
        supportedOptions.addAll(BASE_WHITELIST);
        if (mMode == FULLSCREEN_TAB_MODE) {
            supportedOptions.addAll(FULLSCREEN_TAB_MODE_WHITELIST);
        } else if (mMode == CUSTOM_TAB_MODE) {
            supportedOptions.addAll(CUSTOM_TAB_MODE_WHITELIST);
        } else {
            supportedOptions.addAll(NORMAL_MODE_WHITELIST);
        }
    } else {
        supportedOptions.add(ChromeContextMenuItem.COPY_LINK_ADDRESS);
        supportedOptions.add(ChromeContextMenuItem.COPY_LINK_TEXT);
        supportedOptions.add(ChromeContextMenuItem.COPY);
    }

    Set<ContextMenuItem> disabledOptions = getDisabledOptions(params);
    // Split the items into their respective groups.
    List<Pair<Integer, List<ContextMenuItem>>> groupedItems = new ArrayList<>();
    if (params.isAnchor()
            && !ChromeFeatureList.isEnabled(ChromeFeatureList.CUSTOM_CONTEXT_MENU)) {
        populateItemGroup(LINK, R.string.contextmenu_link_title, groupedItems, supportedOptions,
                disabledOptions);
    }
    if (params.isImage()) {
        populateItemGroup(IMAGE, R.string.contextmenu_image_title, groupedItems,
                supportedOptions, disabledOptions);
    }
    if (params.isVideo()) {
        populateItemGroup(VIDEO, R.string.contextmenu_video_title, groupedItems,
                supportedOptions, disabledOptions);
    }
    if (params.isAnchor()
            && ChromeFeatureList.isEnabled(ChromeFeatureList.CUSTOM_CONTEXT_MENU)) {
        populateItemGroup(LINK, R.string.contextmenu_link_title, groupedItems, supportedOptions,
                disabledOptions);
    }

    // If there are no groups there still needs to be a way to add items from the OTHER_GROUP
    // and CUSTOM_TAB_GROUP.
    if (groupedItems.isEmpty()) {
        int titleResId = R.string.contextmenu_link_title;

        if (params.isVideo()) {
            titleResId = R.string.contextmenu_video_title;
        } else if (params.isImage()) {
            titleResId = R.string.contextmenu_image_title;
        }
        groupedItems.add(new Pair<Integer, List<ContextMenuItem>>(
                titleResId, new ArrayList<ContextMenuItem>()));
    }

    // These items don't belong to any official group so they are added to a possible visible
    // list.
    int index = ChromeFeatureList.isEnabled(ChromeFeatureList.CUSTOM_CONTEXT_MENU)
            ? groupedItems.size() - 1
            : 0;
    addValidItems(groupedItems.get(groupedItems.size() - 1 - index).second, OTHER_GROUP,
            supportedOptions, disabledOptions);
    if (mMode == CUSTOM_TAB_MODE) {
        addValidItemsToFront(groupedItems.get(index).second, CUSTOM_TAB_GROUP, supportedOptions,
                disabledOptions);
    }

    // If there are no items from the extra items within OTHER_GROUP and CUSTOM_TAB_GROUP, then
    // it's removed since there is nothing to show at all.
    if (groupedItems.get(index).second.isEmpty()) {
        groupedItems.remove(index);
    }

    return groupedItems;
}
 
示例8
@Override
public void finishNativeInitialization() {
    try {
        TraceEvent.begin("ChromeTabbedActivity.finishNativeInitialization");

        refreshSignIn();

        initializeUI();

        // The dataset has already been created, we need to initialize our state.
        mTabModelSelectorImpl.notifyChanged();

        ApiCompatibilityUtils.setWindowIndeterminateProgress(getWindow());

        // Check for incognito tabs to handle the case where Chrome was swiped away in the
        // background.
        if (TabWindowManager.getInstance().canDestroyIncognitoProfile()) {
            IncognitoNotificationManager.dismissIncognitoNotification();
        }

        // LocaleManager can only function after the native library is loaded.
        mLocaleManager = LocaleManager.getInstance();
        boolean searchEnginePromoShown =
                mLocaleManager.showSearchEnginePromoIfNeeded(this, null);

        ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance();
        // Promos can only be shown when we start with ACTION_MAIN intent and
        // after FRE is complete. Native initialization can finish before the FRE flow is
        // complete, and this will only show promos on the second opportunity. This is
        // because the FRE is shown on the first opportunity, and we don't want to show such
        // content back to back.
        if (!searchEnginePromoShown && !mIntentWithEffect
                && FirstRunStatus.getFirstRunFlowComplete()
                && preferenceManager.getPromosSkippedOnFirstStart()) {
            // Data reduction promo should be temporarily suppressed if the sign in promo is
            // shown to avoid nagging users too much.
            if (!SigninPromoUtil.launchSigninPromoIfNeeded(this)) {
                DataReductionPromoScreen.launchDataReductionPromo(this);
            }
        } else {
            preferenceManager.setPromosSkippedOnFirstStart(true);
        }

        super.finishNativeInitialization();
    } finally {
        TraceEvent.end("ChromeTabbedActivity.finishNativeInitialization");
    }
}
 
示例9
@Override
public void prepareMenu(Menu menu) {
    Tab currentTab = mActivity.getActivityTab();
    if (currentTab != null) {
        MenuItem forwardMenuItem = menu.findItem(R.id.forward_menu_id);
        forwardMenuItem.setEnabled(currentTab.canGoForward());

        mReloadMenuItem = menu.findItem(R.id.reload_menu_id);
        mReloadMenuItem.setIcon(R.drawable.btn_reload_stop);
        loadingStateChanged(currentTab.isLoading());

        MenuItem shareItem = menu.findItem(R.id.share_row_menu_id);
        shareItem.setVisible(mShowShare);
        shareItem.setEnabled(mShowShare);
        if (mShowShare) {
            ShareHelper.configureDirectShareMenuItem(
                    mActivity, menu.findItem(R.id.direct_share_menu_id));
        }

        MenuItem iconRow = menu.findItem(R.id.icon_row_menu_id);
        MenuItem openInChromeItem = menu.findItem(R.id.open_in_browser_id);
        MenuItem bookmarkItem = menu.findItem(R.id.bookmark_this_page_id);
        MenuItem downloadItem = menu.findItem(R.id.offline_page_id);

        boolean addToHomeScreenVisible = true;

        // Hide request desktop site on all chrome:// pages except for the NTP. Check request
        // desktop site if it's activated on this page.
        MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id);
        updateRequestDesktopSiteMenuItem(requestItem, currentTab);

        if (mIsMediaViewer) {
            // Most of the menu items don't make sense when viewing media.
            iconRow.setVisible(false);
            openInChromeItem.setVisible(false);
            menu.findItem(R.id.find_in_page_id).setVisible(false);
            menu.findItem(R.id.request_desktop_site_id).setVisible(false);
            addToHomeScreenVisible = false;
        } else {
            openInChromeItem.setTitle(
                    DefaultBrowserInfo.getTitleOpenInDefaultBrowser(mIsOpenedByChrome));
            updateBookmarkMenuItem(bookmarkItem, currentTab);
        }
        bookmarkItem.setVisible(mShowStar);
        downloadItem.setVisible(mShowDownload);
        if (!FirstRunStatus.getFirstRunFlowComplete()) {
            openInChromeItem.setVisible(false);
            bookmarkItem.setVisible(false);
            downloadItem.setVisible(false);
            addToHomeScreenVisible = false;
        }

        downloadItem.setEnabled(DownloadUtils.isAllowedToDownloadPage(currentTab));

        String url = currentTab.getUrl();
        boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
                || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
        if (isChromeScheme) {
            addToHomeScreenVisible = false;
        }

        // Add custom menu items. Make sure they are only added once.
        if (!mIsCustomEntryAdded) {
            mIsCustomEntryAdded = true;
            for (int i = 0; i < mMenuEntries.size(); i++) {
                MenuItem item = menu.add(0, 0, 1, mMenuEntries.get(i));
                mItemToIndexMap.put(item, i);
            }
        }

        prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
    }
}