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; |
+} |