Index: chrome/browser/ui/webui/web_ui_test_handler.cc |
diff --git a/chrome/browser/ui/webui/web_ui_test_handler.cc b/chrome/browser/ui/webui/web_ui_test_handler.cc |
index 29eb98c9d3e361247c2f26a39685aa2ba3486a2b..eb30ea7f33dbafb8397f7f84276b20da7fad2957 100644 |
--- a/chrome/browser/ui/webui/web_ui_test_handler.cc |
+++ b/chrome/browser/ui/webui/web_ui_test_handler.cc |
@@ -8,39 +8,41 @@ |
#include "base/values.h" |
#include "chrome/test/ui_test_utils.h" |
#include "content/browser/renderer_host/render_view_host.h" |
+#include "content/common/notification_details.h" |
+#include "content/common/notification_registrar.h" |
bool WebUITestHandler::RunJavascript(const std::string& js_test, |
bool is_test) { |
Paweł Hajdan Jr.
2011/06/15 08:18:21
nit: Please align this line.
Sheridan Rawlins
2011/06/15 15:41:14
Done.
|
- web_ui_->GetRenderViewHost()->ExecuteJavascriptInWebFrame( |
- string16(), UTF8ToUTF16(js_test)); |
- |
- if (is_test) |
+ if (is_test) { |
+ NotificationRegistrar notification_registrar; |
+ notification_registrar.Add( |
+ this, NotificationType::EXECUTE_JAVASCRIPT_RESULT, |
+ Source<RenderViewHost>(web_ui_->GetRenderViewHost())); |
+ web_ui_->GetRenderViewHost()->ExecuteJavascriptInWebFrameNotifyResult( |
+ string16(), UTF8ToUTF16(js_test)); |
return WaitForResult(); |
- else |
+ } else { |
+ web_ui_->GetRenderViewHost()->ExecuteJavascriptInWebFrame( |
+ string16(), UTF8ToUTF16(js_test)); |
return true; |
+ } |
} |
-void WebUITestHandler::HandlePass(const ListValue* args) { |
- test_succeeded_ = true; |
- if (is_waiting_) |
- MessageLoopForUI::current()->Quit(); |
-} |
- |
-void WebUITestHandler::HandleFail(const ListValue* args) { |
- test_succeeded_ = false; |
- if (is_waiting_) |
- MessageLoopForUI::current()->Quit(); |
- |
- std::string message; |
- ASSERT_TRUE(args->GetString(0, &message)); |
- LOG(ERROR) << message; |
-} |
- |
-void WebUITestHandler::RegisterMessages() { |
- web_ui_->RegisterMessageCallback("Pass", |
- NewCallback(this, &WebUITestHandler::HandlePass)); |
- web_ui_->RegisterMessageCallback("Fail", |
- NewCallback(this, &WebUITestHandler::HandleFail)); |
+void WebUITestHandler::Observe(NotificationType type, |
+ const NotificationSource& source, |
+ const NotificationDetails& details) { |
+ // Always quit the message loop so Waiting process can get result or error. |
+ MessageLoopForUI::current()->Quit(); |
+ |
+ Value* value = Details<std::pair<int, Value*> >(details)->second; |
+ ListValue* list_value; |
+ ASSERT_TRUE(value->GetAsList(&list_value)); |
+ ASSERT_TRUE(list_value->GetBoolean(0, &test_succeeded_)); |
+ if (!test_succeeded_) { |
+ std::string message; |
+ ASSERT_TRUE(list_value->GetString(1, &message)); |
+ LOG(ERROR) << message; |
+ } |
} |
bool WebUITestHandler::WaitForResult() { |