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

Unified Diff: extensions/browser/extension_web_contents_observer.cc

Issue 1413543005: Use FrameTreeNode ID as frameId in extension APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: s/:/ / Created 4 years, 11 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: extensions/browser/extension_web_contents_observer.cc
diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc
index 757c1af791e55fd0c0020bd8886818f9219ae437..ac482df0ce32fe2bd4278d31befbcb3e9f800bd6 100644
--- a/extensions/browser/extension_web_contents_observer.cc
+++ b/extensions/browser/extension_web_contents_observer.cc
@@ -12,6 +12,7 @@
#include "content/public/browser/site_instance.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/url_constants.h"
+#include "extensions/browser/extension_api_frame_id_map.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extensions_browser_client.h"
@@ -110,12 +111,18 @@ void ExtensionWebContentsObserver::RenderViewCreated(
void ExtensionWebContentsObserver::RenderFrameCreated(
content::RenderFrameHost* render_frame_host) {
InitializeRenderFrame(render_frame_host);
+
+ // Optimization: Look up the extension API frame ID to force the mapping to be
+ // cached. This minimizes the number of IO->UI->IO thread hops when the ID is
+ // looked up again on the IO thread for the webRequest API.
+ ExtensionApiFrameIdMap::Get()->CacheFrameId(render_frame_host);
}
void ExtensionWebContentsObserver::RenderFrameDeleted(
content::RenderFrameHost* render_frame_host) {
ProcessManager::Get(browser_context_)
->UnregisterRenderFrameHost(render_frame_host);
+ ExtensionApiFrameIdMap::Get()->RemoveFrameId(render_frame_host);
}
void ExtensionWebContentsObserver::DidCommitProvisionalLoadForFrame(

Powered by Google App Engine
This is Rietveld 408576698