Commit 306c4cdc authored by Theresa Wellington's avatar Theresa Wellington Committed by Commit Bot

[Home] Show Google G in cleared URL bar

Show the Google G when the bottom sheet is opened and the url is
cleared. This is hidden behind a flag.

BUG=792244

Change-Id: I2768dc0aefce94890260e061baae6930d413415b
Reviewed-on: https://chromium-review.googlesource.com/811688Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Theresa <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#522447}
parent a96632a7
......@@ -173,6 +173,8 @@ public abstract class ChromeFeatureList {
public static final String CHROME_HOME_PROMO = "ChromeHomePromo";
public static final String CHROME_HOME_PROMO_INFO_ONLY = "ChromeHomePromoInfoOnly";
public static final String CHROME_HOME_PROMO_ON_STARTUP = "ChromeHomePromoOnStartup";
public static final String CHROME_HOME_SHOW_GOOGLE_G_WHEN_URL_CLEARED =
"ChromeHomeShowGoogleGWhenUrlCleared";
public static final String CHROME_HOME_SWIPE_VELOCITY_FEATURE = "ChromeHomeSwipeLogicVelocity";
public static final String CHROME_MEMEX = "ChromeMemex";
public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection";
......
......@@ -19,11 +19,8 @@ import android.widget.FrameLayout;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.WindowDelegate;
import org.chromium.chrome.browser.locale.LocaleManager;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
......@@ -209,29 +206,12 @@ public class LocationBarPhone extends LocationBarLayout {
}
private void updateGoogleG() {
// The Google 'G' is not shown in Chrome Home.
if (mBottomSheet != null) return;
// The toolbar data provider can be null during startup, before the ToolbarManager has been
// initialized.
ToolbarDataProvider toolbarDataProvider = getToolbarDataProvider();
if (toolbarDataProvider == null) return;
LocaleManager localeManager = LocaleManager.getInstance();
if (localeManager.hasCompletedSearchEnginePromo()
|| localeManager.hasShownSearchEnginePromoThisSession()) {
mGoogleGContainer.setVisibility(View.GONE);
return;
}
// Only access ChromeFeatureList and TemplateUrlService after the NTP check,
// to prevent native method calls before the native side has been initialized.
NewTabPage ntp = toolbarDataProvider.getNewTabPageForCurrentTab();
boolean isShownInRegularNtp = ntp != null && ntp.isLocationBarShownInNTP()
&& ChromeFeatureList.isEnabled(ChromeFeatureList.NTP_SHOW_GOOGLE_G_IN_OMNIBOX)
&& TemplateUrlService.getInstance().isDefaultSearchEngineGoogle();
if (!isShownInRegularNtp) {
if (!getToolbarDataProvider().shouldShowGoogleG(mUrlBar.getEditableText().toString())) {
mGoogleGContainer.setVisibility(View.GONE);
return;
}
......@@ -364,6 +344,13 @@ public class LocationBarPhone extends LocationBarLayout {
@Override
public void onSheetOpened(@StateChangeReason int reason) {
if (reason == StateChangeReason.OMNIBOX_FOCUS) mCloseSheetOnBackButton = true;
updateGoogleG();
}
@Override
public void onSheetClosed(@StateChangeReason int reason) {
updateGoogleG();
}
@Override
......@@ -378,14 +365,12 @@ public class LocationBarPhone extends LocationBarLayout {
}
});
// The Google 'G' is not shown in Chrome Home.
removeView(mGoogleGContainer);
mGoogleGContainer = null;
mGoogleG = null;
// Chrome Home does not use the incognito badge. Remove the View to save memory.
removeView(mIncognitoBadge);
mIncognitoBadge = null;
// TODO(twellington): remove and null out mGoogleG and mGoogleGContainer if we remove
// support for the Google 'G' to save memory.
}
@Override
......
......@@ -70,6 +70,11 @@ class SearchBoxDataProvider implements ToolbarDataProvider {
return SearchWidgetProvider.getDefaultSearchEngineUrl();
}
@Override
public boolean shouldShowGoogleG(String urlBarText) {
return false;
}
@Override
public boolean isOfflinePage() {
return false;
......
......@@ -69,6 +69,12 @@ public interface ToolbarDataProvider {
*/
boolean isOfflinePage();
/**
* @param urlBarText The text currently displayed in the url bar.
* @return Whether the Google 'G' should be shown in the location bar.
*/
boolean shouldShowGoogleG(String urlBarText);
/**
* @return Whether the security icon should be displayed.
*/
......
......@@ -199,6 +199,11 @@ public abstract class ToolbarLayout extends FrameLayout implements Toolbar {
return false;
}
@Override
public boolean shouldShowGoogleG(String urlBarText) {
return false;
}
@Override
public boolean shouldShowSecurityIcon() {
return false;
......
......@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.toolbar;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable;
import android.text.TextUtils;
......@@ -17,9 +18,11 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.dom_distiller.DomDistillerServiceFactory;
import org.chromium.chrome.browser.dom_distiller.DomDistillerTabUtils;
import org.chromium.chrome.browser.locale.LocaleManager;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.toolbar.ToolbarModel.ToolbarModelDelegate;
import org.chromium.chrome.browser.util.ColorUtils;
......@@ -197,6 +200,31 @@ class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, Tool
return hasTab() && OfflinePageUtils.isOfflinePage(mTab);
}
@Override
public boolean shouldShowGoogleG(String urlBarText) {
LocaleManager localeManager = LocaleManager.getInstance();
if (localeManager.hasCompletedSearchEnginePromo()
|| localeManager.hasShownSearchEnginePromoThisSession()) {
return false;
}
// Only access ChromeFeatureList and TemplateUrlService after the NTP check,
// to prevent native method calls before the native side has been initialized.
NewTabPage ntp = getNewTabPageForCurrentTab();
boolean isShownInRegularNtp = ntp != null && ntp.isLocationBarShownInNTP()
&& ChromeFeatureList.isEnabled(ChromeFeatureList.NTP_SHOW_GOOGLE_G_IN_OMNIBOX);
boolean isShownInBottomSheet = mBottomSheet != null && !mBottomSheet.isShowingNewTab()
&& mBottomSheet.isSheetOpen() && TextUtils.isEmpty(urlBarText)
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_CLEAR_URL_ON_OPEN)
&& ChromeFeatureList.isEnabled(
ChromeFeatureList.CHROME_HOME_SHOW_GOOGLE_G_WHEN_URL_CLEARED);
return (isShownInRegularNtp || isShownInBottomSheet)
&& TemplateUrlService.getInstance().isDefaultSearchEngineGoogle();
}
@Override
public boolean shouldShowSecurityIcon() {
return !clearUrlForBottomSheetOpen() && getSecurityIconResource() != 0;
......@@ -260,6 +288,7 @@ class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, Tool
private boolean clearUrlForBottomSheetOpen() {
return mBottomSheet != null && mBottomSheet.isSheetOpen()
&& mBottomSheet.getTargetSheetState() != BottomSheet.SHEET_STATE_PEEK
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_CLEAR_URL_ON_OPEN);
}
}
......@@ -1406,7 +1406,7 @@ public class BottomSheet
* @param animate If true, the sheet will animate to the provided state, otherwise it will
* move there instantly.
* @param reason The reason the sheet state is changing. This can be specified to indicate to
* observers that a more specific event has occured, otherwise
* observers that a more specific event has occurred, otherwise
* STATE_CHANGE_REASON_NONE can be used.
*/
public void setSheetState(
......
......@@ -1877,6 +1877,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kChromeHomeClearUrlOnOpenName,
flag_descriptions::kChromeHomeClearUrlOnOpenDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kChromeHomeClearUrlOnOpen)},
{"enable-chrome-home-show-google-g",
flag_descriptions::kChromeHomeShowGoogleGName,
flag_descriptions::kChromeHomeShowGoogleGDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kChromeHomeShowGoogleGWhenUrlCleared)},
{"enable-chrome-home-bottom-sheet-inactivity-expansion",
flag_descriptions::kChromeHomeInactivitySheetExpansionName,
flag_descriptions::kChromeHomeInactivitySheetExpansionDescription,
......
......@@ -73,6 +73,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
&kChromeHomePromoInfoOnly,
&kChromeHomePromoOnStartup,
&kChromeHomeOptOutSnackbar,
&kChromeHomeShowGoogleGWhenUrlCleared,
&kChromeHomeSwipeLogic,
&kChromeHomeSwipeLogicVelocity,
&kChromeSmartSelection,
......@@ -214,6 +215,9 @@ const base::Feature kChromeHomePromoOnStartup{"ChromeHomePromoOnStartup",
const base::Feature kChromeHomeOptOutSnackbar{
"ChromeHomeOptOutSnackbar", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kChromeHomeShowGoogleGWhenUrlCleared{
"ChromeHomeShowGoogleGWhenUrlCleared", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kChromeHomeSwipeLogic{"ChromeHomeSwipeLogic",
base::FEATURE_DISABLED_BY_DEFAULT};
......
......@@ -33,6 +33,7 @@ extern const base::Feature kChromeHomePromo;
extern const base::Feature kChromeHomePromoInfoOnly;
extern const base::Feature kChromeHomePromoOnStartup;
extern const base::Feature kChromeHomeOptOutSnackbar;
extern const base::Feature kChromeHomeShowGoogleGWhenUrlCleared;
extern const base::Feature kChromeHomeSwipeLogic;
extern const base::Feature kChromeHomeSwipeLogicVelocity;
extern const base::Feature kChromeMemexFeature;
......
......@@ -1707,6 +1707,11 @@ const char kChromeHomePromoName[] = "Chrome Home Promo";
const char kChromeHomePromoDescription[] =
"Enable showing the opt-in/out Chrome Home promo.";
const char kChromeHomeShowGoogleGName[] = "Chrome Home Show Google G";
const char kChromeHomeShowGoogleGDescription[] =
"Show the Google G when the url is cleared. The flag to clear the url "
"when the sheet is opened must also be set.";
const char kChromeHomeSwipeLogicName[] = "Chrome Home Swipe Logic";
const char kChromeHomeSwipeLogicDescription[] =
"Various swipe logic options for Chrome Home for sheet expansion.";
......
......@@ -1050,6 +1050,9 @@ extern const char kChromeHomePersonalizedOmniboxSuggestionsDescription[];
extern const char kChromeHomePromoName[];
extern const char kChromeHomePromoDescription[];
extern const char kChromeHomeShowGoogleGName[];
extern const char kChromeHomeShowGoogleGDescription[];
extern const char kChromeHomeSwipeLogicName[];
extern const char kChromeHomeSwipeLogicDescription[];
extern const char kChromeHomeSwipeLogicRestrictArea[];
......
......@@ -25848,6 +25848,7 @@ from previous Chrome versions.
<int value="1665349789" label="spurious-power-button-window"/>
<int value="1668611601" label="enable-encrypted-media"/>
<int value="1670161209" label="ClickToOpenPDFPlaceholder:enabled"/>
<int value="1670799163" label="ChromeHomeShowGoogleGWhenUrlCleared:enabled"/>
<int value="1672878289" label="PwaMinimalUi:disabled"/>
<int value="1673427566" label="ChromeHomeExpandButton:disabled"/>
<int value="1689123607" label="enable-app-link"/>
......@@ -26007,6 +26008,7 @@ from previous Chrome versions.
<int value="2085186092" label="BulkPrinters:disabled"/>
<int value="2085438501" label="ChromeHome:enabled"/>
<int value="2089897928" label="enable-audio-focus"/>
<int value="2092605092" label="ChromeHomeShowGoogleGWhenUrlCleared:disabled"/>
<int value="2093235103" label="default-tile-width"/>
<int value="2097048479" label="disable-auto-hiding-toolbar-threshold"/>
<int value="2098714203" label="enable-generic-sensors"/>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment