summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-14 01:19:38 +0000
committerrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-14 01:19:38 +0000
commitccac75726852954dbe516708c0b71d8e1e7e4fbb (patch)
tree2f68fbb41a26cc6df5b133f6bc143f912b3d8468 /chrome/renderer
parentf5a76ba53a8c395981c4635f69941f2b9303c798 (diff)
downloadchromium_src-ccac75726852954dbe516708c0b71d8e1e7e4fbb.zip
chromium_src-ccac75726852954dbe516708c0b71d8e1e7e4fbb.tar.gz
chromium_src-ccac75726852954dbe516708c0b71d8e1e7e4fbb.tar.bz2
implemented extensions api windows.update().
currently only supports {left, top, width, height}. Also, added extensions_api_client_unittest tests for CreateWindow, UpdateWindow & RemoveWindow BUG=11200 R=mpComplete Review URL: http://codereview.chromium.org/115316 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16029 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/extensions/extension_api_client_unittest.cc83
-rw-r--r--chrome/renderer/renderer_resources.grd2
-rw-r--r--chrome/renderer/resources/extension_process_bindings.js21
3 files changed, 104 insertions, 2 deletions
diff --git a/chrome/renderer/extensions/extension_api_client_unittest.cc b/chrome/renderer/extensions/extension_api_client_unittest.cc
index 6104bab..9689d95 100644
--- a/chrome/renderer/extensions/extension_api_client_unittest.cc
+++ b/chrome/renderer/extensions/extension_api_client_unittest.cc
@@ -172,6 +172,89 @@ TEST_F(ExtensionAPIClientTest, GetAllWindows) {
"GetAllWindows", "null");
}
+TEST_F(ExtensionAPIClientTest, CreateWindow) {
+ ExpectJsFail("chrome.windows.create({url: 1}, function(){});",
+ "Uncaught Error: Invalid value for argument 0. Property "
+ "'url': Expected 'string' but got 'integer'.");
+ ExpectJsFail("chrome.windows.create({left: 'foo'}, function(){});",
+ "Uncaught Error: Invalid value for argument 0. Property "
+ "'left': Expected 'integer' but got 'string'.");
+ ExpectJsFail("chrome.windows.create({top: 'foo'}, function(){});",
+ "Uncaught Error: Invalid value for argument 0. Property "
+ "'top': Expected 'integer' but got 'string'.");
+ ExpectJsFail("chrome.windows.create({width: 'foo'}, function(){});",
+ "Uncaught Error: Invalid value for argument 0. Property "
+ "'width': Expected 'integer' but got 'string'.");
+ ExpectJsFail("chrome.windows.create({height: 'foo'}, function(){});",
+ "Uncaught Error: Invalid value for argument 0. Property "
+ "'height': Expected 'integer' but got 'string'.");
+ ExpectJsFail("chrome.windows.create({foo: 42}, function(){});",
+ "Uncaught Error: Invalid value for argument 0. Property "
+ "'foo': Unexpected property.");
+
+ ExpectJsPass("chrome.windows.create({"
+ " url:'http://www.google.com/',"
+ " left:0,"
+ " top: 10,"
+ " width:100,"
+ " height:200"
+ "})",
+ "CreateWindow",
+ "{\"url\":\"http://www.google.com/\","
+ "\"left\":0,"
+ "\"top\":10,"
+ "\"width\":100,"
+ "\"height\":200}");
+}
+
+TEST_F(ExtensionAPIClientTest, UpdateWindow) {
+ ExpectJsFail("chrome.windows.update(null);",
+ "Uncaught Error: Parameter 0 is required.");
+ ExpectJsFail("chrome.windows.update(42, {left: 'foo'});",
+ "Uncaught Error: Invalid value for argument 1. Property "
+ "'left': Expected 'integer' but got 'string'.");
+ ExpectJsFail("chrome.windows.update(42, {top: 'foo'});",
+ "Uncaught Error: Invalid value for argument 1. Property "
+ "'top': Expected 'integer' but got 'string'.");
+ ExpectJsFail("chrome.windows.update(42, {height: false});",
+ "Uncaught Error: Invalid value for argument 1. Property "
+ "'height': Expected 'integer' but got 'boolean'.");
+ ExpectJsFail("chrome.windows.update(42, {width: false});",
+ "Uncaught Error: Invalid value for argument 1. Property "
+ "'width': Expected 'integer' but got 'boolean'.");
+ ExpectJsFail("chrome.windows.update(42, {foo: false});",
+ "Uncaught Error: Invalid value for argument 1. Property "
+ "'foo': Unexpected property.");
+
+ ExpectJsPass("chrome.windows.update(42, {"
+ " width:100,"
+ " height:200"
+ "})",
+ "UpdateWindow",
+ "[42,"
+ "{\"width\":100,"
+ "\"height\":200}]");
+}
+
+TEST_F(ExtensionAPIClientTest, RemoveWindow) {
+ ExpectJsFail("chrome.windows.remove(32, function(){}, 20);",
+ "Uncaught Error: Too many arguments.");
+
+ ExpectJsFail("chrome.windows.remove('abc', function(){});",
+ "Uncaught Error: Invalid value for argument 0. "
+ "Expected 'integer' but got 'string'.");
+
+ ExpectJsFail("chrome.windows.remove(1, 1);",
+ "Uncaught Error: Invalid value for argument 1. "
+ "Expected 'function' but got 'integer'.");
+
+ ExpectJsPass("chrome.windows.remove(2, function(){})",
+ "RemoveWindow", "2");
+
+ ExpectJsPass("chrome.windows.remove(2)",
+ "RemoveWindow", "2");
+}
+
// Tab API tests
TEST_F(ExtensionAPIClientTest, GetTab) {
diff --git a/chrome/renderer/renderer_resources.grd b/chrome/renderer/renderer_resources.grd
index c59e98c..cda253b 100644
--- a/chrome/renderer/renderer_resources.grd
+++ b/chrome/renderer/renderer_resources.grd
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This comment is only here because changes to resources are not picked up
-without changes to the corresponding grd file. -->
+without changes to the corresponding grd file. -->
<grit latest_public_release="0" current_release="1">
<outputs>
<output filename="grit/renderer_resources.h" type="rc_header">
diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js
index 8b17e63..3828ee2 100644
--- a/chrome/renderer/resources/extension_process_bindings.js
+++ b/chrome/renderer/resources/extension_process_bindings.js
@@ -14,6 +14,7 @@ var chrome;
native function GetCurrentWindow();
native function GetLastFocusedWindow();
native function CreateWindow();
+ native function UpdateWindow();
native function RemoveWindow();
native function GetAllWindows();
native function GetTab();
@@ -165,7 +166,25 @@ var chrome;
},
chrome.types.optFun
];
-
+
+ chrome.windows.update = function(windowId, updateData, callback) {
+ validate(arguments, arguments.callee.params);
+ sendRequest(UpdateWindow, [windowId, updateData], callback);
+ };
+ chrome.windows.update.params = [
+ chrome.types.pInt,
+ {
+ type: "object",
+ properties: {
+ left: chrome.types.optInt,
+ top: chrome.types.optInt,
+ width: chrome.types.optPInt,
+ height: chrome.types.optPInt
+ },
+ },
+ chrome.types.optFun
+ ];
+
chrome.windows.remove = function(windowId, callback) {
validate(arguments, arguments.callee.params);
sendRequest(RemoveWindow, windowId, callback);