OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" | 5 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" |
6 | 6 |
| 7 #include "base/metrics/histogram_macros.h" |
7 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
8 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
9 #include "chrome/browser/search_engines/template_url_fetcher_factory.h" | 10 #include "chrome/browser/search_engines/template_url_fetcher_factory.h" |
10 #include "chrome/browser/search_engines/template_url_service_factory.h" | 11 #include "chrome/browser/search_engines/template_url_service_factory.h" |
| 12 #include "chrome/browser/ui/search_engines/edit_search_engine_controller.h" |
11 #include "chrome/browser/ui/search_engines/search_engine_tab_helper_delegate.h" | 13 #include "chrome/browser/ui/search_engines/search_engine_tab_helper_delegate.h" |
12 #include "chrome/common/pref_names.h" | 14 #include "chrome/common/pref_names.h" |
13 #include "chrome/common/render_messages.h" | 15 #include "chrome/common/render_messages.h" |
14 #include "chrome/common/url_constants.h" | 16 #include "chrome/common/url_constants.h" |
15 #include "components/search_engines/template_url.h" | 17 #include "components/search_engines/template_url.h" |
16 #include "components/search_engines/template_url_fetcher.h" | 18 #include "components/search_engines/template_url_fetcher.h" |
17 #include "components/search_engines/template_url_service.h" | 19 #include "components/search_engines/template_url_service.h" |
18 #include "content/public/browser/favicon_status.h" | 20 #include "content/public/browser/favicon_status.h" |
19 #include "content/public/browser/navigation_controller.h" | 21 #include "content/public/browser/navigation_controller.h" |
20 #include "content/public/browser/navigation_entry.h" | 22 #include "content/public/browser/navigation_entry.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 } | 116 } |
115 | 117 |
116 void SearchEngineTabHelper::OnPageHasOSDD( | 118 void SearchEngineTabHelper::OnPageHasOSDD( |
117 const GURL& page_url, | 119 const GURL& page_url, |
118 const GURL& osdd_url, | 120 const GURL& osdd_url, |
119 const search_provider::OSDDType& msg_provider_type) { | 121 const search_provider::OSDDType& msg_provider_type) { |
120 // Checks to see if we should generate a keyword based on the OSDD, and if | 122 // Checks to see if we should generate a keyword based on the OSDD, and if |
121 // necessary uses TemplateURLFetcher to download the OSDD and create a | 123 // necessary uses TemplateURLFetcher to download the OSDD and create a |
122 // keyword. | 124 // keyword. |
123 | 125 |
| 126 TemplateURLFetcher::ProviderType provider_type = |
| 127 (msg_provider_type == search_provider::AUTODETECTED_PROVIDER) |
| 128 ? TemplateURLFetcher::AUTODETECTED_PROVIDER |
| 129 : TemplateURLFetcher::EXPLICIT_PROVIDER; |
| 130 |
| 131 if (provider_type == TemplateURLFetcher::EXPLICIT_PROVIDER) { |
| 132 UMA_HISTOGRAM_ENUMERATION( |
| 133 "Search.AddSearchProvider", |
| 134 EditSearchEngineController::ADD_SEARCH_PROVIDER_CALLED, |
| 135 EditSearchEngineController::NUM_EDIT_SEARCH_ENGINE_ACTIONS); |
| 136 } |
| 137 |
124 // Make sure that the page is the current page and other basic checks. | 138 // Make sure that the page is the current page and other basic checks. |
125 // When |page_url| has file: scheme, this method doesn't work because of | 139 // When |page_url| has file: scheme, this method doesn't work because of |
126 // http://b/issue?id=863583. For that reason, this doesn't check and allow | 140 // http://b/issue?id=863583. For that reason, this doesn't check and allow |
127 // urls referring to osdd urls with same schemes. | 141 // urls referring to osdd urls with same schemes. |
128 if (!osdd_url.is_valid() || !osdd_url.SchemeIsHTTPOrHTTPS()) | 142 if (!osdd_url.is_valid() || !osdd_url.SchemeIsHTTPOrHTTPS()) |
129 return; | 143 return; |
130 | 144 |
131 Profile* profile = | 145 Profile* profile = |
132 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 146 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
133 if (page_url != web_contents()->GetLastCommittedURL() || | 147 if (page_url != web_contents()->GetLastCommittedURL() || |
134 !TemplateURLFetcherFactory::GetForProfile(profile) || | 148 !TemplateURLFetcherFactory::GetForProfile(profile) || |
135 profile->IsOffTheRecord()) | 149 profile->IsOffTheRecord()) |
136 return; | 150 return; |
137 | 151 |
138 TemplateURLFetcher::ProviderType provider_type = | |
139 (msg_provider_type == search_provider::AUTODETECTED_PROVIDER) ? | |
140 TemplateURLFetcher::AUTODETECTED_PROVIDER : | |
141 TemplateURLFetcher::EXPLICIT_PROVIDER; | |
142 | |
143 // If the current page is a form submit, find the last page that was not a | 152 // If the current page is a form submit, find the last page that was not a |
144 // form submit and use its url to generate the keyword from. | 153 // form submit and use its url to generate the keyword from. |
145 const NavigationController& controller = web_contents()->GetController(); | 154 const NavigationController& controller = web_contents()->GetController(); |
146 const NavigationEntry* entry = controller.GetLastCommittedEntry(); | 155 const NavigationEntry* entry = controller.GetLastCommittedEntry(); |
147 for (int index = controller.GetLastCommittedEntryIndex(); | 156 for (int index = controller.GetLastCommittedEntryIndex(); |
148 (index > 0) && IsFormSubmit(entry); | 157 (index > 0) && IsFormSubmit(entry); |
149 entry = controller.GetEntryAtIndex(index)) | 158 entry = controller.GetEntryAtIndex(index)) |
150 --index; | 159 --index; |
151 if (!entry || IsFormSubmit(entry)) | 160 if (!entry || IsFormSubmit(entry)) |
152 return; | 161 return; |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 // the favicon url wasn't obtained before the load started. This assumes the | 247 // the favicon url wasn't obtained before the load started. This assumes the |
239 // latter. | 248 // latter. |
240 // TODO(sky): Need a way to set the favicon that doesn't involve generating | 249 // TODO(sky): Need a way to set the favicon that doesn't involve generating |
241 // its url. | 250 // its url. |
242 data.favicon_url = current_favicon.is_valid() ? | 251 data.favicon_url = current_favicon.is_valid() ? |
243 current_favicon : TemplateURL::GenerateFaviconURL(params.referrer.url); | 252 current_favicon : TemplateURL::GenerateFaviconURL(params.referrer.url); |
244 data.safe_for_autoreplace = true; | 253 data.safe_for_autoreplace = true; |
245 data.input_encodings.push_back(params.searchable_form_encoding); | 254 data.input_encodings.push_back(params.searchable_form_encoding); |
246 url_service->Add(new TemplateURL(data)); | 255 url_service->Add(new TemplateURL(data)); |
247 } | 256 } |
OLD | NEW |