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

Unified Diff: chrome/browser/extensions/api/messaging/extension_message_port.cc

Issue 1588533002: Never connect a port to the same frame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Also rename invocation of WillConnectToPort 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: chrome/browser/extensions/api/messaging/extension_message_port.cc
diff --git a/chrome/browser/extensions/api/messaging/extension_message_port.cc b/chrome/browser/extensions/api/messaging/extension_message_port.cc
index e224597b093424844c9b416d7f52862a61380e79..72acfee8d9c75e14ba484195f3b14fba26210510 100644
--- a/chrome/browser/extensions/api/messaging/extension_message_port.cc
+++ b/chrome/browser/extensions/api/messaging/extension_message_port.cc
@@ -114,6 +114,23 @@ ExtensionMessagePort::ExtensionMessagePort(
ExtensionMessagePort::~ExtensionMessagePort() {}
+void ExtensionMessagePort::RemoveCommonFrames(const MessagePort& port) {
+ // Avoid overlap in the set of frames to make sure that it does not matter
+ // when UnregisterFrame is called.
+ for (std::set<content::RenderFrameHost*>::iterator it = frames_.begin();
+ it != frames_.end(); ) {
+ if (port.HasFrame(*it)) {
+ frames_.erase(it++);
+ } else {
+ ++it;
+ }
+ }
+}
+
+bool ExtensionMessagePort::HasFrame(content::RenderFrameHost* rfh) const {
+ return frames_.find(rfh) != frames_.end();
+}
+
bool ExtensionMessagePort::IsValidPort() {
return !frames_.empty();
}

Powered by Google App Engine
This is Rietveld 408576698