Update references to the extension messaging APIs and lastError to point to
the "runtime" namespace rather than "extension" in docs and samples.

[email protected]
[email protected]

Review URL: https://codereview.chromium.org/11745015

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175527 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/renderer/extensions/miscellaneous_bindings.cc b/chrome/renderer/extensions/miscellaneous_bindings.cc
index 18a6c2ca..deb9c45 100644
--- a/chrome/renderer/extensions/miscellaneous_bindings.cc
+++ b/chrome/renderer/extensions/miscellaneous_bindings.cc
@@ -26,7 +26,7 @@
 // Message passing API example (in a content script):
 // var extension =
 //    new chrome.Extension('00123456789abcdef0123456789abcdef0123456');
-// var port = extension.connect();
+// var port = runtime.connect();
 // port.postMessage('Can you hear me now?');
 // port.onmessage.addListener(function(msg, port) {
 //   alert('response=' + msg);
diff --git a/chrome/renderer/resources/extensions/extension_custom_bindings.js b/chrome/renderer/resources/extensions/extension_custom_bindings.js
index a4145f3..4311ee9 100644
--- a/chrome/renderer/resources/extensions/extension_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/extension_custom_bindings.js
@@ -70,16 +70,23 @@
   });
 
   // Alias several messaging deprecated APIs to their runtime counterparts.
-  chrome.extension.connect = chrome.runtime.connect;
-  chrome.extension.sendMessage = chrome.runtime.sendMessage;
-  chrome.extension.onConnect = chrome.runtime.onConnect;
-  chrome.extension.onMessage = chrome.runtime.onMessage;
-  if (contextType == 'BLESSED_EXTENSION') {
-    chrome.extension.connectNative = chrome.runtime.connectNative;
-    chrome.extension.sendNativeMessage = chrome.runtime.sendNativeMessage;
-    chrome.extension.onConnectExternal = chrome.runtime.onConnectExternal;
-    chrome.extension.onMessageExternal = chrome.runtime.onMessageExternal;
-  }
+  var mayNeedAlias = [
+    // Types
+    'Port',
+    // Functions
+    'connect', 'sendMessage', 'connectNative', 'sendNativeMessage',
+    // Events
+    'onConnect', 'onConnectExternal', 'onMessage', 'onMessageExternal'
+  ];
+  mayNeedAlias.forEach(function(alias) {
+    try {
+      // Deliberately accessing runtime[alias] rather than testing its
+      // existence, since accessing may throw an exception if this context
+      // doesn't have access.
+      if (chrome.runtime[alias])
+        chrome.extension[alias] = chrome.runtime[alias];
+    } catch(e) {}
+  });
 
   apiFunctions.setUpdateArgumentsPreValidate('sendRequest',
       sendMessageUpdateArguments.bind(null, 'sendRequest'));
diff --git a/chrome/renderer/resources/extensions/miscellaneous_bindings.js b/chrome/renderer/resources/extensions/miscellaneous_bindings.js
index 9904e8c..5663271 100644
--- a/chrome/renderer/resources/extensions/miscellaneous_bindings.js
+++ b/chrome/renderer/resources/extensions/miscellaneous_bindings.js
@@ -255,7 +255,7 @@
     }
   };
 
-  // Shared implementation used by tabs.sendMessage and extension.sendMessage.
+  // Shared implementation used by tabs.sendMessage and runtime.sendMessage.
   chromeHidden.Port.sendMessageImpl = function(port, request,
                                                responseCallback) {
     if (port.name != chromeHidden.kNativeMessageChannel)
diff --git a/chrome/renderer/resources/extensions/runtime_custom_bindings.js b/chrome/renderer/resources/extensions/runtime_custom_bindings.js
index e1c2ffb..c5e63ac 100644
--- a/chrome/renderer/resources/extensions/runtime_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/runtime_custom_bindings.js
@@ -47,7 +47,7 @@
 
   apiFunctions.setHandleRequest('sendNativeMessage',
                                 function(targetId, message, responseCallback) {
-    var port = chrome.extension.connectNative(
+    var port = chrome.runtime.connectNative(
         targetId, message, chromeHidden.kNativeMessageChannel);
     chromeHidden.Port.sendMessageImpl(port, '', responseCallback);
   });