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 { ...@@ -173,6 +173,8 @@ public abstract class ChromeFeatureList {
public static final String CHROME_HOME_PROMO = "ChromeHomePromo"; 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_INFO_ONLY = "ChromeHomePromoInfoOnly";
public static final String CHROME_HOME_PROMO_ON_STARTUP = "ChromeHomePromoOnStartup"; 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_HOME_SWIPE_VELOCITY_FEATURE = "ChromeHomeSwipeLogicVelocity";
public static final String CHROME_MEMEX = "ChromeMemex"; public static final String CHROME_MEMEX = "ChromeMemex";
public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection"; public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection";
......
...@@ -19,11 +19,8 @@ import android.widget.FrameLayout; ...@@ -19,11 +19,8 @@ import android.widget.FrameLayout;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.WindowDelegate; 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.ntp.NewTabPage;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider; import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.util.MathUtils; import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet; import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
...@@ -209,29 +206,12 @@ public class LocationBarPhone extends LocationBarLayout { ...@@ -209,29 +206,12 @@ public class LocationBarPhone extends LocationBarLayout {
} }
private void updateGoogleG() { 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 // The toolbar data provider can be null during startup, before the ToolbarManager has been
// initialized. // initialized.
ToolbarDataProvider toolbarDataProvider = getToolbarDataProvider(); ToolbarDataProvider toolbarDataProvider = getToolbarDataProvider();
if (toolbarDataProvider == null) return; if (toolbarDataProvider == null) return;
LocaleManager localeManager = LocaleManager.getInstance(); if (!getToolbarDataProvider().shouldShowGoogleG(mUrlBar.getEditableText().toString())) {
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) {
mGoogleGContainer.setVisibility(View.GONE); mGoogleGContainer.setVisibility(View.GONE);
return; return;
} }
...@@ -364,6 +344,13 @@ public class LocationBarPhone extends LocationBarLayout { ...@@ -364,6 +344,13 @@ public class LocationBarPhone extends LocationBarLayout {
@Override @Override
public void onSheetOpened(@StateChangeReason int reason) { public void onSheetOpened(@StateChangeReason int reason) {
if (reason == StateChangeReason.OMNIBOX_FOCUS) mCloseSheetOnBackButton = true; if (reason == StateChangeReason.OMNIBOX_FOCUS) mCloseSheetOnBackButton = true;
updateGoogleG();
}
@Override
public void onSheetClosed(@StateChangeReason int reason) {
updateGoogleG();
} }
@Override @Override
...@@ -378,14 +365,12 @@ public class LocationBarPhone extends LocationBarLayout { ...@@ -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. // Chrome Home does not use the incognito badge. Remove the View to save memory.
removeView(mIncognitoBadge); removeView(mIncognitoBadge);
mIncognitoBadge = null; mIncognitoBadge = null;
// TODO(twellington): remove and null out mGoogleG and mGoogleGContainer if we remove
// support for the Google 'G' to save memory.
} }
@Override @Override
......
...@@ -70,6 +70,11 @@ class SearchBoxDataProvider implements ToolbarDataProvider { ...@@ -70,6 +70,11 @@ class SearchBoxDataProvider implements ToolbarDataProvider {
return SearchWidgetProvider.getDefaultSearchEngineUrl(); return SearchWidgetProvider.getDefaultSearchEngineUrl();
} }
@Override
public boolean shouldShowGoogleG(String urlBarText) {
return false;
}
@Override @Override
public boolean isOfflinePage() { public boolean isOfflinePage() {
return false; return false;
......
...@@ -69,6 +69,12 @@ public interface ToolbarDataProvider { ...@@ -69,6 +69,12 @@ public interface ToolbarDataProvider {
*/ */
boolean isOfflinePage(); 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. * @return Whether the security icon should be displayed.
*/ */
......
...@@ -199,6 +199,11 @@ public abstract class ToolbarLayout extends FrameLayout implements Toolbar { ...@@ -199,6 +199,11 @@ public abstract class ToolbarLayout extends FrameLayout implements Toolbar {
return false; return false;
} }
@Override
public boolean shouldShowGoogleG(String urlBarText) {
return false;
}
@Override @Override
public boolean shouldShowSecurityIcon() { public boolean shouldShowSecurityIcon() {
return false; return false;
......
...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.toolbar; ...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.toolbar;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Build;
import android.support.annotation.DrawableRes; import android.support.annotation.DrawableRes;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -17,9 +18,11 @@ import org.chromium.chrome.R; ...@@ -17,9 +18,11 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.dom_distiller.DomDistillerServiceFactory; import org.chromium.chrome.browser.dom_distiller.DomDistillerServiceFactory;
import org.chromium.chrome.browser.dom_distiller.DomDistillerTabUtils; 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.ntp.NewTabPage;
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.offlinepages.OfflinePageUtils;
import org.chromium.chrome.browser.profiles.Profile; 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.tab.Tab;
import org.chromium.chrome.browser.toolbar.ToolbarModel.ToolbarModelDelegate; import org.chromium.chrome.browser.toolbar.ToolbarModel.ToolbarModelDelegate;
import org.chromium.chrome.browser.util.ColorUtils; import org.chromium.chrome.browser.util.ColorUtils;
...@@ -197,6 +200,31 @@ class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, Tool ...@@ -197,6 +200,31 @@ class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, Tool
return hasTab() && OfflinePageUtils.isOfflinePage(mTab); 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 @Override
public boolean shouldShowSecurityIcon() { public boolean shouldShowSecurityIcon() {
return !clearUrlForBottomSheetOpen() && getSecurityIconResource() != 0; return !clearUrlForBottomSheetOpen() && getSecurityIconResource() != 0;
...@@ -260,6 +288,7 @@ class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, Tool ...@@ -260,6 +288,7 @@ class ToolbarModelImpl extends ToolbarModel implements ToolbarDataProvider, Tool
private boolean clearUrlForBottomSheetOpen() { private boolean clearUrlForBottomSheetOpen() {
return mBottomSheet != null && mBottomSheet.isSheetOpen() return mBottomSheet != null && mBottomSheet.isSheetOpen()
&& mBottomSheet.getTargetSheetState() != BottomSheet.SHEET_STATE_PEEK && mBottomSheet.getTargetSheetState() != BottomSheet.SHEET_STATE_PEEK
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
&& ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_CLEAR_URL_ON_OPEN); && ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_HOME_CLEAR_URL_ON_OPEN);
} }
} }
...@@ -1406,7 +1406,7 @@ public class BottomSheet ...@@ -1406,7 +1406,7 @@ public class BottomSheet
* @param animate If true, the sheet will animate to the provided state, otherwise it will * @param animate If true, the sheet will animate to the provided state, otherwise it will
* move there instantly. * move there instantly.
* @param reason The reason the sheet state is changing. This can be specified to indicate to * @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. * STATE_CHANGE_REASON_NONE can be used.
*/ */
public void setSheetState( public void setSheetState(
......
...@@ -1877,6 +1877,10 @@ const FeatureEntry kFeatureEntries[] = { ...@@ -1877,6 +1877,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kChromeHomeClearUrlOnOpenName, flag_descriptions::kChromeHomeClearUrlOnOpenName,
flag_descriptions::kChromeHomeClearUrlOnOpenDescription, kOsAndroid, flag_descriptions::kChromeHomeClearUrlOnOpenDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kChromeHomeClearUrlOnOpen)}, 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", {"enable-chrome-home-bottom-sheet-inactivity-expansion",
flag_descriptions::kChromeHomeInactivitySheetExpansionName, flag_descriptions::kChromeHomeInactivitySheetExpansionName,
flag_descriptions::kChromeHomeInactivitySheetExpansionDescription, flag_descriptions::kChromeHomeInactivitySheetExpansionDescription,
......
...@@ -73,6 +73,7 @@ const base::Feature* kFeaturesExposedToJava[] = { ...@@ -73,6 +73,7 @@ const base::Feature* kFeaturesExposedToJava[] = {
&kChromeHomePromoInfoOnly, &kChromeHomePromoInfoOnly,
&kChromeHomePromoOnStartup, &kChromeHomePromoOnStartup,
&kChromeHomeOptOutSnackbar, &kChromeHomeOptOutSnackbar,
&kChromeHomeShowGoogleGWhenUrlCleared,
&kChromeHomeSwipeLogic, &kChromeHomeSwipeLogic,
&kChromeHomeSwipeLogicVelocity, &kChromeHomeSwipeLogicVelocity,
&kChromeSmartSelection, &kChromeSmartSelection,
...@@ -214,6 +215,9 @@ const base::Feature kChromeHomePromoOnStartup{"ChromeHomePromoOnStartup", ...@@ -214,6 +215,9 @@ const base::Feature kChromeHomePromoOnStartup{"ChromeHomePromoOnStartup",
const base::Feature kChromeHomeOptOutSnackbar{ const base::Feature kChromeHomeOptOutSnackbar{
"ChromeHomeOptOutSnackbar", base::FEATURE_DISABLED_BY_DEFAULT}; "ChromeHomeOptOutSnackbar", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kChromeHomeShowGoogleGWhenUrlCleared{
"ChromeHomeShowGoogleGWhenUrlCleared", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kChromeHomeSwipeLogic{"ChromeHomeSwipeLogic", const base::Feature kChromeHomeSwipeLogic{"ChromeHomeSwipeLogic",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
......
...@@ -33,6 +33,7 @@ extern const base::Feature kChromeHomePromo; ...@@ -33,6 +33,7 @@ extern const base::Feature kChromeHomePromo;
extern const base::Feature kChromeHomePromoInfoOnly; extern const base::Feature kChromeHomePromoInfoOnly;
extern const base::Feature kChromeHomePromoOnStartup; extern const base::Feature kChromeHomePromoOnStartup;
extern const base::Feature kChromeHomeOptOutSnackbar; extern const base::Feature kChromeHomeOptOutSnackbar;
extern const base::Feature kChromeHomeShowGoogleGWhenUrlCleared;
extern const base::Feature kChromeHomeSwipeLogic; extern const base::Feature kChromeHomeSwipeLogic;
extern const base::Feature kChromeHomeSwipeLogicVelocity; extern const base::Feature kChromeHomeSwipeLogicVelocity;
extern const base::Feature kChromeMemexFeature; extern const base::Feature kChromeMemexFeature;
......
...@@ -1707,6 +1707,11 @@ const char kChromeHomePromoName[] = "Chrome Home Promo"; ...@@ -1707,6 +1707,11 @@ const char kChromeHomePromoName[] = "Chrome Home Promo";
const char kChromeHomePromoDescription[] = const char kChromeHomePromoDescription[] =
"Enable showing the opt-in/out Chrome Home promo."; "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 kChromeHomeSwipeLogicName[] = "Chrome Home Swipe Logic";
const char kChromeHomeSwipeLogicDescription[] = const char kChromeHomeSwipeLogicDescription[] =
"Various swipe logic options for Chrome Home for sheet expansion."; "Various swipe logic options for Chrome Home for sheet expansion.";
......
...@@ -1050,6 +1050,9 @@ extern const char kChromeHomePersonalizedOmniboxSuggestionsDescription[]; ...@@ -1050,6 +1050,9 @@ extern const char kChromeHomePersonalizedOmniboxSuggestionsDescription[];
extern const char kChromeHomePromoName[]; extern const char kChromeHomePromoName[];
extern const char kChromeHomePromoDescription[]; extern const char kChromeHomePromoDescription[];
extern const char kChromeHomeShowGoogleGName[];
extern const char kChromeHomeShowGoogleGDescription[];
extern const char kChromeHomeSwipeLogicName[]; extern const char kChromeHomeSwipeLogicName[];
extern const char kChromeHomeSwipeLogicDescription[]; extern const char kChromeHomeSwipeLogicDescription[];
extern const char kChromeHomeSwipeLogicRestrictArea[]; extern const char kChromeHomeSwipeLogicRestrictArea[];
......
...@@ -25848,6 +25848,7 @@ from previous Chrome versions. ...@@ -25848,6 +25848,7 @@ from previous Chrome versions.
<int value="1665349789" label="spurious-power-button-window"/> <int value="1665349789" label="spurious-power-button-window"/>
<int value="1668611601" label="enable-encrypted-media"/> <int value="1668611601" label="enable-encrypted-media"/>
<int value="1670161209" label="ClickToOpenPDFPlaceholder:enabled"/> <int value="1670161209" label="ClickToOpenPDFPlaceholder:enabled"/>
<int value="1670799163" label="ChromeHomeShowGoogleGWhenUrlCleared:enabled"/>
<int value="1672878289" label="PwaMinimalUi:disabled"/> <int value="1672878289" label="PwaMinimalUi:disabled"/>
<int value="1673427566" label="ChromeHomeExpandButton:disabled"/> <int value="1673427566" label="ChromeHomeExpandButton:disabled"/>
<int value="1689123607" label="enable-app-link"/> <int value="1689123607" label="enable-app-link"/>
...@@ -26007,6 +26008,7 @@ from previous Chrome versions. ...@@ -26007,6 +26008,7 @@ from previous Chrome versions.
<int value="2085186092" label="BulkPrinters:disabled"/> <int value="2085186092" label="BulkPrinters:disabled"/>
<int value="2085438501" label="ChromeHome:enabled"/> <int value="2085438501" label="ChromeHome:enabled"/>
<int value="2089897928" label="enable-audio-focus"/> <int value="2089897928" label="enable-audio-focus"/>
<int value="2092605092" label="ChromeHomeShowGoogleGWhenUrlCleared:disabled"/>
<int value="2093235103" label="default-tile-width"/> <int value="2093235103" label="default-tile-width"/>
<int value="2097048479" label="disable-auto-hiding-toolbar-threshold"/> <int value="2097048479" label="disable-auto-hiding-toolbar-threshold"/>
<int value="2098714203" label="enable-generic-sensors"/> <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