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

Unified Diff: chrome/browser/extensions/extension_renderer_state.cc

Issue 333313004: Fix the bug that webview guest cannot load script of a SharedWorker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add constructor. Created 6 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
« no previous file with comments | « chrome/browser/extensions/extension_renderer_state.h ('k') | chrome/browser/extensions/url_request_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_renderer_state.cc
diff --git a/chrome/browser/extensions/extension_renderer_state.cc b/chrome/browser/extensions/extension_renderer_state.cc
index 341db2788cc789e4cbde81f2b1df20f39716a7b5..cc81d8df00ad02d03a642f2282c80074bf507321 100644
--- a/chrome/browser/extensions/extension_renderer_state.cc
+++ b/chrome/browser/extensions/extension_renderer_state.cc
@@ -223,12 +223,8 @@ bool ExtensionRendererState::GetTabAndWindowId(
bool ExtensionRendererState::IsWebViewRenderer(int render_process_id) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- for (WebViewInfoMap::iterator i = webview_info_map_.begin();
- i != webview_info_map_.end(); ++i) {
- if (i->first.first == render_process_id)
- return true;
- }
- return false;
+ return webview_partition_id_map_.find(render_process_id) !=
+ webview_partition_id_map_.end();
}
void ExtensionRendererState::AddWebView(int guest_process_id,
@@ -237,6 +233,17 @@ void ExtensionRendererState::AddWebView(int guest_process_id,
DCHECK_CURRENTLY_ON(BrowserThread::IO);
RenderId render_id(guest_process_id, guest_routing_id);
webview_info_map_[render_id] = webview_info;
+ WebViewPartitionIDMap::iterator iter =
+ webview_partition_id_map_.find(guest_process_id);
+ if (iter != webview_partition_id_map_.end()) {
+ WebViewPartitionInfo& partition_info = iter->second;
Fady Samuel 2014/06/18 13:39:16 There's actually no need for this local variable:
Xi Han 2014/06/18 14:09:19 Done.
+ ++partition_info.web_view_count;
+ return;
+ }
+ WebViewPartitionInfo partition_info(1, webview_info.partition_id);
+ webview_partition_id_map_.insert(
Fady Samuel 2014/06/18 13:39:16 nit This is more readable: webview_partition_id_
Xi Han 2014/06/18 14:09:19 Done.
+ std::pair<char, WebViewPartitionInfo>(guest_process_id,
+ partition_info));
}
void ExtensionRendererState::RemoveWebView(int guest_process_id,
@@ -244,6 +251,15 @@ void ExtensionRendererState::RemoveWebView(int guest_process_id,
DCHECK_CURRENTLY_ON(BrowserThread::IO);
RenderId render_id(guest_process_id, guest_routing_id);
webview_info_map_.erase(render_id);
+ WebViewPartitionIDMap::iterator iter =
+ webview_partition_id_map_.find(guest_process_id);
+ if (iter != webview_partition_id_map_.end() &&
+ iter->second.web_view_count > 1) {
+ WebViewPartitionInfo& partition_info = iter->second;
+ --partition_info.web_view_count;
Fady Samuel 2014/06/18 13:39:16 There's no need for a local variable: --iter->sec
Xi Han 2014/06/18 14:09:19 Done.
+ return;
+ }
+ webview_partition_id_map_.erase(guest_process_id);
}
bool ExtensionRendererState::GetWebViewInfo(int guest_process_id,
@@ -258,3 +274,15 @@ bool ExtensionRendererState::GetWebViewInfo(int guest_process_id,
}
return false;
}
+
+bool ExtensionRendererState::GetWebViewPartitionID(int guest_process_id,
+ std::string* partition_id) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ WebViewPartitionIDMap::iterator iter =
+ webview_partition_id_map_.find(guest_process_id);
+ if (iter != webview_partition_id_map_.end()) {
+ *partition_id = iter->second.partition_id;
+ return true;
+ }
+ return false;
+}
« no previous file with comments | « chrome/browser/extensions/extension_renderer_state.h ('k') | chrome/browser/extensions/url_request_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698