diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-14 01:19:38 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-14 01:19:38 +0000 |
commit | ccac75726852954dbe516708c0b71d8e1e7e4fbb (patch) | |
tree | 2f68fbb41a26cc6df5b133f6bc143f912b3d8468 /chrome/renderer | |
parent | f5a76ba53a8c395981c4635f69941f2b9303c798 (diff) | |
download | chromium_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.cc | 83 | ||||
-rw-r--r-- | chrome/renderer/renderer_resources.grd | 2 | ||||
-rw-r--r-- | chrome/renderer/resources/extension_process_bindings.js | 21 |
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); |