Index: extensions/renderer/api_bindings_system_unittest.cc |
diff --git a/extensions/renderer/api_bindings_system_unittest.cc b/extensions/renderer/api_bindings_system_unittest.cc |
index c5046ea5ea0261d2c29a13b5953130d8c4b72268..d9de2d47e3e97acb0599ba4fcee1aff440b204bf 100644 |
--- a/extensions/renderer/api_bindings_system_unittest.cc |
+++ b/extensions/renderer/api_bindings_system_unittest.cc |
@@ -13,9 +13,9 @@ |
#include "extensions/common/extension_api.h" |
#include "extensions/renderer/api_binding.h" |
#include "extensions/renderer/api_binding_hooks.h" |
-#include "extensions/renderer/api_binding_test.h" |
#include "extensions/renderer/api_binding_test_util.h" |
#include "extensions/renderer/api_binding_types.h" |
+#include "extensions/renderer/api_bindings_system_unittest.h" |
#include "gin/arguments.h" |
#include "gin/converter.h" |
#include "gin/try_catch.h" |
@@ -92,121 +92,100 @@ bool AllowAllAPIs(const std::string& name) { |
} // namespace |
-// The base class to test the APIBindingsSystem. This allows subclasses to |
-// retrieve API schemas differently. |
-class APIBindingsSystemTest : public APIBindingTest { |
- public: |
- // Returns the DictionaryValue representing the schema with the given API |
- // name. |
- const base::DictionaryValue& GetAPISchema(const std::string& api_name) { |
- EXPECT_TRUE(base::ContainsKey(api_schemas_, api_name)); |
- return *api_schemas_[api_name]; |
- } |
+APIBindingsSystemTest::APIBindingsSystemTest() {} |
+APIBindingsSystemTest::~APIBindingsSystemTest() = default; |
- // Stores the request in |last_request_|. |
- void OnAPIRequest(std::unique_ptr<APIRequestHandler::Request> request, |
- v8::Local<v8::Context> context) { |
- ASSERT_FALSE(last_request_); |
- last_request_ = std::move(request); |
- } |
+void APIBindingsSystemTest::SetUp() { |
+ APIBindingTest::SetUp(); |
- void OnEventListenersChanged(const std::string& event_name, |
- binding::EventListenersChanged changed, |
- v8::Local<v8::Context> context) {} |
- |
- protected: |
- APIBindingsSystemTest() {} |
- void SetUp() override { |
- APIBindingTest::SetUp(); |
- |
- // Create the fake API schemas. |
- { |
- struct APIData { |
- const char* name; |
- const char* spec; |
- } api_data[] = { |
- {kAlphaAPIName, kAlphaAPISpec}, |
- {kBetaAPIName, kBetaAPISpec}, |
- {kGammaAPIName, kGammaAPISpec}, |
- }; |
- for (const auto& api : api_data) { |
- std::unique_ptr<base::DictionaryValue> api_schema = |
- DictionaryValueFromString(api.spec); |
- ASSERT_TRUE(api_schema); |
- api_schemas_[api.name] = std::move(api_schema); |
- } |
- } |
- |
- bindings_system_ = base::MakeUnique<APIBindingsSystem>( |
- base::Bind(&RunFunctionOnGlobalAndIgnoreResult), |
- base::Bind(&RunFunctionOnGlobalAndReturnHandle), |
- base::Bind(&APIBindingsSystemTest::GetAPISchema, |
- base::Unretained(this)), |
- base::Bind(&APIBindingsSystemTest::OnAPIRequest, |
- base::Unretained(this)), |
- base::Bind(&APIBindingsSystemTest::OnEventListenersChanged, |
- base::Unretained(this)), |
- APILastError(APILastError::GetParent())); |
+ // Create the fake API schemas. |
+ for (const auto& api : GetAPIs()) { |
+ std::unique_ptr<base::DictionaryValue> api_schema = |
+ DictionaryValueFromString(api.spec); |
+ ASSERT_TRUE(api_schema); |
+ api_schemas_[api.name] = std::move(api_schema); |
} |
- void TearDown() override { |
- // Dispose all contexts now so that we call WillReleaseContext(). |
- DisposeAllContexts(); |
- bindings_system_.reset(); |
- APIBindingTest::TearDown(); |
- } |
+ bindings_system_ = base::MakeUnique<APIBindingsSystem>( |
+ base::Bind(&RunFunctionOnGlobalAndIgnoreResult), |
+ base::Bind(&RunFunctionOnGlobalAndReturnHandle), |
+ base::Bind(&APIBindingsSystemTest::GetAPISchema, base::Unretained(this)), |
+ base::Bind(&APIBindingsSystemTest::OnAPIRequest, base::Unretained(this)), |
+ base::Bind(&APIBindingsSystemTest::OnEventListenersChanged, |
+ base::Unretained(this)), |
+ APILastError(base::Bind(&APIBindingsSystemTest::GetLastErrorParent, |
+ base::Unretained(this)))); |
+} |
- void OnWillDisposeContext(v8::Local<v8::Context> context) override { |
- bindings_system_->WillReleaseContext(context); |
- } |
+void APIBindingsSystemTest::TearDown() { |
+ // Dispose all contexts now so that we call WillReleaseContext(). |
+ DisposeAllContexts(); |
+ bindings_system_.reset(); |
+ APIBindingTest::TearDown(); |
+} |
- // Checks that |last_request_| exists and was provided with the |
- // |expected_name| and |expected_arguments|. |
- void ValidateLastRequest(const std::string& expected_name, |
- const std::string& expected_arguments) { |
- ASSERT_TRUE(last_request()); |
- // Note that even if no arguments are provided by the API call, we should |
- // have an empty list. |
- ASSERT_TRUE(last_request()->arguments); |
- EXPECT_EQ(expected_name, last_request()->method_name); |
- EXPECT_EQ(ReplaceSingleQuotes(expected_arguments), |
- ValueToString(*last_request()->arguments)); |
- } |
+void APIBindingsSystemTest::OnWillDisposeContext( |
+ v8::Local<v8::Context> context) { |
+ bindings_system_->WillReleaseContext(context); |
+} |
- void CallFunctionOnObject(v8::Local<v8::Context> context, |
- v8::Local<v8::Object> object, |
- const std::string& script_source) { |
- std::string wrapped_script_source = |
- base::StringPrintf("(function(obj) { %s })", script_source.c_str()); |
+std::vector<APIBindingsSystemTest::FakeSpec> APIBindingsSystemTest::GetAPIs() { |
+ return { |
+ {kAlphaAPIName, kAlphaAPISpec}, |
+ {kBetaAPIName, kBetaAPISpec}, |
+ {kGammaAPIName, kGammaAPISpec}, |
+ }; |
+} |
- v8::Local<v8::Function> func = |
- FunctionFromString(context, wrapped_script_source); |
- ASSERT_FALSE(func.IsEmpty()); |
+v8::Local<v8::Object> APIBindingsSystemTest::GetLastErrorParent( |
+ v8::Local<v8::Context> context) { |
+ return v8::Local<v8::Object>(); |
+} |
- v8::Local<v8::Value> argv[] = {object}; |
- RunFunction(func, context, 1, argv); |
- } |
+const base::DictionaryValue& APIBindingsSystemTest::GetAPISchema( |
+ const std::string& api_name) { |
+ EXPECT_TRUE(base::ContainsKey(api_schemas_, api_name)); |
+ return *api_schemas_[api_name]; |
+} |
- const APIRequestHandler::Request* last_request() const { |
- return last_request_.get(); |
- } |
- void reset_last_request() { last_request_.reset(); } |
- APIBindingsSystem* bindings_system() { return bindings_system_.get(); } |
+void APIBindingsSystemTest::OnAPIRequest( |
+ std::unique_ptr<APIRequestHandler::Request> request, |
+ v8::Local<v8::Context> context) { |
+ ASSERT_FALSE(last_request_); |
+ last_request_ = std::move(request); |
+} |
- private: |
- // The API schemas for the fake APIs. |
- std::map<std::string, std::unique_ptr<base::DictionaryValue>> api_schemas_; |
+void APIBindingsSystemTest::OnEventListenersChanged( |
+ const std::string& event_name, |
+ binding::EventListenersChanged changed, |
+ v8::Local<v8::Context> context) {} |
+ |
+void APIBindingsSystemTest::ValidateLastRequest( |
+ const std::string& expected_name, |
+ const std::string& expected_arguments) { |
+ ASSERT_TRUE(last_request()); |
+ // Note that even if no arguments are provided by the API call, we should |
+ // have an empty list. |
+ ASSERT_TRUE(last_request()->arguments); |
+ EXPECT_EQ(expected_name, last_request()->method_name); |
+ EXPECT_EQ(ReplaceSingleQuotes(expected_arguments), |
+ ValueToString(*last_request()->arguments)); |
+} |
- // The APIBindingsSystem associated with the test. Safe to use across multiple |
- // contexts. |
- std::unique_ptr<APIBindingsSystem> bindings_system_; |
+void APIBindingsSystemTest::CallFunctionOnObject( |
+ v8::Local<v8::Context> context, |
+ v8::Local<v8::Object> object, |
+ const std::string& script_source) { |
+ std::string wrapped_script_source = |
+ base::StringPrintf("(function(obj) { %s })", script_source.c_str()); |
- // The last request to be received from the APIBindingsSystem, or null if |
- // there is none. |
- std::unique_ptr<APIRequestHandler::Request> last_request_; |
+ v8::Local<v8::Function> func = |
+ FunctionFromString(context, wrapped_script_source); |
+ ASSERT_FALSE(func.IsEmpty()); |
- DISALLOW_COPY_AND_ASSIGN(APIBindingsSystemTest); |
-}; |
+ v8::Local<v8::Value> argv[] = {object}; |
+ RunFunction(func, context, 1, argv); |
+} |
// Tests API object initialization, calling a method on the supplied APIs, and |
// triggering the callback for the request. |