OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/profiles/profile.h" | 7 #include "chrome/browser/profiles/profile.h" |
8 #include "chrome/browser/search_engines/template_url.h" | 8 #include "chrome/browser/search_engines/template_url.h" |
9 #include "chrome/browser/search_engines/template_url_fetcher.h" | 9 #include "chrome/browser/search_engines/template_url_fetcher.h" |
10 #include "chrome/browser/search_engines/template_url_service.h" | 10 #include "chrome/browser/search_engines/template_url_service.h" |
11 #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/template_url_fetcher_ui_callbacks.h" | 12 #include "chrome/browser/ui/search_engines/template_url_fetcher_ui_callbacks.h" |
13 #include "chrome/common/render_messages.h" | 13 #include "chrome/common/render_messages.h" |
14 #include "content/public/browser/favicon_status.h" | 14 #include "content/public/browser/favicon_status.h" |
15 #include "content/public/browser/navigation_controller.h" | 15 #include "content/public/browser/navigation_controller.h" |
16 #include "content/public/browser/navigation_entry.h" | 16 #include "content/public/browser/navigation_entry.h" |
17 #include "content/public/browser/web_contents.h" | 17 #include "content/public/browser/web_contents.h" |
18 #include "content/public/common/frame_navigate_params.h" | 18 #include "content/public/common/frame_navigate_params.h" |
19 | 19 |
| 20 using content::NavigationController; |
20 using content::NavigationEntry; | 21 using content::NavigationEntry; |
21 using content::WebContents; | 22 using content::WebContents; |
22 | 23 |
23 namespace { | 24 namespace { |
24 | 25 |
25 // Returns true if the entry's transition type is FORM_SUBMIT. | 26 // Returns true if the entry's transition type is FORM_SUBMIT. |
26 bool IsFormSubmit(const NavigationEntry* entry) { | 27 bool IsFormSubmit(const NavigationEntry* entry) { |
27 return (content::PageTransitionStripQualifier(entry->GetTransitionType()) == | 28 return (content::PageTransitionStripQualifier(entry->GetTransitionType()) == |
28 content::PAGE_TRANSITION_FORM_SUBMIT); | 29 content::PAGE_TRANSITION_FORM_SUBMIT); |
29 } | 30 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 | 86 |
86 case search_provider::EXPLICIT_PROVIDER: | 87 case search_provider::EXPLICIT_PROVIDER: |
87 provider_type = TemplateURLFetcher::EXPLICIT_PROVIDER; | 88 provider_type = TemplateURLFetcher::EXPLICIT_PROVIDER; |
88 break; | 89 break; |
89 | 90 |
90 default: | 91 default: |
91 NOTREACHED(); | 92 NOTREACHED(); |
92 return; | 93 return; |
93 } | 94 } |
94 | 95 |
95 const content::NavigationController& controller = | 96 const NavigationController& controller = web_contents()->GetController(); |
96 web_contents()->GetController(); | |
97 const NavigationEntry* entry = controller.GetLastCommittedEntry(); | 97 const NavigationEntry* entry = controller.GetLastCommittedEntry(); |
98 DCHECK(entry); | 98 DCHECK(entry); |
99 | 99 |
100 const NavigationEntry* base_entry = entry; | 100 const NavigationEntry* base_entry = entry; |
101 if (IsFormSubmit(base_entry)) { | 101 if (IsFormSubmit(base_entry)) { |
102 // If the current page is a form submit, find the last page that was not | 102 // If the current page is a form submit, find the last page that was not |
103 // a form submit and use its url to generate the keyword from. | 103 // a form submit and use its url to generate the keyword from. |
104 int index = controller.GetLastCommittedEntryIndex() - 1; | 104 int index = controller.GetLastCommittedEntryIndex() - 1; |
105 while (index >= 0 && IsFormSubmit(controller.GetEntryAtIndex(index))) | 105 while (index >= 0 && IsFormSubmit(controller.GetEntryAtIndex(index))) |
106 index--; | 106 index--; |
(...skipping 29 matching lines...) Expand all Loading... |
136 void SearchEngineTabHelper::GenerateKeywordIfNecessary( | 136 void SearchEngineTabHelper::GenerateKeywordIfNecessary( |
137 const content::FrameNavigateParams& params) { | 137 const content::FrameNavigateParams& params) { |
138 if (!params.searchable_form_url.is_valid()) | 138 if (!params.searchable_form_url.is_valid()) |
139 return; | 139 return; |
140 | 140 |
141 Profile* profile = | 141 Profile* profile = |
142 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 142 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
143 if (profile->IsOffTheRecord()) | 143 if (profile->IsOffTheRecord()) |
144 return; | 144 return; |
145 | 145 |
146 const content::NavigationController& controller = | 146 const NavigationController& controller = web_contents()->GetController(); |
147 web_contents()->GetController(); | |
148 int last_index = controller.GetLastCommittedEntryIndex(); | 147 int last_index = controller.GetLastCommittedEntryIndex(); |
149 // When there was no previous page, the last index will be 0. This is | 148 // When there was no previous page, the last index will be 0. This is |
150 // normally due to a form submit that opened in a new tab. | 149 // normally due to a form submit that opened in a new tab. |
151 // TODO(brettw) bug 916126: we should support keywords when form submits | 150 // TODO(brettw) bug 916126: we should support keywords when form submits |
152 // happen in new tabs. | 151 // happen in new tabs. |
153 if (last_index <= 0) | 152 if (last_index <= 0) |
154 return; | 153 return; |
155 const NavigationEntry* previous_entry = | 154 const NavigationEntry* previous_entry = |
156 controller.GetEntryAtIndex(last_index - 1); | 155 controller.GetEntryAtIndex(last_index - 1); |
157 if (IsFormSubmit(previous_entry)) { | 156 if (IsFormSubmit(previous_entry)) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 // or the favicon url wasn't obtained before the load started. This assumes | 204 // or the favicon url wasn't obtained before the load started. This assumes |
206 // the later. | 205 // the later. |
207 // TODO(sky): Need a way to set the favicon that doesn't involve generating | 206 // TODO(sky): Need a way to set the favicon that doesn't involve generating |
208 // its url. | 207 // its url. |
209 new_url->SetFaviconURL( | 208 new_url->SetFaviconURL( |
210 TemplateURL::GenerateFaviconURL(params.referrer.url)); | 209 TemplateURL::GenerateFaviconURL(params.referrer.url)); |
211 } | 210 } |
212 new_url->set_safe_for_autoreplace(true); | 211 new_url->set_safe_for_autoreplace(true); |
213 url_service->Add(new_url); | 212 url_service->Add(new_url); |
214 } | 213 } |
OLD | NEW |