Index: chrome/browser/extensions/extension_function_test_utils.cc |
diff --git a/chrome/browser/extensions/extension_function_test_utils.cc b/chrome/browser/extensions/extension_function_test_utils.cc |
index 94951caac12dcd283f461ce67201d777abf1f630..689a58d649bafaaaa4a8c54ea1437ae3d97b8737 100644 |
--- a/chrome/browser/extensions/extension_function_test_utils.cc |
+++ b/chrome/browser/extensions/extension_function_test_utils.cc |
@@ -13,6 +13,7 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/test/base/ui_test_utils.h" |
+#include "extensions/browser/api_test_utils.h" |
#include "extensions/browser/extension_function.h" |
#include "extensions/browser/extension_function_dispatcher.h" |
#include "extensions/common/extension.h" |
@@ -55,11 +56,10 @@ base::Value* ParseJSON(const std::string& data) { |
} |
base::ListValue* ParseList(const std::string& data) { |
- scoped_ptr<base::Value> result(ParseJSON(data)); |
- if (result.get() && result->IsType(base::Value::TYPE_LIST)) |
- return static_cast<base::ListValue*>(result.release()); |
- else |
- return NULL; |
+ base::Value* result(ParseJSON(data)); |
James Cook
2014/07/18 20:32:48
nit: I find "result = ParseJSON(data)" slightly ea
Yoyo Zhou
2014/07/22 00:10:31
Me too.
|
+ base::ListValue* list = NULL; |
+ result->GetAsList(&list); |
+ return list; |
} |
base::DictionaryValue* ParseDictionary( |
@@ -243,31 +243,18 @@ bool RunFunction(UIThreadExtensionFunction* function, |
const std::string& args, |
Browser* browser, |
RunFunctionFlags flags) { |
- SendResponseDelegate response_delegate; |
- function->set_test_delegate(&response_delegate); |
- scoped_ptr<base::ListValue> parsed_args(ParseList(args)); |
- EXPECT_TRUE(parsed_args.get()) << |
- "Could not parse extension function arguments: " << args; |
- function->SetArgs(parsed_args.get()); |
- |
TestFunctionDispatcherDelegate dispatcher_delegate(browser); |
- extensions::ExtensionFunctionDispatcher dispatcher(browser->profile(), |
- &dispatcher_delegate); |
- function->set_dispatcher(dispatcher.AsWeakPtr()); |
- |
- function->set_browser_context(browser->profile()); |
- function->set_include_incognito(flags & INCLUDE_INCOGNITO); |
- function->Run()->Execute(); |
- |
- // If the RunAsync of |function| didn't already call SendResponse, run the |
- // message loop until they do. |
- if (!response_delegate.HasResponse()) { |
- response_delegate.set_should_post_quit(true); |
- content::RunMessageLoop(); |
- } |
- |
- EXPECT_TRUE(response_delegate.HasResponse()); |
- return response_delegate.GetResponse(); |
+ scoped_ptr<extensions::ExtensionFunctionDispatcher> dispatcher( |
+ new extensions::ExtensionFunctionDispatcher(browser->profile(), |
+ &dispatcher_delegate)); |
+ // The cast is a hack; these flags should be defined in only one place. |
James Cook
2014/07/18 20:32:48
TODO(yoz) here
Yoyo Zhou
2014/07/22 00:10:31
added
|
+ // See crbug.com/394840. |
+ return extensions::api_test_utils::RunFunction( |
+ function, |
+ args, |
+ browser->profile(), |
+ dispatcher.Pass(), |
+ static_cast<extensions::api_test_utils::RunFunctionFlags>(flags)); |
} |
} // namespace extension_function_test_utils |