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

Unified Diff: ios/web/web_state/js/resources/message.js

Issue 1973683002: [ios] Protect JS messaging system from window.webkit object overriding. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Self review Created 4 years, 7 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 | « no previous file | ios/web/web_state/web_state_impl_unittest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/web_state/js/resources/message.js
diff --git a/ios/web/web_state/js/resources/message.js b/ios/web/web_state/js/resources/message.js
index e57133a79efc648d99a59fdf21ac548c5d3da7df..78a44102bd9554baeb23ec3c38d0b765656dbc6f 100644
--- a/ios/web/web_state/js/resources/message.js
+++ b/ios/web/web_state/js/resources/message.js
@@ -15,6 +15,12 @@ __gCrWeb.message = {};
/* Beginning of anonymous object. */
(function() {
+
+ // Retain message handlers object in case if a web page decide to override
Jackie Quinn 2016/05/11 22:05:01 Grammar nit: "in case a web page overrides"
Eugene But (OOO till 7-30) 2016/05/12 13:59:15 Acknowledged.
+ // |window.webkit|.
+ if (window.webkit)
+ __gCrWeb.webkitMessageHandlers = window.webkit.messageHandlers;
+
/**
* Object to manage queue of messages waiting to be sent to the main
* application for immediate processing.
@@ -116,8 +122,11 @@ __gCrWeb.message = {};
"crwCommand": command,
"crwWindowId": __gCrWeb.windowId
});
- window.webkit.messageHandlers[queueObject.scheme].postMessage(
- stringifiedMessage);
+ // If |window.webkit| has been overridden, use messageHandlers object
+ // retained before the page load.
+ var messageHandlers = window.webkit.messageHandlers ||
Jackie Quinn 2016/05/11 22:05:01 What happens if it gets overridden and there is a
Eugene But (OOO till 7-30) 2016/05/12 13:59:15 deleting |window.webkit| addresses all kinds of is
+ __gCrWeb.webkitMessageHandlers;
+ messageHandlers[queueObject.scheme].postMessage(stringifiedMessage);
});
queueObject.reset();
« no previous file with comments | « no previous file | ios/web/web_state/web_state_impl_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698