Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 bool GetRestrictedIDFromLargeIconUrl(int render_view_id, | |
|
James Hawkins
2015/03/17 21:46:41
nit: Document methods and params.
huangs
2015/03/18 21:43:10
Done.
| |
| 121 const GURL& url, | |
| 122 std::string* favicon_params, | |
| 123 InstantRestrictedID* rid) { | |
| 124 // Strip leading slash. | |
| 125 std::string raw_path = url.path(); | |
| 126 DCHECK_GT(raw_path.length(), (size_t) 0); | |
| 127 DCHECK_EQ(raw_path[0], '/'); | |
| 128 raw_path = raw_path.substr(1); | |
| 129 | |
| 130 chrome::LargeIconUrlParser parser; | |
| 131 if (!parser.Parse(raw_path)) | |
| 132 return false; | |
| 133 | |
| 134 *favicon_params = raw_path.substr(0, parser.path_index()); | |
| 135 | |
| 136 std::string id_part = raw_path.substr(parser.path_index()); | |
| 137 InstantRestrictedID id; | |
| 138 if (!GetInstantRestrictedIDFromPath(render_view_id, id_part, &id)) | |
| 139 return true; | |
| 140 | |
| 141 *rid = id; | |
| 142 return true; | |
| 143 } | |
| 144 | |
| 145 bool GetRestrictedIDFromFallbackIconUrl(int render_view_id, | |
| 146 const GURL& url, | |
| 147 std::string* favicon_params, | |
| 148 InstantRestrictedID* rid) { | |
| 149 // Strip leading slash. | |
| 150 std::string raw_path = url.path(); | |
| 151 DCHECK_GT(raw_path.length(), (size_t) 0); | |
| 152 DCHECK_EQ(raw_path[0], '/'); | |
| 153 raw_path = raw_path.substr(1); | |
| 154 | |
| 155 chrome::ParsedFallbackIconPath parser; | |
| 156 if (!parser.Parse(raw_path)) | |
| 157 return false; | |
| 158 | |
| 159 *favicon_params = raw_path.substr(0, parser.path_index()); | |
| 160 | |
| 161 std::string id_part = raw_path.substr(parser.path_index()); | |
| 162 InstantRestrictedID id; | |
| 163 if (!GetInstantRestrictedIDFromPath(render_view_id, id_part, &id)) | |
| 164 return true; | |
| 165 | |
| 166 *rid = id; | |
| 167 return true; | |
| 168 } | |
| 169 | |
| 170 | |
| 118 // Parses a thumbnail |url| and fills in |id| with the InstantRestrictedID | 171 // 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 | 172 // obtained from the |url|. |render_view_id| is the ID of the associated |
| 120 // RenderView. | 173 // RenderView. |
| 121 // | 174 // |
| 122 // Valid |url| forms: | 175 // Valid |url| forms: |
| 123 // chrome-search://thumb/<view_id>/<restricted_id> | 176 // chrome-search://thumb/<view_id>/<restricted_id> |
| 124 // | 177 // |
| 125 // If the |url| is valid, returns true and fills in |id| with restricted_id | 178 // 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. | 179 // value. If the |url| is invalid, returns false and |id| is not set. |
| 127 bool GetRestrictedIDFromThumbnailUrl(int render_view_id, | 180 bool GetRestrictedIDFromThumbnailUrl(int render_view_id, |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 203 std::string item_url; | 256 std::string item_url; |
| 204 if (rid != -1 && GetMostVisitedItemWithID(rid, &item)) | 257 if (rid != -1 && GetMostVisitedItemWithID(rid, &item)) |
| 205 item_url = item.url.spec(); | 258 item_url = item.url.spec(); |
| 206 | 259 |
| 207 *url = GURL(base::StringPrintf("chrome-search://favicon/%s%s", | 260 *url = GURL(base::StringPrintf("chrome-search://favicon/%s%s", |
| 208 favicon_params.c_str(), | 261 favicon_params.c_str(), |
| 209 item_url.c_str())); | 262 item_url.c_str())); |
| 210 return true; | 263 return true; |
| 211 } | 264 } |
| 212 | 265 |
| 266 bool SearchBox::GenerateLargeIconURLFromTransientURL(const GURL& transient_url, | |
| 267 GURL* url) const { | |
| 268 std::string favicon_params; | |
| 269 InstantRestrictedID rid = -1; | |
| 270 bool success = internal::GetRestrictedIDFromLargeIconUrl( | |
| 271 render_view()->GetRoutingID(), transient_url, &favicon_params, &rid); | |
| 272 if (!success) | |
| 273 return false; | |
| 274 | |
| 275 InstantMostVisitedItem item; | |
| 276 std::string item_url; | |
| 277 if (rid != -1 && GetMostVisitedItemWithID(rid, &item)) | |
| 278 item_url = item.url.spec(); | |
| 279 | |
| 280 *url = GURL(base::StringPrintf("chrome-search://large-icon/%s%s", | |
| 281 favicon_params.c_str(), | |
| 282 item_url.c_str())); | |
| 283 return true; | |
| 284 } | |
| 285 | |
| 286 bool SearchBox::GenerateFallbackIconURLFromTransientURL( | |
| 287 const GURL& transient_url, | |
| 288 GURL* url) const { | |
| 289 std::string favicon_params; | |
| 290 InstantRestrictedID rid = -1; | |
| 291 bool success = internal::GetRestrictedIDFromFallbackIconUrl( | |
| 292 render_view()->GetRoutingID(), transient_url, &favicon_params, &rid); | |
| 293 if (!success) | |
| 294 return false; | |
| 295 | |
| 296 InstantMostVisitedItem item; | |
| 297 std::string item_url; | |
| 298 if (rid != -1 && GetMostVisitedItemWithID(rid, &item)) | |
| 299 item_url = item.url.spec(); | |
| 300 | |
| 301 *url = GURL(base::StringPrintf("chrome-search://fallback-icon/%s%s", | |
| 302 favicon_params.c_str(), | |
| 303 item_url.c_str())); | |
| 304 return true; | |
| 305 } | |
| 306 | |
| 213 bool SearchBox::GenerateThumbnailURLFromTransientURL(const GURL& transient_url, | 307 bool SearchBox::GenerateThumbnailURLFromTransientURL(const GURL& transient_url, |
| 214 GURL* url) const { | 308 GURL* url) const { |
| 215 InstantRestrictedID rid = 0; | 309 InstantRestrictedID rid = 0; |
| 216 if (!internal::GetRestrictedIDFromThumbnailUrl(render_view()->GetRoutingID(), | 310 if (!internal::GetRestrictedIDFromThumbnailUrl(render_view()->GetRoutingID(), |
| 217 transient_url, &rid)) { | 311 transient_url, &rid)) { |
| 218 return false; | 312 return false; |
| 219 } | 313 } |
| 220 | 314 |
| 221 GURL most_visited_item_url(GetURLForMostVisitedItem(rid)); | 315 GURL most_visited_item_url(GetURLForMostVisitedItem(rid)); |
| 222 if (most_visited_item_url.is_empty()) | 316 if (most_visited_item_url.is_empty()) |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 483 | 577 |
| 484 void SearchBox::Reset() { | 578 void SearchBox::Reset() { |
| 485 query_.clear(); | 579 query_.clear(); |
| 486 embedded_search_request_params_ = EmbeddedSearchRequestParams(); | 580 embedded_search_request_params_ = EmbeddedSearchRequestParams(); |
| 487 suggestion_ = InstantSuggestion(); | 581 suggestion_ = InstantSuggestion(); |
| 488 start_margin_ = 0; | 582 start_margin_ = 0; |
| 489 is_focused_ = false; | 583 is_focused_ = false; |
| 490 is_key_capture_enabled_ = false; | 584 is_key_capture_enabled_ = false; |
| 491 theme_info_ = ThemeBackgroundInfo(); | 585 theme_info_ = ThemeBackgroundInfo(); |
| 492 } | 586 } |
| OLD | NEW |