Index: chrome/renderer/extensions/extension_api_client_unittest.cc |
diff --git a/chrome/renderer/extensions/extension_api_client_unittest.cc b/chrome/renderer/extensions/extension_api_client_unittest.cc |
index 6104bab3f6a9fc28011cd35429bc858043f998b4..9689d952bb05554f1266881fb28b4f7406c42735 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) { |