Index: chrome/renderer/resources/extension_process_bindings.js |
diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js |
index af682c07e189a3c97fa5363260f7862ab0a1cc22..48536985c71afefb28fbea27ac6570041deb0ef4 100644 |
--- a/chrome/renderer/resources/extension_process_bindings.js |
+++ b/chrome/renderer/resources/extension_process_bindings.js |
@@ -499,6 +499,24 @@ var chrome = chrome || {}; |
}; |
} |
+ // Get the platform from navigator.appVersion. |
+ function getPlatform() { |
+ var platforms = [ |
+ [/CrOS Touch/, "chromeos touch"], |
+ [/CrOS/, "chromeos"], |
+ [/Linux/, "linux"], |
+ [/Mac/, "mac"], |
+ [/Win/, "win"], |
+ ]; |
+ |
+ for (var i = 0; i < platforms.length; i++) { |
+ if (platforms[i][0].test(navigator.appVersion)) { |
+ return platforms[i][1]; |
+ } |
+ } |
+ return "unknown"; |
+ } |
+ |
chromeHidden.onLoad.addListener(function (extensionId) { |
if (!extensionId) { |
return; |
@@ -521,8 +539,14 @@ var chrome = chrome || {}; |
// TOOD(rafaelw): Consider providing some convenient override points |
// for api functions that wish to insert themselves into the call. |
var apiDefinitions = chromeHidden.JSON.parse(GetExtensionAPIDefinition()); |
+ var platform = getPlatform(); |
apiDefinitions.forEach(function(apiDef) { |
+ // Check platform, if apiDef has platforms key. |
+ if (apiDef.platforms && apiDef.platforms.indexOf(platform) == -1) { |
+ return; |
+ } |
+ |
var module = chrome; |
var namespaces = apiDef.namespace.split('.'); |
for (var index = 0, name; name = namespaces[index]; index++) { |