Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3887)

Unified Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarHelper.java

Issue 1187623004: Merge ToolbarHelper to ToolbarManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits and fixed an NPE Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarHelper.java
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarHelper.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarHelper.java
deleted file mode 100644
index 87b60547ef95483ee6737a80cdaff2203dd3b27b..0000000000000000000000000000000000000000
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/toolbar/ToolbarHelper.java
+++ /dev/null
@@ -1,302 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.toolbar;
-
-import android.graphics.Bitmap;
-import android.os.SystemClock;
-import android.support.v7.app.ActionBar;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.FrameLayout;
-
-import org.chromium.base.ThreadUtils;
-import org.chromium.base.metrics.RecordHistogram;
-import org.chromium.base.metrics.RecordUserAction;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.ChromeActivity;
-import org.chromium.chrome.browser.ContextualMenuBar;
-import org.chromium.chrome.browser.CustomSelectionActionModeCallback;
-import org.chromium.chrome.browser.Tab;
-import org.chromium.chrome.browser.TabObserver;
-import org.chromium.chrome.browser.WindowDelegate;
-import org.chromium.chrome.browser.appmenu.AppMenuHandler;
-import org.chromium.chrome.browser.appmenu.ChromeAppMenuPropertiesDelegate;
-import org.chromium.chrome.browser.compositor.Invalidator;
-import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
-import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
-import org.chromium.chrome.browser.tabmodel.TabModelSelector;
-import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
-import org.chromium.chrome.browser.toolbar.ToolbarManager.MenuDelegatePhone;
-import org.chromium.chrome.browser.widget.ControlContainer;
-import org.chromium.chrome.browser.widget.findinpage.FindToolbarManager;
-import org.chromium.ui.base.DeviceFormFactor;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * Helper class to handle inflating the right view hierarchy and initialize it.
- */
-public class ToolbarHelper {
- /**
- * The number of ms to wait before reporting to UMA omnibox interaction metrics.
- */
- private static final int RECORD_UMA_PERFORMANCE_METRICS_DELAY_MS = 30000;
-
- private static final int MIN_FOCUS_TIME_FOR_UMA_HISTOGRAM_MS = 1000;
- private static final int MAX_FOCUS_TIME_FOR_UMA_HISTOGRAM_MS = 30000;
-
- protected final ChromeActivity mActivity;
- private final ToolbarControlContainer mControlContainer;
- private TabObserver mTabObserver;
-
- private final Toolbar mToolbar;
- private final ToolbarManager mToolbarManager;
-
- private final ContextualMenuBar mContextualMenuBar;
- private final ContextualMenuBar.ActionBarDelegate mActionBarDelegate;
-
- private boolean mInitialized;
-
- /**
- * Constructor for {@link ToolbarHelper}.
- * @param activity The current activity.
- * @param controlContainer {@link ControlContainer} that the Toolbar View Hierarchy will be
- * attached to.
- * @param appMenuHandler Controller for showing/hiding app menu.
- * @param appMenuPropertiesDelegate Controller for app menu item visibility.
- * @param invalidator Notifier to toolbar to force view invalidations.
- */
- public ToolbarHelper(ChromeActivity activity,
- ToolbarControlContainer controlContainer,
- final AppMenuHandler appMenuHandler,
- final ChromeAppMenuPropertiesDelegate appMenuPropertiesDelegate,
- Invalidator invalidator) {
- mActivity = activity;
- mControlContainer = controlContainer;
- assert mControlContainer != null;
-
- mToolbarManager = new ToolbarManager(mControlContainer, appMenuHandler);
- mToolbar = mToolbarManager.getToolbar();
-
- mActionBarDelegate = new ContextualMenuBar.ActionBarDelegate() {
- @Override
- public void setControlTopMargin(int margin) {
- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)
- mControlContainer.getLayoutParams();
- lp.topMargin = margin;
- mControlContainer.setLayoutParams(lp);
- }
-
- @Override
- public int getControlTopMargin() {
- FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams)
- mControlContainer.getLayoutParams();
- return lp.topMargin;
- }
-
- @Override
- public ActionBar getSupportActionBar() {
- return mActivity.getSupportActionBar();
- }
-
- @Override
- public void setActionBarBackgroundVisibility(boolean visible) {
- int visibility = visible ? View.VISIBLE : View.GONE;
- mActivity.findViewById(R.id.action_bar_black_background).setVisibility(visibility);
- // TODO(tedchoc): Add support for changing the color based on the brand color.
- }
- };
- mContextualMenuBar = new ContextualMenuBar(activity, mActionBarDelegate);
- mContextualMenuBar.setCustomSelectionActionModeCallback(
- new CustomSelectionActionModeCallback());
-
- mToolbar.setPaintInvalidator(invalidator);
- mToolbarManager.setDefaultActionModeCallbackForTextEdit(
- mContextualMenuBar.getCustomSelectionActionModeCallback());
- mToolbar.getLocationBar().initializeControls(
- new WindowDelegate(mActivity.getWindow()),
- mContextualMenuBar.getActionBarDelegate(),
- mActivity.getWindowAndroid());
- mToolbar.getLocationBar().setIgnoreURLBarModification(false);
-
- MenuDelegatePhone menuDelegate = new MenuDelegatePhone() {
- @Override
- public void updateReloadButtonState(boolean isLoading) {
- if (appMenuPropertiesDelegate != null) {
- appMenuPropertiesDelegate.loadingStateChanged(isLoading);
- appMenuHandler.menuItemContentChanged(R.id.icon_row_menu_id);
- }
- }
- };
- mToolbarManager.setMenuDelegatePhone(menuDelegate);
- }
-
- /**
- * Initializes the controls for the current toolbar mode.
- * @param findToolbarManager Manager for find in page.
- * @param overviewModeBehavior Interface to query and listen to the overview state.
- * @param layoutManager A {@link LayoutManager} instance to use to watch for scene changes.
- * @param tabSwitcherClickHandler Click listener for the tab switcher button.
- * @param newTabClickHandler Click listener for the new tab button.
- * @param bookmarkClickHandler Click listener for the bookmark button.
- */
- public void initializeControls(FindToolbarManager findToolbarManager,
- OverviewModeBehavior overviewModeBehavior,
- LayoutManager layoutManager,
- OnClickListener tabSwitcherClickHandler,
- OnClickListener newTabClickHandler,
- OnClickListener bookmarkClickHandler,
- OnClickListener customTabsBackClickHandler) {
-
-
- TabModelSelector selector = mActivity.getTabModelSelector();
- mTabObserver = new TabModelSelectorTabObserver(selector) {
- @Override
- public void onContextualActionBarVisibilityChanged(Tab tab, boolean visible) {
- if (visible) RecordUserAction.record("MobileActionBarShown");
- ActionBar actionBar = mActionBarDelegate.getSupportActionBar();
- if (!visible && actionBar != null) actionBar.hide();
- if (DeviceFormFactor.isTablet(mActivity)) {
- if (visible) {
- mContextualMenuBar.showControls();
- } else {
- mContextualMenuBar.hideControls();
- }
- }
- }
- };
- mToolbarManager.initializeWithNative(
- selector, mActivity.getFullscreenManager(),
- findToolbarManager, overviewModeBehavior, layoutManager);
- mToolbar.getLocationBar().updateVisualsForState();
- mToolbar.getLocationBar().setUrlToPageUrl();
- mToolbar.setOnTabSwitcherClickHandler(tabSwitcherClickHandler);
- mToolbar.setOnNewTabClickHandler(newTabClickHandler);
- mToolbar.setBookmarkClickHandler(bookmarkClickHandler);
- mToolbar.setCustomTabReturnClickHandler(customTabsBackClickHandler);
- mInitialized = true;
- }
-
- /**
- * @return The menu bar for handling contextual text selection.
- */
- public ContextualMenuBar getContextualMenuBar() {
- return mContextualMenuBar;
- }
-
- /**
- * @return Whether the UI has been initialized.
- */
- public boolean isInitialized() {
- return mInitialized;
- }
-
- /**
- * @return The view that the pop up menu should be anchored to on the UI.
- */
- public View getMenuAnchor() {
- return mToolbar.getLocationBar().getMenuAnchor();
- }
-
- /**
- * Should be called when the accessibility state changes.
- * @param enabled Whether or not accessibility and touch exploration are enabled.
- */
- public void onAccessibilityStatusChanged(boolean enabled) {
- mToolbarManager.onAccessibilityStatusChanged(enabled);
- }
-
- /**
- * Update the brand color for the titlebar.
- * @param color The current theme color used.
- */
- public void setThemeColor(int color) {
- mToolbarManager.updatePrimaryColor(color);
- }
-
- /**
- * Adds a custom action button to the {@link Toolbar} if it is supported.
- * @param buttonSource The {@link Bitmap} resource to use as the source for the button.
- * @param listener The {@link OnClickListener} to use for clicks to the button.
- */
- public void addCustomActionButton(Bitmap buttonSource, OnClickListener listener) {
- mToolbar.addCustomActionButton(buttonSource, listener);
- }
-
- /**
- * Call to tear down all of the toolbar dependencies.
- */
- public void destroy() {
- Tab activityTab = mActivity.getActivityTab();
- if (activityTab != null) activityTab.removeObserver(mTabObserver);
- }
-
- /**
- * Called when the orientation of the activity has changed.
- */
- public void onOrientationChange() {
- mContextualMenuBar.showControlsOnOrientationChange();
- }
-
- /**
- * Navigates the current Tab back.
- * @return Whether or not the current Tab did go back.
- */
- public boolean back() {
- return mToolbarManager.back();
- }
-
- /**
- * Focuses or unfocuses the URL bar.
- * @param focused Whether URL bar should be focused.
- */
- public void setUrlBarFocus(boolean focused) {
- if (!isInitialized()) return;
- mToolbar.getLocationBar().setUrlBarFocus(focused);
- }
-
- /**
- * @return Whether {@link Toolbar} has drawn at least once.
- */
- public boolean hasDoneFirstDraw() {
- return mToolbar.getFirstDrawTime() != 0;
- }
-
- /**
- * Handle all necessary tasks that can be delayed until initialization completes.
- */
- public void onDeferredStartup() {
- // Record startup performance statistics
- long elapsedTime = SystemClock.elapsedRealtime() - mActivity.getOnCreateTimestampMs();
- if (elapsedTime < RECORD_UMA_PERFORMANCE_METRICS_DELAY_MS) {
- ThreadUtils.postOnUiThreadDelayed(new Runnable() {
- @Override
- public void run() {
- onDeferredStartup();
- }
- }, RECORD_UMA_PERFORMANCE_METRICS_DELAY_MS - elapsedTime);
- }
-
- long creationTime = mActivity.getOnCreateTimestampMs();
- String className = mActivity.getClass().getSimpleName();
- RecordHistogram.recordTimesHistogram("MobileStartup.ToolbarFirstDrawTime." + className,
- mToolbar.getFirstDrawTime() - creationTime, TimeUnit.MILLISECONDS);
-
- long firstFocusTime = mToolbar.getLocationBar().getFirstUrlBarFocusTime();
- if (firstFocusTime != 0) {
- RecordHistogram.recordCustomTimesHistogram(
- "MobileStartup.ToolbarFirstFocusTime." + className,
- firstFocusTime - creationTime, MIN_FOCUS_TIME_FOR_UMA_HISTOGRAM_MS,
- MAX_FOCUS_TIME_FOR_UMA_HISTOGRAM_MS, TimeUnit.MILLISECONDS, 50);
- }
- }
-
- /**
- * Finish any toolbar animations.
- */
- public void finishAnimations() {
- if (isInitialized()) mToolbar.finishAnimations();
- }
-}

Powered by Google App Engine
This is Rietveld 408576698