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

Side by Side Diff: chrome/renderer/searchbox/searchbox.cc

Issue 1017853002: [Icons NTP] Allow chrome-search:// large-icon and fallback-icon hosts to use <view_id>/<restricted_… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: LargeIconUrlParser not in chrome namespace; add tests. Created 5 years, 9 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 | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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/renderer/searchbox/searchbox.h" 5 #include "chrome/renderer/searchbox/searchbox.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/common/chrome_switches.h" 12 #include "chrome/common/chrome_switches.h"
13 #include "chrome/common/favicon/fallback_icon_url_parser.h"
13 #include "chrome/common/favicon/favicon_url_parser.h" 14 #include "chrome/common/favicon/favicon_url_parser.h"
15 #include "chrome/common/favicon/large_icon_url_parser.h"
14 #include "chrome/common/omnibox_focus_state.h" 16 #include "chrome/common/omnibox_focus_state.h"
15 #include "chrome/common/render_messages.h" 17 #include "chrome/common/render_messages.h"
16 #include "chrome/common/url_constants.h" 18 #include "chrome/common/url_constants.h"
17 #include "chrome/renderer/searchbox/searchbox_extension.h" 19 #include "chrome/renderer/searchbox/searchbox_extension.h"
18 #include "components/favicon_base/favicon_types.h" 20 #include "components/favicon_base/favicon_types.h"
19 #include "content/public/renderer/render_view.h" 21 #include "content/public/renderer/render_view.h"
20 #include "net/base/escape.h" 22 #include "net/base/escape.h"
21 #include "third_party/WebKit/public/web/WebDocument.h" 23 #include "third_party/WebKit/public/web/WebDocument.h"
22 #include "third_party/WebKit/public/web/WebFrame.h" 24 #include "third_party/WebKit/public/web/WebFrame.h"
23 #include "third_party/WebKit/public/web/WebView.h" 25 #include "third_party/WebKit/public/web/WebView.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 // default favicon. 110 // default favicon.
109 std::string id_part = raw_path.substr(parsed.path_index); 111 std::string id_part = raw_path.substr(parsed.path_index);
110 InstantRestrictedID id; 112 InstantRestrictedID id;
111 if (!GetInstantRestrictedIDFromPath(render_view_id, id_part, &id)) 113 if (!GetInstantRestrictedIDFromPath(render_view_id, id_part, &id))
112 return true; 114 return true;
113 115
114 *rid = id; 116 *rid = id;
115 return true; 117 return true;
116 } 118 }
117 119
120 // Similar to GetRestrictedIDFromFaviconUrl(), but for large icons.
121 bool GetRestrictedIDFromLargeIconUrl(int render_view_id,
122 const GURL& url,
123 std::string* favicon_params,
124 InstantRestrictedID* rid) {
125 // Strip leading slash.
126 std::string raw_path = url.path();
127 DCHECK_GT(raw_path.length(), (size_t) 0);
128 DCHECK_EQ(raw_path[0], '/');
129 raw_path = raw_path.substr(1);
130
131 LargeIconUrlParser parser;
132 if (!parser.Parse(raw_path))
133 return false;
134
135 *favicon_params = raw_path.substr(0, parser.path_index());
136
137 std::string id_part = raw_path.substr(parser.path_index());
138 InstantRestrictedID id;
139 if (!GetInstantRestrictedIDFromPath(render_view_id, id_part, &id))
140 return true;
141
142 *rid = id;
143 return true;
144 }
145
146 // Similar to GetRestrictedIDFromFaviconUrl(), but for fallback icons.
147 bool GetRestrictedIDFromFallbackIconUrl(int render_view_id,
148 const GURL& url,
149 std::string* favicon_params,
150 InstantRestrictedID* rid) {
151 // Strip leading slash.
152 std::string raw_path = url.path();
153 DCHECK_GT(raw_path.length(), (size_t) 0);
154 DCHECK_EQ(raw_path[0], '/');
155 raw_path = raw_path.substr(1);
156
157 chrome::ParsedFallbackIconPath parser;
158 if (!parser.Parse(raw_path))
159 return false;
160
161 *favicon_params = raw_path.substr(0, parser.path_index());
162
163 std::string id_part = raw_path.substr(parser.path_index());
164 InstantRestrictedID id;
165 if (!GetInstantRestrictedIDFromPath(render_view_id, id_part, &id))
166 return true;
167
168 *rid = id;
169 return true;
beaudoin 2015/03/19 02:17:35 This looks like three copies of the same code with
huangs 2015/03/19 02:23:30 I have grand plans to refactor these. Triplicatin
170 }
171
172
118 // Parses a thumbnail |url| and fills in |id| with the InstantRestrictedID 173 // Parses a thumbnail |url| and fills in |id| with the InstantRestrictedID
119 // obtained from the |url|. |render_view_id| is the ID of the associated 174 // obtained from the |url|. |render_view_id| is the ID of the associated
120 // RenderView. 175 // RenderView.
121 // 176 //
122 // Valid |url| forms: 177 // Valid |url| forms:
123 // chrome-search://thumb/<view_id>/<restricted_id> 178 // chrome-search://thumb/<view_id>/<restricted_id>
124 // 179 //
125 // If the |url| is valid, returns true and fills in |id| with restricted_id 180 // If the |url| is valid, returns true and fills in |id| with restricted_id
126 // value. If the |url| is invalid, returns false and |id| is not set. 181 // value. If the |url| is invalid, returns false and |id| is not set.
127 bool GetRestrictedIDFromThumbnailUrl(int render_view_id, 182 bool GetRestrictedIDFromThumbnailUrl(int render_view_id,
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 std::string item_url; 258 std::string item_url;
204 if (rid != -1 && GetMostVisitedItemWithID(rid, &item)) 259 if (rid != -1 && GetMostVisitedItemWithID(rid, &item))
205 item_url = item.url.spec(); 260 item_url = item.url.spec();
206 261
207 *url = GURL(base::StringPrintf("chrome-search://favicon/%s%s", 262 *url = GURL(base::StringPrintf("chrome-search://favicon/%s%s",
208 favicon_params.c_str(), 263 favicon_params.c_str(),
209 item_url.c_str())); 264 item_url.c_str()));
210 return true; 265 return true;
211 } 266 }
212 267
268 bool SearchBox::GenerateLargeIconURLFromTransientURL(const GURL& transient_url,
269 GURL* url) const {
270 std::string favicon_params;
271 InstantRestrictedID rid = -1;
272 bool success = internal::GetRestrictedIDFromLargeIconUrl(
273 render_view()->GetRoutingID(), transient_url, &favicon_params, &rid);
274 if (!success)
275 return false;
276
277 InstantMostVisitedItem item;
278 std::string item_url;
279 if (rid != -1 && GetMostVisitedItemWithID(rid, &item))
280 item_url = item.url.spec();
281
282 *url = GURL(base::StringPrintf("chrome-search://large-icon/%s%s",
283 favicon_params.c_str(),
284 item_url.c_str()));
285 return true;
286 }
287
288 bool SearchBox::GenerateFallbackIconURLFromTransientURL(
289 const GURL& transient_url,
290 GURL* url) const {
291 std::string favicon_params;
292 InstantRestrictedID rid = -1;
293 bool success = internal::GetRestrictedIDFromFallbackIconUrl(
294 render_view()->GetRoutingID(), transient_url, &favicon_params, &rid);
295 if (!success)
296 return false;
297
298 InstantMostVisitedItem item;
299 std::string item_url;
300 if (rid != -1 && GetMostVisitedItemWithID(rid, &item))
301 item_url = item.url.spec();
302
303 *url = GURL(base::StringPrintf("chrome-search://fallback-icon/%s%s",
304 favicon_params.c_str(),
305 item_url.c_str()));
306 return true;
beaudoin 2015/03/19 02:17:35 Same here, I'd be fine with an internal::GenerateU
huangs 2015/03/19 02:23:30 Same as above.
307 }
308
213 bool SearchBox::GenerateThumbnailURLFromTransientURL(const GURL& transient_url, 309 bool SearchBox::GenerateThumbnailURLFromTransientURL(const GURL& transient_url,
214 GURL* url) const { 310 GURL* url) const {
215 InstantRestrictedID rid = 0; 311 InstantRestrictedID rid = 0;
216 if (!internal::GetRestrictedIDFromThumbnailUrl(render_view()->GetRoutingID(), 312 if (!internal::GetRestrictedIDFromThumbnailUrl(render_view()->GetRoutingID(),
217 transient_url, &rid)) { 313 transient_url, &rid)) {
218 return false; 314 return false;
219 } 315 }
220 316
221 GURL most_visited_item_url(GetURLForMostVisitedItem(rid)); 317 GURL most_visited_item_url(GetURLForMostVisitedItem(rid));
222 if (most_visited_item_url.is_empty()) 318 if (most_visited_item_url.is_empty())
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 579
484 void SearchBox::Reset() { 580 void SearchBox::Reset() {
485 query_.clear(); 581 query_.clear();
486 embedded_search_request_params_ = EmbeddedSearchRequestParams(); 582 embedded_search_request_params_ = EmbeddedSearchRequestParams();
487 suggestion_ = InstantSuggestion(); 583 suggestion_ = InstantSuggestion();
488 start_margin_ = 0; 584 start_margin_ = 0;
489 is_focused_ = false; 585 is_focused_ = false;
490 is_key_capture_enabled_ = false; 586 is_key_capture_enabled_ = false;
491 theme_info_ = ThemeBackgroundInfo(); 587 theme_info_ = ThemeBackgroundInfo();
492 } 588 }
OLDNEW
« no previous file with comments | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698