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

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 15907006: Rip out browser-side RID caching for most visited items. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use view_id/rid instead of view_id:rid in URL. Created 7 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/chrome_content_renderer_client.cc
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 092b48f31556f817437b63433476946a3354578c..eb96d8758e251d14145f3349888aecd2cfcbd44d 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -9,6 +9,7 @@
#include "base/metrics/histogram.h"
#include "base/path_service.h"
#include "base/string_util.h"
+#include "base/strings/string_number_conversions.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/common/child_process_logging.h"
@@ -24,6 +25,7 @@
#include "chrome/common/extensions/extension_set.h"
#include "chrome/common/extensions/permissions/chrome_api_permissions.h"
#include "chrome/common/external_ipc_fuzzer.h"
+#include "chrome/common/instant_types.h"
#include "chrome/common/localized_error.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
@@ -201,6 +203,42 @@ bool ShouldUseJavaScriptSettingForPlugin(const WebPluginInfo& plugin) {
return false;
}
+// Parses |url| and fills in |id| with the InstantRestrictedID obtained from the
+// |url|. |render_view_id| is the ID of the associated RenderView.
+//
+// Valid |url| forms:
+// chrome-search://favicon/<view_id>/<restriced_id> or
+// chrome-search://thumb/<view_id>/<restricted_id>
+//
+// If the |url| is valid, returns true and fills in |id| with restricted_id
+// value. If the |url| is invalid, returns false and |id| is not set.
+bool GetInstantRestrictedIDFromURL(int render_view_id,
Jered 2013/06/04 23:27:23 I realized this function might make more sense in
kmadhusu 2013/06/05 00:48:30 Moved to SearchBox.
+ const GURL& url,
+ InstantRestrictedID* id) {
+ // Strip leading slash.
+ std::string path = url.path().substr(1);
+
+ // Check that the path is of Most visited item ID form.
+ std::vector<std::string> tokens;
+ if (Tokenize(path, "/", &tokens) != 2)
+ return false;
+
+ int view_id = 0;
+ if (!base::StringToInt(tokens[0], &view_id) || view_id != render_view_id)
+ return false;
+ return base::StringToInt(tokens[1], id);
+}
+
+content::RenderView* GetRenderViewFromWebFrame(WebKit::WebFrame* frame) {
+ if (!frame)
+ return NULL;
+
+ WebKit::WebView* view = frame->view();
+ if (!view)
+ return NULL;
+ return content::RenderView::FromWebView(view);
+}
+
} // namespace
namespace chrome {
@@ -992,6 +1030,23 @@ bool ChromeContentRendererClient::WillSendRequest(
return true;
}
+ const content::RenderView* render_view = GetRenderViewFromWebFrame(frame);
+ if (SearchBox* search_box = SearchBox::Get(render_view)) {
+ if (url.SchemeIs(chrome::kChromeSearchScheme)) {
+ if (url.host() == chrome::kChromeUIThumbnailHost) {
+ InstantRestrictedID rid = 0;
+ return GetInstantRestrictedIDFromURL(render_view->GetRoutingID(), url,
Jered 2013/06/04 23:19:20 If the rewrite fails, we'll send a bad URL to chro
kmadhusu 2013/06/05 00:48:30 If rewrite fails, we will send a bad URL to Favico
+ &rid) &&
+ search_box->GenerateThumbnailURLFromRID(rid, new_url);
+ } else if (url.host() == chrome::kChromeUIFaviconHost) {
+ InstantRestrictedID rid = 0;
+ return GetInstantRestrictedIDFromURL(render_view->GetRoutingID(), url,
+ &rid) &&
+ search_box->GenerateFaviconURLFromRID(rid, new_url);
+ }
+ }
+ }
+
return false;
}

Powered by Google App Engine
This is Rietveld 408576698