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

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

Issue 12732005: Most visited thumbnails and favicons need id-based urls (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address estade's comments. Created 7 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 | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_extension.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 "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/common/render_messages.h" 8 #include "chrome/common/render_messages.h"
9 #include "chrome/common/url_constants.h" 9 #include "chrome/common/url_constants.h"
10 #include "chrome/renderer/searchbox/searchbox_extension.h" 10 #include "chrome/renderer/searchbox/searchbox_extension.h"
11 #include "content/public/renderer/render_view.h" 11 #include "content/public/renderer/render_view.h"
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h" 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h"
13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
14 14
15 namespace {
16
17 // Prefix for a thumbnail URL.
18 const char kThumbnailUrlPrefix[] = "chrome-search://thumb/";
19
20 // Prefix for a thumbnail URL.
21 const char kFaviconUrlPrefix[] = "chrome-search://favicon/";
22
23 }
24
25 SearchBox::SearchBox(content::RenderView* render_view) 15 SearchBox::SearchBox(content::RenderView* render_view)
26 : content::RenderViewObserver(render_view), 16 : content::RenderViewObserver(render_view),
27 content::RenderViewObserverTracker<SearchBox>(render_view), 17 content::RenderViewObserverTracker<SearchBox>(render_view),
28 verbatim_(false), 18 verbatim_(false),
29 selection_start_(0), 19 selection_start_(0),
30 selection_end_(0), 20 selection_end_(0),
31 results_base_(0), 21 results_base_(0),
32 start_margin_(0), 22 start_margin_(0),
33 last_results_base_(0), 23 last_results_base_(0),
34 is_key_capture_enabled_(false), 24 is_key_capture_enabled_(false),
35 display_instant_results_(false), 25 display_instant_results_(false),
36 omnibox_font_size_(0), 26 omnibox_font_size_(0) {
37 last_most_visited_item_id_(0) {
38 } 27 }
39 28
40 SearchBox::~SearchBox() { 29 SearchBox::~SearchBox() {
41 } 30 }
42 31
43 void SearchBox::SetSuggestions( 32 void SearchBox::SetSuggestions(
44 const std::vector<InstantSuggestion>& suggestions) { 33 const std::vector<InstantSuggestion>& suggestions) {
45 if (!suggestions.empty() && 34 if (!suggestions.empty() &&
46 suggestions[0].behavior == INSTANT_COMPLETE_REPLACE) { 35 suggestions[0].behavior == INSTANT_COMPLETE_REPLACE) {
47 query_ = suggestions[0].text; 36 query_ = suggestions[0].text;
(...skipping 29 matching lines...) Expand all
77 } 66 }
78 67
79 void SearchBox::NavigateToURL(const GURL& url, 68 void SearchBox::NavigateToURL(const GURL& url,
80 content::PageTransition transition, 69 content::PageTransition transition,
81 WindowOpenDisposition disposition) { 70 WindowOpenDisposition disposition) {
82 render_view()->Send(new ChromeViewHostMsg_SearchBoxNavigate( 71 render_view()->Send(new ChromeViewHostMsg_SearchBoxNavigate(
83 render_view()->GetRoutingID(), render_view()->GetPageId(), 72 render_view()->GetRoutingID(), render_view()->GetPageId(),
84 url, transition, disposition)); 73 url, transition, disposition));
85 } 74 }
86 75
87 void SearchBox::DeleteMostVisitedItem(int most_visited_item_id) { 76 void SearchBox::DeleteMostVisitedItem(uint64 most_visited_item_id) {
88 string16 url = MostVisitedItemIDToURL(most_visited_item_id); 77 render_view()->Send(new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
89 render_view()->Send(new ChromeViewHostMsg_InstantDeleteMostVisitedItem( 78 render_view()->GetRoutingID(), most_visited_item_id));
90 render_view()->GetRoutingID(), GURL(url)));
91 } 79 }
92 80
93 void SearchBox::UndoMostVisitedDeletion(int most_visited_item_id) { 81 void SearchBox::UndoMostVisitedDeletion(uint64 most_visited_item_id) {
94 string16 url = MostVisitedItemIDToURL(most_visited_item_id); 82 render_view()->Send(new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
95 render_view()->Send(new ChromeViewHostMsg_InstantUndoMostVisitedDeletion( 83 render_view()->GetRoutingID(), most_visited_item_id));
96 render_view()->GetRoutingID(), GURL(url)));
97 } 84 }
98 85
99 void SearchBox::UndoAllMostVisitedDeletions() { 86 void SearchBox::UndoAllMostVisitedDeletions() {
100 render_view()->Send(new ChromeViewHostMsg_InstantUndoAllMostVisitedDeletions( 87 render_view()->Send(
88 new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
101 render_view()->GetRoutingID())); 89 render_view()->GetRoutingID()));
102 } 90 }
103 91
104 int SearchBox::GetStartMargin() const { 92 int SearchBox::GetStartMargin() const {
105 return static_cast<int>(start_margin_ / GetZoom()); 93 return static_cast<int>(start_margin_ / GetZoom());
106 } 94 }
107 95
108 gfx::Rect SearchBox::GetPopupBounds() const { 96 gfx::Rect SearchBox::GetPopupBounds() const {
109 double zoom = GetZoom(); 97 double zoom = GetZoom();
110 return gfx::Rect(static_cast<int>(popup_bounds_.x() / zoom), 98 return gfx::Rect(static_cast<int>(popup_bounds_.x() / zoom),
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 OnSetDisplayInstantResults) 145 OnSetDisplayInstantResults)
158 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxKeyCaptureChanged, 146 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxKeyCaptureChanged,
159 OnKeyCaptureChange) 147 OnKeyCaptureChange)
160 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxThemeChanged, 148 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxThemeChanged,
161 OnThemeChanged) 149 OnThemeChanged)
162 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFontInformation, 150 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFontInformation,
163 OnFontInformationReceived) 151 OnFontInformationReceived)
164 IPC_MESSAGE_HANDLER( 152 IPC_MESSAGE_HANDLER(
165 ChromeViewMsg_SearchBoxGrantChromeSearchAccessFromOrigin, 153 ChromeViewMsg_SearchBoxGrantChromeSearchAccessFromOrigin,
166 OnGrantChromeSearchAccessFromOrigin) 154 OnGrantChromeSearchAccessFromOrigin)
167 IPC_MESSAGE_HANDLER(ChromeViewMsg_InstantMostVisitedItemsChanged, 155 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxMostVisitedItemsChanged,
168 OnMostVisitedChanged) 156 OnMostVisitedChanged)
169 IPC_MESSAGE_UNHANDLED(handled = false) 157 IPC_MESSAGE_UNHANDLED(handled = false)
170 IPC_END_MESSAGE_MAP() 158 IPC_END_MESSAGE_MAP()
171 return handled; 159 return handled;
172 } 160 }
173 161
174 void SearchBox::DidClearWindowObject(WebKit::WebFrame* frame) { 162 void SearchBox::DidClearWindowObject(WebKit::WebFrame* frame) {
175 extensions_v8::SearchBoxExtension::DispatchOnWindowReady(frame); 163 extensions_v8::SearchBoxExtension::DispatchOnWindowReady(frame);
176 } 164 }
177 165
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 is_key_capture_enabled_ = false; 333 is_key_capture_enabled_ = false;
346 theme_info_ = ThemeBackgroundInfo(); 334 theme_info_ = ThemeBackgroundInfo();
347 // Don't reset display_instant_results_ to prevent clearing it on committed 335 // Don't reset display_instant_results_ to prevent clearing it on committed
348 // results pages in extended mode. Otherwise resetting it is a no-op because 336 // results pages in extended mode. Otherwise resetting it is a no-op because
349 // a new loader is created when it changes; see crbug.com/164662. 337 // a new loader is created when it changes; see crbug.com/164662.
350 // Also don't reset omnibox_font_ or omnibox_font_size_ since it never 338 // Also don't reset omnibox_font_ or omnibox_font_size_ since it never
351 // changes. 339 // changes.
352 } 340 }
353 341
354 void SearchBox::OnMostVisitedChanged( 342 void SearchBox::OnMostVisitedChanged(
355 const std::vector<MostVisitedItem>& items) { 343 const std::vector<InstantMostVisitedItem>& items) {
356 most_visited_items_ = items; 344 most_visited_items_ = items;
357 345
358 if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 346 if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
359 extensions_v8::SearchBoxExtension::DispatchMostVisitedChanged( 347 extensions_v8::SearchBoxExtension::DispatchMostVisitedChanged(
360 render_view()->GetWebView()->mainFrame()); 348 render_view()->GetWebView()->mainFrame());
361 } 349 }
362 } 350 }
363 351
364 const std::vector<MostVisitedItem>& SearchBox::GetMostVisitedItems() { 352 const std::vector<InstantMostVisitedItem>&
353 SearchBox::GetMostVisitedItems() const {
365 return most_visited_items_; 354 return most_visited_items_;
366 } 355 }
367
368 int SearchBox::URLToMostVisitedItemID(string16 url) {
369 if (url_to_most_visited_item_id_map_[url])
370 return url_to_most_visited_item_id_map_[url];
371
372 last_most_visited_item_id_++;
373 url_to_most_visited_item_id_map_[url] = last_most_visited_item_id_;
374 most_visited_item_id_to_url_map_[last_most_visited_item_id_] = url;
375
376 return last_most_visited_item_id_;
377 }
378
379 string16 SearchBox::MostVisitedItemIDToURL(int most_visited_item_id) {
380 return most_visited_item_id_to_url_map_[most_visited_item_id];
381 }
382
383 string16 SearchBox::GenerateThumbnailUrl(int most_visited_item_id) {
384 std::ostringstream ostr;
385 ostr << kThumbnailUrlPrefix << most_visited_item_id;
386 GURL url = GURL(ostr.str());
387 return UTF8ToUTF16(url.spec());
388 }
389
390 string16 SearchBox::GenerateFaviconUrl(int most_visited_item_id) {
391 std::ostringstream ostr;
392 ostr << kFaviconUrlPrefix << most_visited_item_id;
393 GURL url = GURL(ostr.str());
394 return UTF8ToUTF16(url.spec());
395 }
OLDNEW
« no previous file with comments | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698