diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-13 22:22:55 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-13 22:22:55 +0000 |
commit | 1307901f3bb5ab694530551f05e3898596acd854 (patch) | |
tree | 8a47789504223edce1995ee19afba3dcb7426f93 /chrome/browser/extensions/stubs_apitest.cc | |
parent | 95ff808aa05c3de690fed32e92a940a6877cd3ed (diff) | |
download | chromium_src-1307901f3bb5ab694530551f05e3898596acd854.zip chromium_src-1307901f3bb5ab694530551f05e3898596acd854.tar.gz chromium_src-1307901f3bb5ab694530551f05e3898596acd854.tar.bz2 |
Add stub functions for chrome.* APIs in content scripts.
Most of the extensions API is not supported in content scripts for security
purposes. Instead the typical pattern is to use messaging between content
scripts and a background page which executes them on behalf of the script.
This is not immediately obvious to many extension developers, so this
change adds an error message to help them better understand what's going on.
BUG=26128
TEST=Try writing a content script that uses some of the extensions API stuff
in chrome.tabs, chrome.windows, etc. You should see errors in the console
telling you that it isn't supported in content scripts.
Review URL: http://codereview.chromium.org/366024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31958 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/stubs_apitest.cc')
-rw-r--r-- | chrome/browser/extensions/stubs_apitest.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/chrome/browser/extensions/stubs_apitest.cc b/chrome/browser/extensions/stubs_apitest.cc new file mode 100644 index 0000000..4ba81c7 --- /dev/null +++ b/chrome/browser/extensions/stubs_apitest.cc @@ -0,0 +1,30 @@ +// Copyright (c) 2009 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 "chrome/browser/extensions/extension_apitest.h" +#include "chrome/common/chrome_paths.h" +#include "chrome/test/ui_test_utils.h" + +#if defined(OS_WIN) // TODO(asargent) get this working on linux +// Tests that we throw errors when you try using extension APIs that aren't +// supported in content scripts. +// +// If you have added a new API to extension_api.json and this test starts +// failing, most likely you need to either mark it as "unprivileged" (if it +// should be available in content scripts) or update the list of privileged APIs +// in renderer_extension_bindings.js. +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Stubs) { + ASSERT_TRUE(RunExtensionTest("stubs")) << message_; + + // Navigate to a simple file:// page, which should get the content script + // injected and run the rest of the test. + FilePath test_dir; + ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_dir)); + FilePath simple_html_path = test_dir.AppendASCII("simple.html"); + ui_test_utils::NavigateToURL(browser(), + GURL(simple_html_path.value())); + ResultCatcher catcher; + ASSERT_TRUE(catcher.GetNextResult()); +} +#endif |