Commit 6e7d8014 authored by Travis Skare's avatar Travis Skare Committed by Commit Bot

[Omnibox] Documents - check unity opt-in as prereq.

Falls back to sync if unified consent is not given, or hasn't been offered.

Also checks on offering search suggestions, since that seems logical.

Bug: 877850

Cq-Include-Trybots: luci.chromium.try:ios-simulator-cronet;luci.chromium.try:ios-simulator-full-configs
Change-Id: I8daab9213c3a6b71b2bd8a1dd921973b51b7db8e
Reviewed-on: https://chromium-review.googlesource.com/1189702
Commit-Queue: Travis Skare <skare@chromium.org>
Reviewed-by: default avatarJustin Donnelly <jdonnelly@chromium.org>
Reviewed-by: default avatarThomas Tangl <tangltom@chromium.org>
Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#590535}
parent 45885f64
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/unified_consent/unified_consent_service_factory.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h" #include "chrome/common/url_constants.h"
#include "components/browser_sync/profile_sync_service.h" #include "components/browser_sync/profile_sync_service.h"
...@@ -37,6 +38,7 @@ ...@@ -37,6 +38,7 @@
#include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_manager.h"
#include "components/unified_consent/unified_consent_service.h"
#include "components/unified_consent/url_keyed_data_collection_consent_helper.h" #include "components/unified_consent/url_keyed_data_collection_consent_helper.h"
#include "content/public/browser/navigation_entry.h" #include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
...@@ -279,6 +281,19 @@ bool ChromeAutocompleteProviderClient::IsAuthenticated() const { ...@@ -279,6 +281,19 @@ bool ChromeAutocompleteProviderClient::IsAuthenticated() const {
return signin_manager != nullptr && signin_manager->IsAuthenticated(); return signin_manager != nullptr && signin_manager->IsAuthenticated();
} }
bool ChromeAutocompleteProviderClient::IsUnifiedConsentGiven() const {
unified_consent::UnifiedConsentService* consent_service =
UnifiedConsentServiceFactory::GetForProfile(profile_);
return consent_service && consent_service->IsUnifiedConsentGiven();
}
bool ChromeAutocompleteProviderClient::IsSyncActive() const {
syncer::SyncService* sync =
ProfileSyncServiceFactory::GetInstance()->GetSyncServiceForBrowserContext(
profile_);
return sync && sync->IsSyncActive();
}
void ChromeAutocompleteProviderClient::Classify( void ChromeAutocompleteProviderClient::Classify(
const base::string16& text, const base::string16& text,
bool prefer_keyword, bool prefer_keyword,
......
...@@ -55,6 +55,8 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient { ...@@ -55,6 +55,8 @@ class ChromeAutocompleteProviderClient : public AutocompleteProviderClient {
bool SearchSuggestEnabled() const override; bool SearchSuggestEnabled() const override;
bool IsPersonalizedUrlDataCollectionActive() const override; bool IsPersonalizedUrlDataCollectionActive() const override;
bool IsAuthenticated() const override; bool IsAuthenticated() const override;
bool IsUnifiedConsentGiven() const override;
bool IsSyncActive() const override;
void Classify( void Classify(
const base::string16& text, const base::string16& text,
bool prefer_keyword, bool prefer_keyword,
......
...@@ -106,6 +106,15 @@ class AutocompleteProviderClient { ...@@ -106,6 +106,15 @@ class AutocompleteProviderClient {
// This function returns true if the user is signed in. // This function returns true if the user is signed in.
virtual bool IsAuthenticated() const = 0; virtual bool IsAuthenticated() const = 0;
// Determines whether Unified Consent is on as a feature, and the user has
// accepted the bit. Note this is a subset of
// IsPersonalizedUrlDataCollectionActive() in that the user has not
// necessarily consented to share browsing data with Google.
virtual bool IsUnifiedConsentGiven() const = 0;
// Determines whether sync is enabled.
virtual bool IsSyncActive() const = 0;
// Given some string |text| that the user wants to use for navigation, // Given some string |text| that the user wants to use for navigation,
// determines how it should be interpreted. // determines how it should be interpreted.
virtual void Classify( virtual void Classify(
......
...@@ -110,24 +110,30 @@ void DocumentProvider::RegisterProfilePrefs( ...@@ -110,24 +110,30 @@ void DocumentProvider::RegisterProfilePrefs(
} }
bool DocumentProvider::IsDocumentProviderAllowed( bool DocumentProvider::IsDocumentProviderAllowed(
PrefService* prefs, AutocompleteProviderClient* client) {
bool is_incognito,
bool is_authenticated,
const TemplateURLService* template_url_service) {
// Feature must be on. // Feature must be on.
if (!base::FeatureList::IsEnabled(omnibox::kDocumentProvider)) if (!base::FeatureList::IsEnabled(omnibox::kDocumentProvider))
return false; return false;
// These may seem like search suggestions, so gate on that setting too.
if (!client->SearchSuggestEnabled())
return false;
// Client-side toggle must be enabled. // Client-side toggle must be enabled.
if (!prefs->GetBoolean(omnibox::kDocumentSuggestEnabled)) if (!client->GetPrefs()->GetBoolean(omnibox::kDocumentSuggestEnabled))
return false; return false;
// No incognito. // No incognito.
if (is_incognito) if (client->IsOffTheRecord())
return false; return false;
// User must be signed in. // If the user opted into unity, we may proceed.
if (!is_authenticated) // Otherwise (either unity hasn't been offered or the not-yet button was
// clicked), we may check sync's status and proceed if active.
bool authenticated_and_syncing =
client->IsAuthenticated() &&
(client->IsUnifiedConsentGiven() || client->IsSyncActive());
if (!authenticated_and_syncing)
return false; return false;
// We haven't received a server backoff signal. // We haven't received a server backoff signal.
...@@ -137,6 +143,7 @@ bool DocumentProvider::IsDocumentProviderAllowed( ...@@ -137,6 +143,7 @@ bool DocumentProvider::IsDocumentProviderAllowed(
// Google must be set as default search provider; we mix results which may // Google must be set as default search provider; we mix results which may
// change placement. // change placement.
auto* template_url_service = client->GetTemplateURLService();
if (template_url_service == nullptr) if (template_url_service == nullptr)
return false; return false;
const TemplateURL* default_provider = const TemplateURL* default_provider =
...@@ -173,9 +180,9 @@ void DocumentProvider::Start(const AutocompleteInput& input, ...@@ -173,9 +180,9 @@ void DocumentProvider::Start(const AutocompleteInput& input,
TRACE_EVENT0("omnibox", "DocumentProvider::Start"); TRACE_EVENT0("omnibox", "DocumentProvider::Start");
matches_.clear(); matches_.clear();
if (!IsDocumentProviderAllowed(client_->GetPrefs(), client_->IsOffTheRecord(), // Perform various checks - feature is enabled, user is allowed to use the
client_->IsAuthenticated(), // feature, we're not under backoff, etc.
client_->GetTemplateURLService())) { if (!IsDocumentProviderAllowed(client_)) {
return; return;
} }
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
class AutocompleteProviderListener; class AutocompleteProviderListener;
class AutocompleteProviderClient; class AutocompleteProviderClient;
class PrefService;
namespace base { namespace base {
class Value; class Value;
...@@ -58,6 +57,8 @@ class DocumentProvider : public AutocompleteProvider { ...@@ -58,6 +57,8 @@ class DocumentProvider : public AutocompleteProvider {
FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest, CheckFeatureBehindFlag); FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest, CheckFeatureBehindFlag);
FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest, FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest,
CheckFeaturePrerequisiteNoIncognito); CheckFeaturePrerequisiteNoIncognito);
FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest,
CheckFeaturePrerequisiteNoConsentBit);
FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest, FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest,
CheckFeaturePrerequisiteClientSettingOff); CheckFeaturePrerequisiteClientSettingOff);
FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest, FRIEND_TEST_ALL_PREFIXES(DocumentProviderTest,
...@@ -77,13 +78,9 @@ class DocumentProvider : public AutocompleteProvider { ...@@ -77,13 +78,9 @@ class DocumentProvider : public AutocompleteProvider {
~DocumentProvider() override; ~DocumentProvider() override;
// Using this provider requires the user is signed-in and has Google set as // Determines whether the profile/session/window meet the feature
// default search engine. // prerequisites.
bool IsDocumentProviderAllowed( bool IsDocumentProviderAllowed(AutocompleteProviderClient* client);
PrefService* prefs,
bool is_incognito,
bool is_authenticated,
const TemplateURLService* template_url_service);
// Determines if the input is a URL, or is the start of the user entering one. // Determines if the input is a URL, or is the start of the user entering one.
// We avoid queries for these cases for quality and scaling reasons. // We avoid queries for these cases for quality and scaling reasons.
......
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
namespace { namespace {
using testing::Return;
class FakeAutocompleteProviderClient : public MockAutocompleteProviderClient { class FakeAutocompleteProviderClient : public MockAutocompleteProviderClient {
public: public:
FakeAutocompleteProviderClient() FakeAutocompleteProviderClient()
...@@ -93,67 +95,82 @@ void DocumentProviderTest::OnProviderUpdate(bool updated_matches) { ...@@ -93,67 +95,82 @@ void DocumentProviderTest::OnProviderUpdate(bool updated_matches) {
} }
TEST_F(DocumentProviderTest, CheckFeatureBehindFlag) { TEST_F(DocumentProviderTest, CheckFeatureBehindFlag) {
PrefService* fake_prefs = client_->GetPrefs();
TemplateURLService* template_url_service = client_->GetTemplateURLService();
bool is_incognito = false;
bool is_authenticated = true;
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndDisableFeature(omnibox::kDocumentProvider); feature_list.InitAndDisableFeature(omnibox::kDocumentProvider);
EXPECT_FALSE(provider_->IsDocumentProviderAllowed( EXPECT_FALSE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
} }
TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteNoIncognito) { TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteNoIncognito) {
PrefService* fake_prefs = client_->GetPrefs();
TemplateURLService* template_url_service = client_->GetTemplateURLService();
bool is_incognito = false;
bool is_authenticated = true;
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(omnibox::kDocumentProvider); feature_list.InitAndEnableFeature(omnibox::kDocumentProvider);
EXPECT_CALL(*client_.get(), SearchSuggestEnabled())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsAuthenticated()).WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsUnifiedConsentGiven())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsOffTheRecord()).WillRepeatedly(Return(false));
// Feature starts enabled. // Feature starts enabled.
EXPECT_TRUE(provider_->IsDocumentProviderAllowed( EXPECT_TRUE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
// Feature should be disabled in incognito. // Feature should be disabled in incognito.
is_incognito = true; EXPECT_CALL(*client_.get(), IsOffTheRecord()).WillRepeatedly(Return(true));
EXPECT_FALSE(provider_->IsDocumentProviderAllowed( EXPECT_FALSE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service)); }
TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteNoConsentBit) {
base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(omnibox::kDocumentProvider);
EXPECT_CALL(*client_.get(), SearchSuggestEnabled())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsAuthenticated()).WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsUnifiedConsentGiven())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsOffTheRecord()).WillRepeatedly(Return(false));
// Feature starts enabled.
EXPECT_TRUE(provider_->IsDocumentProviderAllowed(client_.get()));
// Feature should be disabled without a consent bit.
EXPECT_CALL(*client_.get(), IsUnifiedConsentGiven()).WillOnce(Return(false));
EXPECT_FALSE(provider_->IsDocumentProviderAllowed(client_.get()));
} }
TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteClientSettingOff) { TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteClientSettingOff) {
PrefService* fake_prefs = client_->GetPrefs();
TemplateURLService* template_url_service = client_->GetTemplateURLService();
bool is_incognito = false;
bool is_authenticated = true;
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(omnibox::kDocumentProvider); feature_list.InitAndEnableFeature(omnibox::kDocumentProvider);
EXPECT_CALL(*client_.get(), SearchSuggestEnabled())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsAuthenticated()).WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsUnifiedConsentGiven())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsOffTheRecord()).WillRepeatedly(Return(false));
// Feature starts enabled. // Feature starts enabled.
EXPECT_TRUE(provider_->IsDocumentProviderAllowed( EXPECT_TRUE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
// Disabling toggle in chrome://settings should be respected. // Disabling toggle in chrome://settings should be respected.
PrefService* fake_prefs = client_->GetPrefs();
fake_prefs->SetBoolean(omnibox::kDocumentSuggestEnabled, false); fake_prefs->SetBoolean(omnibox::kDocumentSuggestEnabled, false);
EXPECT_FALSE(provider_->IsDocumentProviderAllowed( EXPECT_FALSE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
fake_prefs->SetBoolean(omnibox::kDocumentSuggestEnabled, true); fake_prefs->SetBoolean(omnibox::kDocumentSuggestEnabled, true);
} }
TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteDefaultSearch) { TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteDefaultSearch) {
PrefService* fake_prefs = client_->GetPrefs();
TemplateURLService* template_url_service = client_->GetTemplateURLService();
bool is_incognito = false;
bool is_authenticated = true;
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(omnibox::kDocumentProvider); feature_list.InitAndEnableFeature(omnibox::kDocumentProvider);
EXPECT_CALL(*client_.get(), SearchSuggestEnabled())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsAuthenticated()).WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsUnifiedConsentGiven())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsOffTheRecord()).WillRepeatedly(Return(false));
// Feature starts enabled. // Feature starts enabled.
EXPECT_TRUE(provider_->IsDocumentProviderAllowed( EXPECT_TRUE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
// Switching default search disables it. // Switching default search disables it.
TemplateURLService* template_url_service = client_->GetTemplateURLService();
TemplateURLData data; TemplateURLData data;
data.SetShortName(base::ASCIIToUTF16("t")); data.SetShortName(base::ASCIIToUTF16("t"));
data.SetURL("https://www.notgoogle.com/?q={searchTerms}"); data.SetURL("https://www.notgoogle.com/?q={searchTerms}");
...@@ -162,29 +179,28 @@ TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteDefaultSearch) { ...@@ -162,29 +179,28 @@ TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteDefaultSearch) {
template_url_service->Add(std::make_unique<TemplateURL>(data)); template_url_service->Add(std::make_unique<TemplateURL>(data));
template_url_service->SetUserSelectedDefaultSearchProvider( template_url_service->SetUserSelectedDefaultSearchProvider(
new_default_provider); new_default_provider);
EXPECT_FALSE(provider_->IsDocumentProviderAllowed( EXPECT_FALSE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
template_url_service->SetUserSelectedDefaultSearchProvider( template_url_service->SetUserSelectedDefaultSearchProvider(
default_template_url_); default_template_url_);
template_url_service->Remove(new_default_provider); template_url_service->Remove(new_default_provider);
} }
TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteServerBackoff) { TEST_F(DocumentProviderTest, CheckFeaturePrerequisiteServerBackoff) {
PrefService* fake_prefs = client_->GetPrefs();
TemplateURLService* template_url_service = client_->GetTemplateURLService();
bool is_incognito = false;
bool is_authenticated = true;
base::test::ScopedFeatureList feature_list; base::test::ScopedFeatureList feature_list;
feature_list.InitAndEnableFeature(omnibox::kDocumentProvider); feature_list.InitAndEnableFeature(omnibox::kDocumentProvider);
EXPECT_CALL(*client_.get(), SearchSuggestEnabled())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsAuthenticated()).WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsUnifiedConsentGiven())
.WillRepeatedly(Return(true));
EXPECT_CALL(*client_.get(), IsOffTheRecord()).WillRepeatedly(Return(false));
// Feature starts enabled. // Feature starts enabled.
EXPECT_TRUE(provider_->IsDocumentProviderAllowed( EXPECT_TRUE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
// Server setting backoff flag disables it. // Server setting backoff flag disables it.
provider_->backoff_for_session_ = true; provider_->backoff_for_session_ = true;
EXPECT_FALSE(provider_->IsDocumentProviderAllowed( EXPECT_FALSE(provider_->IsDocumentProviderAllowed(client_.get()));
fake_prefs, is_incognito, is_authenticated, template_url_service));
provider_->backoff_for_session_ = false; provider_->backoff_for_session_ = false;
} }
......
...@@ -82,6 +82,9 @@ class MockAutocompleteProviderClient ...@@ -82,6 +82,9 @@ class MockAutocompleteProviderClient
MOCK_CONST_METHOD0(SearchSuggestEnabled, bool()); MOCK_CONST_METHOD0(SearchSuggestEnabled, bool());
MOCK_CONST_METHOD0(IsPersonalizedUrlDataCollectionActive, bool()); MOCK_CONST_METHOD0(IsPersonalizedUrlDataCollectionActive, bool());
MOCK_CONST_METHOD0(IsAuthenticated, bool()); MOCK_CONST_METHOD0(IsAuthenticated, bool());
MOCK_CONST_METHOD0(IsUnifiedConsentGiven, bool());
MOCK_CONST_METHOD0(IsSyncActive, bool());
MOCK_METHOD6( MOCK_METHOD6(
Classify, Classify,
void(const base::string16& text, void(const base::string16& text,
......
...@@ -36,6 +36,7 @@ source_set("autocomplete") { ...@@ -36,6 +36,7 @@ source_set("autocomplete") {
"//ios/chrome/browser/search_engines", "//ios/chrome/browser/search_engines",
"//ios/chrome/browser/signin", "//ios/chrome/browser/signin",
"//ios/chrome/browser/sync", "//ios/chrome/browser/sync",
"//ios/chrome/browser/unified_consent",
"//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser",
"//ios/web", "//ios/web",
"//url", "//url",
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_manager.h"
#include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_service.h"
#include "components/unified_consent/unified_consent_service.h"
#include "components/unified_consent/url_keyed_data_collection_consent_helper.h" #include "components/unified_consent/url_keyed_data_collection_consent_helper.h"
#include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/application_context.h"
#include "ios/chrome/browser/autocomplete/autocomplete_classifier_factory.h" #include "ios/chrome/browser/autocomplete/autocomplete_classifier_factory.h"
...@@ -26,6 +27,7 @@ ...@@ -26,6 +27,7 @@
#include "ios/chrome/browser/search_engines/template_url_service_factory.h" #include "ios/chrome/browser/search_engines/template_url_service_factory.h"
#include "ios/chrome/browser/signin/signin_manager_factory.h" #include "ios/chrome/browser/signin/signin_manager_factory.h"
#include "ios/chrome/browser/sync/profile_sync_service_factory.h" #include "ios/chrome/browser/sync/profile_sync_service_factory.h"
#include "ios/chrome/browser/unified_consent/unified_consent_service_factory.h"
#include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
AutocompleteProviderClientImpl::AutocompleteProviderClientImpl( AutocompleteProviderClientImpl::AutocompleteProviderClientImpl(
...@@ -169,6 +171,18 @@ bool AutocompleteProviderClientImpl::IsAuthenticated() const { ...@@ -169,6 +171,18 @@ bool AutocompleteProviderClientImpl::IsAuthenticated() const {
return signin_manager != nullptr && signin_manager->IsAuthenticated(); return signin_manager != nullptr && signin_manager->IsAuthenticated();
} }
bool AutocompleteProviderClientImpl::IsUnifiedConsentGiven() const {
unified_consent::UnifiedConsentService* consent_service =
UnifiedConsentServiceFactory::GetForBrowserState(browser_state_);
return consent_service && consent_service->IsUnifiedConsentGiven();
}
bool AutocompleteProviderClientImpl::IsSyncActive() const {
syncer::SyncService* sync =
ProfileSyncServiceFactory::GetForBrowserState(browser_state_);
return sync && sync->IsSyncActive();
}
void AutocompleteProviderClientImpl::Classify( void AutocompleteProviderClientImpl::Classify(
const base::string16& text, const base::string16& text,
bool prefer_keyword, bool prefer_keyword,
......
...@@ -56,6 +56,8 @@ class AutocompleteProviderClientImpl : public AutocompleteProviderClient { ...@@ -56,6 +56,8 @@ class AutocompleteProviderClientImpl : public AutocompleteProviderClient {
bool SearchSuggestEnabled() const override; bool SearchSuggestEnabled() const override;
bool IsPersonalizedUrlDataCollectionActive() const override; bool IsPersonalizedUrlDataCollectionActive() const override;
bool IsAuthenticated() const override; bool IsAuthenticated() const override;
bool IsUnifiedConsentGiven() const override;
bool IsSyncActive() const override;
void Classify( void Classify(
const base::string16& text, const base::string16& text,
bool prefer_keyword, bool prefer_keyword,
......
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