diff options
Diffstat (limited to 'content/browser/webui/web_ui_handler_browsertest.cc')
-rw-r--r-- | content/browser/webui/web_ui_handler_browsertest.cc | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/content/browser/webui/web_ui_handler_browsertest.cc b/content/browser/webui/web_ui_handler_browsertest.cc new file mode 100644 index 0000000..ab580ee --- /dev/null +++ b/content/browser/webui/web_ui_handler_browsertest.cc @@ -0,0 +1,41 @@ +// Copyright (c) 2011 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 "content/browser/webui/web_ui_handler_browsertest.h" + +#include "base/utf_string_conversions.h" +#include "chrome/browser/renderer_host/render_view_host.h" +#include "chrome/test/ui_test_utils.h" + +bool WebUIHandlerBrowserTest::Execute(const std::string& js_test) { + web_ui_->GetRenderViewHost()->ExecuteJavascriptInWebFrame( + string16(), UTF8ToUTF16(js_test)); + return WaitForResult(); +} + +void WebUIHandlerBrowserTest::HandlePass(const ListValue* args) { + test_succeeded_ = true; + if (is_waiting_) + MessageLoopForUI::current()->Quit(); +} + +void WebUIHandlerBrowserTest::HandleFail(const ListValue* args) { + test_succeeded_ = false; + if (is_waiting_) + MessageLoopForUI::current()->Quit(); +} + +void WebUIHandlerBrowserTest::RegisterMessages() { + web_ui_->RegisterMessageCallback("Pass", + NewCallback(this, &WebUIHandlerBrowserTest::HandlePass)); + web_ui_->RegisterMessageCallback("Fail", + NewCallback(this, &WebUIHandlerBrowserTest::HandleFail)); +} + +bool WebUIHandlerBrowserTest::WaitForResult() { + is_waiting_ = true; + ui_test_utils::RunMessageLoop(); + is_waiting_ = false; + return test_succeeded_; +} |