summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/extensions
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-16 09:20:28 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-16 09:20:28 +0000
commitf4cc950d44556a73f04b7c81712c41583193fb7d (patch)
tree202670113e74ed54fbb266fdd83349571f524d21 /chrome/renderer/extensions
parent09e259ea88cfd7f23709a299efa5054dbfc9a8e5 (diff)
downloadchromium_src-f4cc950d44556a73f04b7c81712c41583193fb7d.zip
chromium_src-f4cc950d44556a73f04b7c81712c41583193fb7d.tar.gz
chromium_src-f4cc950d44556a73f04b7c81712c41583193fb7d.tar.bz2
Remove ExtensionAPIClient tests. These have been superceded
for the most part by the extension api tests. BUG=34994,43775,46217,22248 Review URL: http://codereview.chromium.org/2847008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49911 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/extensions')
-rw-r--r--chrome/renderer/extensions/extension_api_client_unittest.cc740
1 files changed, 0 insertions, 740 deletions
diff --git a/chrome/renderer/extensions/extension_api_client_unittest.cc b/chrome/renderer/extensions/extension_api_client_unittest.cc
deleted file mode 100644
index 632557b..0000000
--- a/chrome/renderer/extensions/extension_api_client_unittest.cc
+++ /dev/null
@@ -1,740 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/file_util.h"
-#include "base/json/json_reader.h"
-#include "base/json/json_writer.h"
-#include "base/path_service.h"
-#include "base/string_util.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/render_messages.h"
-#include "chrome/renderer/extensions/extension_process_bindings.h"
-#include "chrome/renderer/extensions/renderer_extension_bindings.h"
-#include "chrome/test/render_view_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-// Make failures easier to locate by using SCOPED_TRACE() to print out the line
-// number of a failing call to ExtensionAPIClientTest::ExpectJs(Pass|Fail) .
-// Sadly, a #define is the only reasonable way to get the line number.
-#define ExpectJsFail(js, expected_failure_message) { \
- SCOPED_TRACE(js); \
- ExpectJsFailInternal(js, expected_failure_message); \
-}
-
-#define ExpectJsPass(js, function, arg1) { \
- SCOPED_TRACE(js); \
- ExpectJsPassInternal(js, function, arg1); \
-}
-
-class ExtensionAPIClientTest : public RenderViewTest {
- protected:
- virtual void SetUp() {
- RenderViewTest::SetUp();
-
- render_thread_.SetExtensionProcess(true);
- render_thread_.sink().ClearMessages();
- LoadHTML("<body></body>");
- }
-
- std::string GetConsoleMessage() {
- const IPC::Message* message =
- render_thread_.sink().GetUniqueMessageMatching(
- ViewHostMsg_AddMessageToConsole::ID);
- ViewHostMsg_AddMessageToConsole::Param params;
- if (message) {
- ViewHostMsg_AddMessageToConsole::Read(message, &params);
- render_thread_.sink().ClearMessages();
- return WideToASCII(params.a);
- } else {
- return "";
- }
- }
-
- // Don't call this directly. Use the macro ExpectJsFail.
- void ExpectJsFailInternal(const std::string& js, const std::string& message) {
- ExecuteJavaScript(js.c_str());
- EXPECT_EQ(message, GetConsoleMessage());
- render_thread_.sink().ClearMessages();
- }
-
- // Don't call this directly. Use the macro ExpectJsPass.
- void ExpectJsPassInternal(const std::string& js,
- const std::string& function,
- const std::string& arg1) {
- ExecuteJavaScript(js.c_str());
- const IPC::Message* request_msg =
- render_thread_.sink().GetUniqueMessageMatching(
- ViewHostMsg_ExtensionRequest::ID);
- ASSERT_EQ("", GetConsoleMessage()) << js;
- ASSERT_TRUE(request_msg) << js;
- ViewHostMsg_ExtensionRequest::Param params;
- ViewHostMsg_ExtensionRequest::Read(request_msg, &params);
- ASSERT_EQ(function.c_str(), params.a) << js;
-
- ASSERT_TRUE(params.b.IsType(Value::TYPE_LIST));
- ListValue* args = &params.b;
-
- base::JSONReader reader;
- scoped_ptr<Value> arg1_value(reader.JsonToValue(arg1, false, false));
- ASSERT_TRUE(arg1_value.get())
- << "Failed to parse expected result as JSON: " << arg1;
-
- std::string args_as_string;
- base::JSONWriter::Write(args, false, &args_as_string);
-
- ASSERT_TRUE(args->Equals(arg1_value.get()))
- << js
- << "\n Expected "<< arg1
- << "\n Actual: "<< args_as_string;
- render_thread_.sink().ClearMessages();
- }
-};
-
-// Tests that callback dispatching works correctly and that JSON is properly
-// deserialized before handing off to the extension code. We use the createTab
-// API here, but we could use any of them since they all dispatch callbacks the
-// same way.
-TEST_F(ExtensionAPIClientTest, CallbackDispatching) {
- ExecuteJavaScript(
- "function assert(truth, message) {"
- " if (!truth) {"
- " throw new Error(message);"
- " }"
- "}"
- "function callback(result) {"
- " assert(typeof result == 'object', 'result not object');"
- " assert(JSON.stringify(result) == '{\"id\":1,\"index\":1,\"windowId\":1,"
- "\"selected\":true,\"incognito\":false,"
- "\"url\":\"http://www.google.com/\"}',"
- " 'incorrect result');"
- " console.log('pass')"
- "}"
- "chrome.tabs.create({}, callback);"
- );
-
- EXPECT_EQ("", GetConsoleMessage());
-
- // Ok, we should have gotten a message to create a tab, grab the callback ID.
- const IPC::Message* request_msg =
- render_thread_.sink().GetUniqueMessageMatching(
- ViewHostMsg_ExtensionRequest::ID);
- ASSERT_TRUE(request_msg);
- ViewHostMsg_ExtensionRequest::Param params;
- ViewHostMsg_ExtensionRequest::Read(request_msg, &params);
- int callback_id = params.d;
- ASSERT_GE(callback_id, 0);
-
- // Now send the callback a response
- ExtensionProcessBindings::HandleResponse(
- callback_id, true, "{\"id\":1,\"index\":1,\"windowId\":1,\"selected\":true,"
- "\"incognito\":false,\"url\":\"http://www.google.com/\"}", "");
-
- // And verify that it worked
- ASSERT_EQ("pass", GetConsoleMessage());
-}
-
-// The remainder of these tests exercise the client side of the various
-// extension functions. We test both error and success conditions, but do not
-// test errors exhaustively as json schema code is well tested by itself.
-
-// Window API tests
-
-TEST_F(ExtensionAPIClientTest, GetWindow) {
- ExpectJsFail("chrome.windows.get(32, function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.windows.get(32);",
- "Uncaught Error: Parameter 1 is required.");
-
- ExpectJsFail("chrome.windows.get('abc', function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'string'.");
-
- ExpectJsFail("chrome.windows.get(1, 1);",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-
- ExpectJsPass("chrome.windows.get(2, function(){})",
- "windows.get", "[2]");
-}
-
-// This test flakily crashes (http://crbug.com/22248)
-TEST_F(ExtensionAPIClientTest, DISABLED_GetCurrentWindow) {
- ExpectJsFail("chrome.windows.getCurrent(function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.windows.getCurrent();",
- "Uncaught Error: Parameter 0 is required.");
-
- ExpectJsFail("chrome.windows.getCurrent('abc');",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'function' but got 'string'.");
-
- ExpectJsPass("chrome.windows.getCurrent(function(){})",
- "windows.getCurrent", "null");
-}
-
-// This test flakily crashes (http://crbug.com/22248)
-TEST_F(ExtensionAPIClientTest, DISABLED_GetLastFocusedWindow) {
- ExpectJsFail("chrome.windows.getLastFocused(function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.windows.getLastFocused();",
- "Uncaught Error: Parameter 0 is required.");
-
- ExpectJsFail("chrome.windows.getLastFocused('abc');",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'function' but got 'string'.");
-
- ExpectJsPass("chrome.windows.getLastFocused(function(){})",
- "windows.getLastFocused", "null");
-}
-
-// This test flakily crashes (http://crbug.com/22248)
-TEST_F(ExtensionAPIClientTest, DISABLED_GetAllWindows) {
- ExpectJsFail("chrome.windows.getAll({populate: true}, function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.windows.getAll(1, function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'object' but got 'integer'.");
-
- ExpectJsPass("chrome.windows.getAll({populate:true}, function(){})",
- "windows.getAll", "{\"populate\":true}");
-
- ExpectJsPass("chrome.windows.getAll(null, function(){})",
- "windows.getAll", "null");
-
- ExpectJsPass("chrome.windows.getAll({}, function(){})",
- "windows.getAll", "{}");
-
- ExpectJsPass("chrome.windows.getAll(undefined, function(){})",
- "windows.getAll", "null");
-}
-
-// Flaky on Windows. http://crosbug.com/46217
-#if defined(OS_WIN)
-#define MAYBE_CreateWindow FLAKY_CreateWindow
-#else
-#define MAYBE_CreateWindow CreateWindow
-#endif
-TEST_F(ExtensionAPIClientTest, MAYBE_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"
- "})",
- "windows.create",
- "[{\"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"
- "})",
- "windows.update",
- "[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(){})",
- "windows.remove", "[2]");
-
- ExpectJsPass("chrome.windows.remove(2)",
- "windows.remove", "[2]");
-}
-
-// Tab API tests
-
-TEST_F(ExtensionAPIClientTest, GetTab) {
- ExpectJsFail("chrome.tabs.get(32, function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.tabs.get(32);",
- "Uncaught Error: Parameter 1 is required.");
-
- ExpectJsFail("chrome.tabs.get('abc', function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'string'.");
-
- ExpectJsFail("chrome.tabs.get(1, 1);",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-
- ExpectJsPass("chrome.tabs.get(2, function(){})",
- "tabs.get", "[2]");
-}
-
-TEST_F(ExtensionAPIClientTest, GetCurrentTab) {
- ExpectJsFail("chrome.tabs.getCurrent(function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.tabs.getCurrent();",
- "Uncaught Error: Parameter 0 is required.");
-
- ExpectJsFail("chrome.tabs.getCurrent('abc');",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'function' but got 'string'.");
-
- ExpectJsPass("chrome.tabs.getCurrent(function(){})",
- "tabs.getCurrent", "[]");
-}
-
-TEST_F(ExtensionAPIClientTest, DetectTabLanguage) {
- ExpectJsFail("chrome.tabs.detectLanguage(32, function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.tabs.detectLanguage('abc', function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'string'.");
-
- ExpectJsFail("chrome.tabs.detectLanguage(1, 1);",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-
- ExpectJsPass("chrome.tabs.detectLanguage(null, function(){})",
- "tabs.detectLanguage", "[null]");
-}
-
-TEST_F(ExtensionAPIClientTest, GetSelectedTab) {
- ExpectJsFail("chrome.tabs.getSelected(32, function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.tabs.getSelected(32);",
- "Uncaught Error: Parameter 1 is required.");
-
- ExpectJsFail("chrome.tabs.getSelected('abc', function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'string'.");
-
- ExpectJsFail("chrome.tabs.getSelected(1, 1);",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-
- ExpectJsPass("chrome.tabs.getSelected(2, function(){})",
- "tabs.getSelected", "[2]");
-
- ExpectJsPass("chrome.tabs.getSelected(null, function(){})",
- "tabs.getSelected", "[null]");
-}
-
-
-TEST_F(ExtensionAPIClientTest, GetAllTabsInWindow) {
- ExpectJsFail("chrome.tabs.getAllInWindow(42, function(){}, 'asd');",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.tabs.getAllInWindow(32);",
- "Uncaught Error: Parameter 1 is required.");
-
- ExpectJsFail("chrome.tabs.getAllInWindow(1, 1);",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-
- ExpectJsFail("chrome.tabs.getAllInWindow('asd', function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'string'.");
-
- ExpectJsPass("chrome.tabs.getAllInWindow(32, function(){})",
- "tabs.getAllInWindow", "[32]");
-
- ExpectJsPass("chrome.tabs.getAllInWindow(undefined, function(){})",
- "tabs.getAllInWindow", "[null]");
-}
-
-TEST_F(ExtensionAPIClientTest, CreateTab) {
- ExpectJsFail("chrome.tabs.create({windowId: 'foo'}, function(){});",
- "Uncaught Error: Invalid value for argument 0. Property "
- "'windowId': Expected 'integer' but got 'string'.");
- ExpectJsFail("chrome.tabs.create({url: 42}, function(){});",
- "Uncaught Error: Invalid value for argument 0. Property "
- "'url': Expected 'string' but got 'integer'.");
- ExpectJsFail("chrome.tabs.create({foo: 42}, function(){});",
- "Uncaught Error: Invalid value for argument 0. Property "
- "'foo': Unexpected property.");
-
- ExpectJsPass("chrome.tabs.create({"
- " url:'http://www.google.com/',"
- " selected:true,"
- " index: 2,"
- " windowId:4"
- "})",
- "tabs.create",
- "[{\"url\":\"http://www.google.com/\","
- "\"selected\":true,"
- "\"index\":2,"
- "\"windowId\":4}]");
-}
-
-TEST_F(ExtensionAPIClientTest, UpdateTab) {
- ExpectJsFail("chrome.tabs.update(null);",
- "Uncaught Error: Parameter 0 is required.");
- ExpectJsFail("chrome.tabs.update(42, {selected: 'foo'});",
- "Uncaught Error: Invalid value for argument 1. Property "
- "'selected': Expected 'boolean' but got 'string'.");
- ExpectJsFail("chrome.tabs.update(42, {url: 42});",
- "Uncaught Error: Invalid value for argument 1. Property "
- "'url': Expected 'string' but got 'integer'.");
-
- ExpectJsPass("chrome.tabs.update(42, {"
- " url:'http://www.google.com/',"
- " selected:true"
- "})",
- "tabs.update",
- "[42,"
- "{\"url\":\"http://www.google.com/\","
- "\"selected\":true}]");
-}
-
-TEST_F(ExtensionAPIClientTest, MoveTab) {
- ExpectJsFail("chrome.tabs.move(null);",
- "Uncaught Error: Parameter 0 is required.");
- ExpectJsFail("chrome.tabs.move(42, {index: 'foo'});",
- "Uncaught Error: Invalid value for argument 1. Property "
- "'index': Expected 'integer' but got 'string'.");
- ExpectJsFail("chrome.tabs.move(42, {index: 3, windowId: 'foo'});",
- "Uncaught Error: Invalid value for argument 1. Property "
- "'windowId': Expected 'integer' but got 'string'.");
-
- ExpectJsPass("chrome.tabs.move(42, {"
- " index:3,"
- " windowId:21"
- "})",
- "tabs.move",
- "[42,"
- "{\"index\":3,"
- "\"windowId\":21}]");
-}
-
-TEST_F(ExtensionAPIClientTest, RemoveTab) {
- ExpectJsFail("chrome.tabs.remove(32, function(){}, 20);",
- "Uncaught Error: Too many arguments.");
-
-
- ExpectJsFail("chrome.tabs.remove('abc', function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'string'.");
-
- ExpectJsFail("chrome.tabs.remove(1, 1);",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-
- ExpectJsPass("chrome.tabs.remove(2, function(){})",
- "tabs.remove", "[2]");
-
- ExpectJsPass("chrome.tabs.remove(2)",
- "tabs.remove", "[2]");
-}
-
-TEST_F(ExtensionAPIClientTest, CaptureVisibleTab) {
- ExpectJsFail("chrome.tabs.captureVisibleTab(0);",
- "Uncaught Error: Parameter 2 is required.");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab(0, null);",
- "Uncaught Error: Parameter 2 is required.");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab(null, {});",
- "Uncaught Error: Parameter 2 is required.");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab(function(){}, 0)",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'integer' but got 'function'.");
-
- // Use old signiture. Check that a null value of the options paramenter
- // is added.
- ExpectJsPass("chrome.tabs.captureVisibleTab(null, function(img){});",
- "tabs.captureVisibleTab", "[null, null]");
-
- ExpectJsPass("chrome.tabs.captureVisibleTab(1, function(img){});",
- "tabs.captureVisibleTab", "[1, null]");
-
- ExpectJsPass("chrome.tabs.captureVisibleTab(null, null, function(img){});",
- "tabs.captureVisibleTab", "[null, null]");
-
- ExpectJsPass("chrome.tabs.captureVisibleTab("
- "null, undefined, function(img){});",
- "tabs.captureVisibleTab", "[null, null]");
-
- ExpectJsPass("chrome.tabs.captureVisibleTab(null, {}, function(img){});",
- "tabs.captureVisibleTab", "[null, {}]");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab(null, 42, function(img){});",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'object' but got 'integer'.");
-
- ExpectJsPass("chrome.tabs.captureVisibleTab("
- "null, {\"format\": \"jpeg\"}, function(img){});",
- "tabs.captureVisibleTab", "[null, {\"format\": \"jpeg\"}]");
-
- ExpectJsPass("chrome.tabs.captureVisibleTab("
- "null, {\"quality\": 100}, function(img){});",
- "tabs.captureVisibleTab", "[null, {\"quality\": 100}]");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab("
- "null, {\"quality\": 101}, function(img){});",
- "Uncaught Error: Invalid value for argument 1. "
- "Property 'quality': Value must not be greater than 100.");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab("
- "null, {'not_a_param': 'jpeg'}, function(img){});",
- "Uncaught Error: Invalid value for argument 1. "
- "Property 'not_a_param': Unexpected property.");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab("
- "null, {'format': 'invalid'}, function(img){});",
- "Uncaught Error: Invalid value for argument 1. "
- "Property 'format': Value must be one of: [jpeg, png].");
-
- ExpectJsFail("chrome.tabs.captureVisibleTab("
- "null, {'format': 42}, function(img){});",
- "Uncaught Error: Invalid value for argument 1. "
- "Property 'format': Value must be one of: [jpeg, png].");
-}
-
-// Bookmark API tests
-// TODO(erikkay) add more variations here
-
-TEST_F(ExtensionAPIClientTest, CreateBookmark) {
- ExpectJsFail(
- "chrome.bookmarks.create({parentId:0, title:0}, function(){})",
- "Uncaught Error: Invalid value for argument 0. "
- "Property 'parentId': Expected 'string' but got 'integer', "
- "Property 'title': Expected 'string' but got 'integer'.");
-
- ExpectJsPass(
- "chrome.bookmarks.create({parentId:'0', title:'x'}, function(){})",
- "bookmarks.create",
- "[{\"parentId\":\"0\",\"title\":\"x\"}]");
-}
-
-TEST_F(ExtensionAPIClientTest, GetBookmarks) {
- ExpectJsPass("chrome.bookmarks.get('0', function(){});",
- "bookmarks.get",
- "[\"0\"]");
- ExpectJsPass("chrome.bookmarks.get(['0','1','2','3'], function(){});",
- "bookmarks.get",
- "[[\"0\",\"1\",\"2\",\"3\"]]");
- ExpectJsFail("chrome.bookmarks.get(null, function(){});",
- "Uncaught Error: Parameter 0 is required.");
- // TODO(erikkay) This is succeeding, when it should fail.
- // BUG=13719
-#if 0
- ExpectJsFail("chrome.bookmarks.get({}, function(){});",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'array' but got 'object'.");
-#endif
-}
-
-TEST_F(ExtensionAPIClientTest, GetBookmarkChildren) {
- ExpectJsPass("chrome.bookmarks.getChildren('42', function(){});",
- "bookmarks.getChildren",
- "[\"42\"]");
-}
-
-TEST_F(ExtensionAPIClientTest, GetBookmarkRecent) {
- ExpectJsPass("chrome.bookmarks.getRecent(5, function(){});",
- "bookmarks.getRecent",
- "[5]");
-}
-
-TEST_F(ExtensionAPIClientTest, GetBookmarkTree) {
- ExpectJsPass("chrome.bookmarks.getTree(function(){});",
- "bookmarks.getTree",
- "[]");
-}
-
-TEST_F(ExtensionAPIClientTest, SearchBookmarks) {
- ExpectJsPass("chrome.bookmarks.search('hello',function(){});",
- "bookmarks.search",
- "[\"hello\"]");
-}
-
-TEST_F(ExtensionAPIClientTest, RemoveBookmark) {
- ExpectJsPass("chrome.bookmarks.remove('42');",
- "bookmarks.remove",
- "[\"42\"]");
-}
-
-TEST_F(ExtensionAPIClientTest, RemoveBookmarkTree) {
- ExpectJsPass("chrome.bookmarks.removeTree('42');",
- "bookmarks.removeTree",
- "[\"42\"]");
-}
-
-TEST_F(ExtensionAPIClientTest, MoveBookmark) {
- ExpectJsPass("chrome.bookmarks.move('42',{parentId:'1',index:0});",
- "bookmarks.move",
- "[\"42\",{\"parentId\":\"1\",\"index\":0}]");
-}
-
-TEST_F(ExtensionAPIClientTest, SetBookmarkTitle) {
- ExpectJsPass("chrome.bookmarks.update('42',{title:'x'});",
- "bookmarks.update",
- "[\"42\",{\"title\":\"x\"}]");
-}
-
-TEST_F(ExtensionAPIClientTest, EnablePageAction) {
- // Basic old-school enablePageAction call.
- ExpectJsPass("chrome.pageActions.enableForTab("
- "'dummy', {tabId: 0, url: 'http://foo/'});",
- "pageActions.enableForTab",
- "[\"dummy\",{\"tabId\":0,\"url\":\"http://foo/\"}]");
- // Try both optional parameters (title and iconId).
- ExpectJsPass("chrome.pageActions.enableForTab("
- "'dummy', {tabId: 0, url: 'http://foo/',"
- "title: 'a', iconId: 0});",
- "pageActions.enableForTab",
- "[\"dummy\",{\"tabId\":0,\"url\":\"http://foo/\","
- "\"title\":\"a\",\"iconId\":0}]");
-
- // Now try disablePageAction.
- ExpectJsPass("chrome.pageActions.disableForTab("
- "'dummy', {tabId: 0, url: 'http://foo/'});",
- "pageActions.disableForTab",
- "[\"dummy\",{\"tabId\":0,\"url\":\"http://foo/\"}]");
-}
-
-TEST_F(ExtensionAPIClientTest, ExpandToolstrip) {
- ExpectJsPass("chrome.toolstrip.expand({height:100, url:'http://foo/'})",
- "toolstrip.expand",
- "[{\"height\":100,\"url\":\"http://foo/\"}]");
- ExpectJsPass("chrome.toolstrip.expand({height:100}, null)",
- "toolstrip.expand",
- "[{\"height\":100}]");
- ExpectJsPass("chrome.toolstrip.expand({height:100,url:'http://foo/'}, "
- "function(){})",
- "toolstrip.expand",
- "[{\"height\":100,\"url\":\"http://foo/\"}]");
-
-
- ExpectJsFail("chrome.toolstrip.expand()",
- "Uncaught Error: Parameter 0 is required.");
- ExpectJsFail("chrome.toolstrip.expand(1)",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'object' but got 'integer'.");
- ExpectJsFail("chrome.toolstrip.expand({height:'100', url:'http://foo/'})",
- "Uncaught Error: Invalid value for argument 0. "
- "Property 'height': "
- "Expected 'integer' but got 'string'.");
- ExpectJsFail("chrome.toolstrip.expand({height:100,url:100})",
- "Uncaught Error: Invalid value for argument 0. Property 'url': "
- "Expected 'string' but got 'integer'.");
- ExpectJsFail("chrome.toolstrip.expand({height:100,'url':'http://foo/'}, 32)",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-}
-
-TEST_F(ExtensionAPIClientTest, CollapseToolstrip) {
- ExpectJsPass("chrome.toolstrip.collapse({url:'http://foo/'})",
- "toolstrip.collapse",
- "[{\"url\":\"http://foo/\"}]");
- ExpectJsPass("chrome.toolstrip.collapse(null)",
- "toolstrip.collapse",
- "[null]");
- ExpectJsPass("chrome.toolstrip.collapse({url:'http://foo/'}, function(){})",
- "toolstrip.collapse",
- "[{\"url\":\"http://foo/\"}]");
-
- ExpectJsFail("chrome.toolstrip.collapse(1)",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'object' but got 'integer'.");
- ExpectJsFail("chrome.toolstrip.collapse(100)",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'object' but got 'integer'.");
- ExpectJsFail("chrome.toolstrip.collapse({url:'http://foo/'}, 32)",
- "Uncaught Error: Invalid value for argument 1. "
- "Expected 'function' but got 'integer'.");
-}
-
-// I18N API
-TEST_F(ExtensionAPIClientTest, GetAcceptLanguages) {
- ExpectJsFail("chrome.i18n.getAcceptLanguages(32, function(){})",
- "Uncaught Error: Too many arguments.");
-
- ExpectJsFail("chrome.i18n.getAcceptLanguages()",
- "Uncaught Error: Parameter 0 is required.");
-
- ExpectJsFail("chrome.i18n.getAcceptLanguages('abc')",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'function' but got 'string'.");
-
- ExpectJsPass("chrome.i18n.getAcceptLanguages(function(){})",
- "i18n.getAcceptLanguages", "[]");
-}
-
-// TODO(cira): re-enable when we get validation going for
-// renderer_process_bindings.js
-TEST_F(ExtensionAPIClientTest, DISABLED_GetL10nMessage) {
- ExpectJsFail("chrome.i18n.getMessage()",
- "Uncaught Error: Parameter 0 is required.");
-
- ExpectJsFail("chrome.i18n.getMessage(1)",
- "Uncaught Error: Invalid value for argument 0. "
- "Expected 'string' but got 'integer'.");
-
- ExpectJsFail("chrome.i18n.getMessage('name', [])",
- "Uncaught Error: Invalid value for argument 1. Value does not "
- "match any valid type choices.");
-
- ExpectJsFail("chrome.i18n.getMessage('name', ['p1', 'p2', 'p3', 'p4', 'p5', "
- "'p6', 'p7', 'p8', 'p9', 'p10'])",
- "Uncaught Error: Invalid value for argument 1. Value does not "
- "match any valid type choices.");
-}