Commit 582f6e95 authored by sammc@chromium.org's avatar sammc@chromium.org

Move ModuleSystemTest and the tests that use it into extensions/.

Review URL: https://codereview.chromium.org/375243002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283580 0039d316-1c4b-4281-b951-d872f2087c98
parent 5748a598
......@@ -238,8 +238,6 @@
'test/base/history_index_restore_observer.h',
'test/base/in_process_browser_test.cc',
'test/base/in_process_browser_test.h',
'test/base/module_system_test.cc',
'test/base/module_system_test.h',
'test/base/profile_mock.cc',
'test/base/profile_mock.h',
'test/base/scoped_browser_locale.cc',
......@@ -600,7 +598,15 @@
'../extensions/common/url_pattern_unittest.cc',
'../extensions/common/user_script_unittest.cc',
'../extensions/renderer/activity_log_converter_strategy_unittest.cc',
'../extensions/renderer/event_unittest.cc',
'../extensions/renderer/json_schema_unittest.cc',
'../extensions/renderer/messaging_utils_unittest.cc',
'../extensions/renderer/module_system_test.cc',
'../extensions/renderer/module_system_test.h',
'../extensions/renderer/module_system_unittest.cc',
'../extensions/renderer/safe_builtins_unittest.cc',
'../extensions/renderer/script_context_set_unittest.cc',
'../extensions/renderer/utils_unittest.cc',
'app/chrome_dll.rc',
# All unittests in browser, common, renderer and service.
'browser/about_flags_unittest.cc',
......@@ -1912,14 +1918,8 @@
'common/worker_thread_ticker_unittest.cc',
'renderer/chrome_content_renderer_client_unittest.cc',
'renderer/content_settings_observer_unittest.cc',
'renderer/extensions/event_unittest.cc',
'renderer/extensions/extension_localization_peer_unittest.cc',
'renderer/extensions/json_schema_unittest.cc',
'renderer/extensions/messaging_utils_unittest.cc',
'renderer/extensions/module_system_unittest.cc',
'renderer/extensions/renderer_permissions_policy_delegate_unittest.cc',
'renderer/extensions/safe_builtins_unittest.cc',
'renderer/extensions/utils_unittest.cc',
'renderer/media/cast_ipc_dispatcher_unittest.cc',
'renderer/media/chrome_webrtc_log_message_delegate_unittest.cc',
'renderer/net/net_error_helper_core_unittest.cc',
......@@ -2150,13 +2150,8 @@
'browser/web_applications/web_app_unittest.cc',
'common/extensions/sync_type_unittest.cc',
'common/extensions/permissions/permission_set_unittest.cc',
'renderer/extensions/event_unittest.cc',
'renderer/extensions/extension_localization_peer_unittest.cc',
'renderer/extensions/json_schema_unittest.cc',
'renderer/extensions/messaging_utils_unittest.cc',
'renderer/extensions/module_system_unittest.cc',
'renderer/extensions/renderer_permissions_policy_delegate_unittest.cc',
'renderer/extensions/safe_builtins_unittest.cc',
],
}],
['use_ash==1', {
......
......@@ -693,9 +693,12 @@
'dependencies': [
'../base/base.gyp:base',
'../base/base.gyp:test_support_base',
'../content/content_shell_and_tests.gyp:test_support_content',
'../testing/gmock.gyp:gmock',
'../testing/gtest.gyp:gtest',
'extensions_common',
'extensions_renderer',
'extensions_resources.gyp:extensions_resources',
'extensions_strings.gyp:extensions_strings',
'extensions_test_support',
],
......@@ -707,6 +710,14 @@
'common/one_shot_event_unittest.cc',
'common/permissions/manifest_permission_set_unittest.cc',
'common/user_script_unittest.cc',
'renderer/event_unittest.cc',
'renderer/json_schema_unittest.cc',
'renderer/messaging_utils_unittest.cc',
'renderer/module_system_test.cc',
'renderer/module_system_test.h',
'renderer/module_system_unittest.cc',
'renderer/safe_builtins_unittest.cc',
'renderer/utils_unittest.cc',
'test/extensions_unittests_main.cc',
'test/test_extensions_client.cc',
'test/test_extensions_client.h',
......@@ -715,6 +726,19 @@
'test/test_permissions_provider.cc',
'test/test_permissions_provider.h',
],
'actions': [
{
'action_name': 'repack_components_pack',
'variables': {
'pak_inputs': [
'<(SHARED_INTERMEDIATE_DIR)/extensions/extensions_resources.pak',
'<(SHARED_INTERMEDIATE_DIR)/extensions/extensions_renderer_resources.pak',
],
'pak_output': '<(PRODUCT_DIR)/extensions_unittests_resources.pak',
},
'includes': [ '../build/repack_action.gypi' ],
},
],
},
]
}
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Copyright 2014 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/test/base/module_system_test.h"
#include "extensions/common/extension_urls.h"
#include "extensions/renderer/module_system_test.h"
#include "grit/extensions_renderer_resources.h"
namespace extensions {
......
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Copyright 2014 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/test/base/module_system_test.h"
#include "extensions/renderer/module_system_test.h"
#include "extensions/renderer/v8_schema_registry.h"
#include "grit/extensions_renderer_resources.h"
......
// Copyright 2013 The Chromium Authors. All rights reserved.
// Copyright 2014 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/strings/stringprintf.h"
#include "chrome/test/base/module_system_test.h"
#include "extensions/renderer/module_system_test.h"
#include "grit/extensions_renderer_resources.h"
namespace extensions {
......@@ -29,7 +29,6 @@ class MessagingUtilsUnittest : public ModuleSystemTest {
env()->RegisterModule("messaging_utils", IDR_MESSAGING_UTILS_JS);
}
};
TEST_F(MessagingUtilsUnittest, TestNothing) {
......
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Copyright 2014 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/test/base/module_system_test.h"
#include "extensions/renderer/module_system_test.h"
#include <map>
#include <string>
#include "base/callback.h"
#include "base/file_util.h"
......@@ -12,21 +15,14 @@
#include "base/path_service.h"
#include "base/stl_util.h"
#include "base/strings/string_piece.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "extensions/common/extension_paths.h"
#include "extensions/renderer/logging_native_handler.h"
#include "extensions/renderer/object_backed_native_handler.h"
#include "extensions/renderer/safe_builtins.h"
#include "extensions/renderer/utils_native_handler.h"
#include "ui/base/resource/resource_bundle.h"
#include <map>
#include <string>
using extensions::ModuleSystem;
using extensions::NativeHandler;
using extensions::ObjectBackedNativeHandler;
namespace extensions {
namespace {
class FailsOnException : public ModuleSystem::ExceptionHandler {
......@@ -39,10 +35,11 @@ class FailsOnException : public ModuleSystem::ExceptionHandler {
class V8ExtensionConfigurator {
public:
V8ExtensionConfigurator()
: safe_builtins_(extensions::SafeBuiltins::CreateV8Extension()),
: safe_builtins_(SafeBuiltins::CreateV8Extension()),
names_(1, safe_builtins_->name()),
configuration_(new v8::ExtensionConfiguration(
names_.size(), vector_as_array(&names_))) {
configuration_(
new v8::ExtensionConfiguration(static_cast<int>(names_.size()),
vector_as_array(&names_))) {
v8::RegisterExtension(safe_builtins_.get());
}
......@@ -65,14 +62,16 @@ base::LazyInstance<V8ExtensionConfigurator>::Leaky g_v8_extension_configurator =
class ModuleSystemTestEnvironment::AssertNatives
: public ObjectBackedNativeHandler {
public:
explicit AssertNatives(extensions::ChromeV8Context* context)
explicit AssertNatives(ScriptContext* context)
: ObjectBackedNativeHandler(context),
assertion_made_(false),
failed_(false) {
RouteFunction("AssertTrue", base::Bind(&AssertNatives::AssertTrue,
base::Unretained(this)));
RouteFunction("AssertFalse", base::Bind(&AssertNatives::AssertFalse,
base::Unretained(this)));
RouteFunction(
"AssertTrue",
base::Bind(&AssertNatives::AssertTrue, base::Unretained(this)));
RouteFunction(
"AssertFalse",
base::Bind(&AssertNatives::AssertFalse, base::Unretained(this)));
}
bool assertion_made() { return assertion_made_; }
......@@ -97,7 +96,7 @@ class ModuleSystemTestEnvironment::AssertNatives
// Source map that operates on std::strings.
class ModuleSystemTestEnvironment::StringSourceMap
: public extensions::ModuleSystem::SourceMap {
: public ModuleSystem::SourceMap {
public:
StringSourceMap() {}
virtual ~StringSourceMap() {}
......@@ -131,11 +130,10 @@ ModuleSystemTestEnvironment::ModuleSystemTestEnvironment(
context_holder_->SetContext(
v8::Context::New(isolate_holder->isolate(),
g_v8_extension_configurator.Get().GetConfiguration()));
context_.reset(new extensions::ChromeV8Context(
context_holder_->context(),
NULL, // WebFrame
NULL, // Extension
extensions::Feature::UNSPECIFIED_CONTEXT));
context_.reset(new ScriptContext(context_holder_->context(),
NULL, // WebFrame
NULL, // Extension
Feature::UNSPECIFIED_CONTEXT));
context_->v8_context()->Enter();
assert_natives_ = new AssertNatives(context_.get());
......@@ -145,12 +143,14 @@ ModuleSystemTestEnvironment::ModuleSystemTestEnvironment(
context_->set_module_system(module_system.Pass());
}
ModuleSystem* module_system = context_->module_system();
module_system->RegisterNativeHandler("assert", scoped_ptr<NativeHandler>(
assert_natives_));
module_system->RegisterNativeHandler("logging", scoped_ptr<NativeHandler>(
new extensions::LoggingNativeHandler(context_.get())));
module_system->RegisterNativeHandler("utils", scoped_ptr<NativeHandler>(
new extensions::UtilsNativeHandler(context_.get())));
module_system->RegisterNativeHandler(
"assert", scoped_ptr<NativeHandler>(assert_natives_));
module_system->RegisterNativeHandler(
"logging",
scoped_ptr<NativeHandler>(new LoggingNativeHandler(context_.get())));
module_system->RegisterNativeHandler(
"utils",
scoped_ptr<NativeHandler>(new UtilsNativeHandler(context_.get())));
module_system->SetExceptionHandlerForTest(
scoped_ptr<ModuleSystem::ExceptionHandler>(new FailsOnException));
}
......@@ -167,8 +167,9 @@ void ModuleSystemTestEnvironment::RegisterModule(const std::string& name,
void ModuleSystemTestEnvironment::RegisterModule(const std::string& name,
int resource_id) {
const std::string& code = ResourceBundle::GetSharedInstance().
GetRawDataResource(resource_id).as_string();
const std::string& code = ResourceBundle::GetSharedInstance()
.GetRawDataResource(resource_id)
.as_string();
source_map_->RegisterModule(name, code);
}
......@@ -183,9 +184,8 @@ void ModuleSystemTestEnvironment::RegisterTestFile(
const std::string& module_name,
const std::string& file_name) {
base::FilePath test_js_file_path;
ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_js_file_path));
test_js_file_path = test_js_file_path.AppendASCII("extensions")
.AppendASCII(file_name);
ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &test_js_file_path));
test_js_file_path = test_js_file_path.AppendASCII(file_name);
std::string test_js;
ASSERT_TRUE(base::ReadFileToString(test_js_file_path, &test_js));
source_map_->RegisterModule(module_name, test_js);
......@@ -237,3 +237,5 @@ void ModuleSystemTest::ExpectNoAssertionsMade() {
void ModuleSystemTest::RunResolvedPromises() {
isolate_holder_.isolate()->RunMicrotasks();
}
} // namespace extensions
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Copyright 2014 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.
#ifndef CHROME_TEST_BASE_MODULE_SYSTEM_TEST_H_
#define CHROME_TEST_BASE_MODULE_SYSTEM_TEST_H_
#ifndef EXTENSIONS_RENDERER_MODULE_SYSTEM_TEST_H_
#define EXTENSIONS_RENDERER_MODULE_SYSTEM_TEST_H_
#include "chrome/renderer/extensions/chrome_v8_context.h"
#include "extensions/renderer/module_system.h"
#include "extensions/renderer/scoped_persistent.h"
#include "extensions/renderer/script_context.h"
#include "gin/public/context_holder.h"
#include "gin/public/isolate_holder.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "v8/include/v8.h"
namespace extensions {
class ModuleSystemTestEnvironment {
public:
class AssertNatives;
......@@ -44,11 +46,9 @@ class ModuleSystemTestEnvironment {
void ShutdownModuleSystem();
extensions::ModuleSystem* module_system() {
return context_->module_system();
}
ModuleSystem* module_system() { return context_->module_system(); }
extensions::ChromeV8Context* context() { return context_.get(); }
ScriptContext* context() { return context_.get(); }
v8::Isolate* isolate() { return isolate_holder_->isolate(); }
......@@ -58,7 +58,7 @@ class ModuleSystemTestEnvironment {
gin::IsolateHolder* isolate_holder_;
scoped_ptr<gin::ContextHolder> context_holder_;
v8::HandleScope handle_scope_;
scoped_ptr<extensions::ChromeV8Context> context_;
scoped_ptr<ScriptContext> context_;
AssertNatives* assert_natives_;
scoped_ptr<StringSourceMap> source_map_;
......@@ -77,8 +77,6 @@ class ModuleSystemTestEnvironment {
//
// By default a test will fail if no method in the native module 'assert' is
// called. This behaviour can be overridden by calling ExpectNoAssertionsMade().
//
// TODO(kalman): move this back into chrome/renderer/extensions.
class ModuleSystemTest : public testing::Test {
public:
ModuleSystemTest();
......@@ -108,4 +106,6 @@ class ModuleSystemTest : public testing::Test {
DISALLOW_COPY_AND_ASSIGN(ModuleSystemTest);
};
#endif // CHROME_TEST_BASE_MODULE_SYSTEM_TEST_H_
} // namespace extensions
#endif // EXTENSIONS_RENDERER_MODULE_SYSTEM_TEST_H_
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Copyright 2014 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/memory/scoped_ptr.h"
#include "chrome/test/base/module_system_test.h"
#include "extensions/renderer/module_system.h"
#include "extensions/renderer/module_system_test.h"
#include "gin/modules/module_registry.h"
// TODO(cduvall/kalman): Put this file in extensions namespace.
using extensions::ModuleSystem;
using extensions::NativeHandler;
using extensions::ObjectBackedNativeHandler;
namespace extensions {
class CounterNatives : public ObjectBackedNativeHandler {
public:
explicit CounterNatives(extensions::ChromeV8Context* context)
explicit CounterNatives(ScriptContext* context)
: ObjectBackedNativeHandler(context), counter_(0) {
RouteFunction("Get", base::Bind(&CounterNatives::Get,
base::Unretained(this)));
RouteFunction("Increment", base::Bind(&CounterNatives::Increment,
base::Unretained(this)));
RouteFunction("Get",
base::Bind(&CounterNatives::Get, base::Unretained(this)));
RouteFunction(
"Increment",
base::Bind(&CounterNatives::Increment, base::Unretained(this)));
}
void Get(const v8::FunctionCallbackInfo<v8::Value>& args) {
......@@ -36,9 +34,7 @@ class CounterNatives : public ObjectBackedNativeHandler {
class TestExceptionHandler : public ModuleSystem::ExceptionHandler {
public:
TestExceptionHandler()
: handled_exception_(false) {
}
TestExceptionHandler() : handled_exception_(false) {}
virtual void HandleUncaughtException(const v8::TryCatch& try_catch) OVERRIDE {
handled_exception_ = true;
......@@ -487,3 +483,5 @@ TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleSystem) {
env()->module_system()->Require("test");
RunResolvedPromises();
}
} // namespace extensions
// Copyright 2013 The Chromium Authors. All rights reserved.
// Copyright 2014 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/test/base/module_system_test.h"
#include "extensions/renderer/module_system_test.h"
namespace extensions {
namespace {
class SafeBuiltinsUnittest : public ModuleSystemTest {
};
class SafeBuiltinsUnittest : public ModuleSystemTest {};
TEST_F(SafeBuiltinsUnittest, TestNotOriginalObject) {
ModuleSystem::NativesEnabledScope natives_enabled_scope(
......
......@@ -3,7 +3,7 @@
// found in the LICENSE file.
#include "base/strings/stringprintf.h"
#include "chrome/test/base/module_system_test.h"
#include "extensions/renderer/module_system_test.h"
#include "grit/extensions_renderer_resources.h"
namespace extensions {
......
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Copyright 2014 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.
......
......@@ -2,11 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/base_paths.h"
#include "base/bind.h"
#include "base/macros.h"
#include "base/path_service.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/test/test_suite.h"
#include "content/public/test/unittest_test_suite.h"
#include "extensions/common/extension_paths.h"
#include "extensions/test/test_extensions_client.h"
#include "ui/base/resource/resource_bundle.h"
namespace {
......@@ -30,21 +35,29 @@ ExtensionsTestSuite::ExtensionsTestSuite(int argc, char** argv)
void ExtensionsTestSuite::Initialize() {
base::TestSuite::Initialize();
extensions::RegisterPathProvider();
base::FilePath resources_pack_path;
PathService::Get(base::DIR_MODULE, &resources_pack_path);
ResourceBundle::InitSharedInstanceWithPakPath(
resources_pack_path.AppendASCII("extensions_unittests_resources.pak"));
client_.reset(new extensions::TestExtensionsClient());
extensions::ExtensionsClient::Set(client_.get());
}
void ExtensionsTestSuite::Shutdown() {
ResourceBundle::CleanupSharedInstance();
base::TestSuite::Shutdown();
}
} // namespace
int main(int argc, char** argv) {
ExtensionsTestSuite test_suite(argc, argv);
content::UnitTestTestSuite test_suite(new ExtensionsTestSuite(argc, argv));
return base::LaunchUnitTests(argc,
argv,
base::Bind(&ExtensionsTestSuite::Run,
base::Bind(&content::UnitTestTestSuite::Run,
base::Unretained(&test_suite)));
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment