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

Side by Side Diff: ios/chrome/browser/rlz/rlz_tracker_delegate_impl.cc

Issue 1242373002: Implements RLZTrackerDelegate on iOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@omnibox-events-relay
Patch Set: Rebase Created 5 years, 5 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 unified diff | Download patch
« no previous file with comments | « ios/chrome/browser/rlz/rlz_tracker_delegate_impl.h ('k') | ios/chrome/ios_chrome.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ios/chrome/browser/rlz/rlz_tracker_delegate_impl.h"
6
7 #include "base/command_line.h"
8 #include "base/logging.h"
9 #include "base/prefs/pref_service.h"
10 #include "components/google/core/browser/google_util.h"
11 #include "components/omnibox/browser/omnibox_log.h"
12 #include "components/search_engines/template_url.h"
13 #include "components/search_engines/template_url_service.h"
14 #include "ios/chrome/browser/application_context.h"
15 #include "ios/chrome/browser/google/google_brand.h"
16 #include "ios/chrome/browser/omnibox/omnibox_edit_model_observer_relay.h"
17 #include "ios/chrome/browser/pref_names.h"
18 #include "ios/chrome/browser/search_engines/template_url_service_factory.h"
19 #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state. h"
20 #include "ios/web/public/web_thread.h"
21
22 RLZTrackerDelegateImpl::RLZTrackerDelegateImpl() {}
23
24 RLZTrackerDelegateImpl::~RLZTrackerDelegateImpl() {}
25
26 // static
27 bool RLZTrackerDelegateImpl::IsGoogleDefaultSearch(
28 ios::ChromeBrowserState* browser_state) {
29 bool is_google_default_search = false;
30 TemplateURLService* template_url_service =
31 ios::TemplateURLServiceFactory::GetForBrowserState(browser_state);
32 if (template_url_service) {
33 const TemplateURL* url_template =
34 template_url_service->GetDefaultSearchProvider();
35 is_google_default_search = url_template &&
36 url_template->url_ref().HasGoogleBaseURLs(
37 template_url_service->search_terms_data());
38 }
39 return is_google_default_search;
40 }
41
42 // static
43 bool RLZTrackerDelegateImpl::IsGoogleHomepage(
44 ios::ChromeBrowserState* browser_state) {
45 return google_util::IsGoogleHomePageUrl(
46 GURL(browser_state->GetPrefs()->GetString(ios::prefs::kHomePage)));
47 }
48
49 // static
50 bool RLZTrackerDelegateImpl::IsGoogleInStartpages(
51 ios::ChromeBrowserState* browser_state) {
52 // iOS does not have a notion of startpages.
53 return false;
54 }
55
56 void RLZTrackerDelegateImpl::Cleanup() {
57 on_omnibox_search_callback_.Reset();
58 }
59
60 bool RLZTrackerDelegateImpl::IsOnUIThread() {
61 return web::WebThread::CurrentlyOn(web::WebThread::UI);
62 }
63
64 base::SequencedWorkerPool* RLZTrackerDelegateImpl::GetBlockingPool() {
65 return web::WebThread::GetBlockingPool();
66 }
67
68 net::URLRequestContextGetter* RLZTrackerDelegateImpl::GetRequestContext() {
69 return GetApplicationContext()->GetSystemURLRequestContext();
70 }
71
72 bool RLZTrackerDelegateImpl::GetBrand(std::string* brand) {
73 return ios::google_brand::GetBrand(brand);
74 }
75
76 bool RLZTrackerDelegateImpl::IsBrandOrganic(const std::string& brand) {
77 return brand.empty() || ios::google_brand::IsOrganic(brand);
78 }
79
80 bool RLZTrackerDelegateImpl::GetReactivationBrand(std::string* brand) {
81 // iOS does not have reactivation brand.
82 return false;
83 }
84
85 bool RLZTrackerDelegateImpl::ShouldEnableZeroDelayForTesting() {
86 return false;
87 }
88
89 bool RLZTrackerDelegateImpl::GetLanguage(base::string16* language) {
90 // TODO(thakis): Implement.
91 NOTIMPLEMENTED();
92 return false;
93 }
94
95 bool RLZTrackerDelegateImpl::GetReferral(base::string16* referral) {
96 // The referral program is defunct and not used. No need to implement this
97 // function on non-Win platforms.
98 return true;
99 }
100
101 bool RLZTrackerDelegateImpl::ClearReferral() {
102 // The referral program is defunct and not used. No need to implement this
103 // function on non-Win platforms.
104 return true;
105 }
106
107 void RLZTrackerDelegateImpl::SetOmniboxSearchCallback(
108 const base::Closure& callback) {
109 DCHECK(!callback.is_null());
110 on_omnibox_search_callback_ = callback;
111 on_omnibox_url_opened_subscription_ =
112 OmniboxEditModelObserverRelay::GetInstance()->RegisterCallback(
113 base::Bind(&RLZTrackerDelegateImpl::OnURLOpenedFromOmnibox,
114 base::Unretained(this)));
115 }
116
117 void RLZTrackerDelegateImpl::SetHomepageSearchCallback(
118 const base::Closure& callback) {
119 NOTREACHED();
120 }
121
122 void RLZTrackerDelegateImpl::OnURLOpenedFromOmnibox(OmniboxLog* log) {
123 // In M-36, we made NOTIFICATION_OMNIBOX_OPENED_URL fire more often than
124 // it did previously. The RLZ folks want RLZ's "first search" detection
125 // to remain as unaffected as possible by this change. This test is
126 // there to keep the old behavior.
127 if (!log->is_popup_open)
128 return;
129
130 on_omnibox_url_opened_subscription_.reset();
131
132 using std::swap;
133 base::Closure callback_to_run;
134 swap(callback_to_run, on_omnibox_search_callback_);
135 if (!callback_to_run.is_null())
136 callback_to_run.Run();
137 }
OLDNEW
« no previous file with comments | « ios/chrome/browser/rlz/rlz_tracker_delegate_impl.h ('k') | ios/chrome/ios_chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698