| Index: webkit/tools/test_shell/test_shell.cc
|
| diff --git a/webkit/tools/test_shell/test_shell.cc b/webkit/tools/test_shell/test_shell.cc
|
| deleted file mode 100644
|
| index 192c6b532af9bf61908b31e1644e6a475f303e88..0000000000000000000000000000000000000000
|
| --- a/webkit/tools/test_shell/test_shell.cc
|
| +++ /dev/null
|
| @@ -1,615 +0,0 @@
|
| -// Copyright (c) 2012 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.
|
| -
|
| -#undef LOG
|
| -
|
| -#include "webkit/tools/test_shell/test_shell.h"
|
| -
|
| -#include "base/base_paths.h"
|
| -#include "base/command_line.h"
|
| -#include "base/debug/debug_on_start_win.h"
|
| -#include "base/file_util.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/md5.h"
|
| -#include "base/message_loop.h"
|
| -#include "base/metrics/stats_table.h"
|
| -#include "base/path_service.h"
|
| -#include "base/string_util.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "build/build_config.h"
|
| -#include "googleurl/src/url_util.h"
|
| -#include "grit/webkit_strings.h"
|
| -#include "net/base/mime_util.h"
|
| -#include "net/base/net_util.h"
|
| -#include "net/url_request/url_request.h"
|
| -#include "net/url_request/url_request_file_job.h"
|
| -#include "net/url_request/url_request_filter.h"
|
| -#include "skia/ext/bitmap_platform_device.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebURLRequest.h"
|
| -#include "third_party/WebKit/Source/Platform/chromium/public/WebURLResponse.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObject.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebDeviceOrientationClientMock.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebGeolocationClientMock.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptController.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
|
| -#include "ui/gfx/codec/png_codec.h"
|
| -#include "ui/gfx/size.h"
|
| -#include "webkit/glue/glue_serialize.h"
|
| -#include "webkit/glue/webkit_glue.h"
|
| -#include "webkit/glue/webpreferences.h"
|
| -#include "webkit/tools/test_shell/notification_presenter.h"
|
| -#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
|
| -#include "webkit/tools/test_shell/test_navigation_controller.h"
|
| -#include "webkit/tools/test_shell/test_shell_devtools_agent.h"
|
| -#include "webkit/tools/test_shell/test_shell_devtools_client.h"
|
| -#include "webkit/tools/test_shell/test_shell_request_context.h"
|
| -#include "webkit/tools/test_shell/test_shell_switches.h"
|
| -#include "webkit/tools/test_shell/test_webview_delegate.h"
|
| -#include "webkit/user_agent/user_agent.h"
|
| -#include "webkit/user_agent/user_agent_util.h"
|
| -
|
| -using WebKit::WebCanvas;
|
| -using WebKit::WebFrame;
|
| -using WebKit::WebNavigationPolicy;
|
| -using WebKit::WebRect;
|
| -using WebKit::WebScriptController;
|
| -using WebKit::WebSize;
|
| -using WebKit::WebURLRequest;
|
| -using WebKit::WebView;
|
| -
|
| -namespace {
|
| -
|
| -// Default timeout in ms for file page loads when in layout test mode.
|
| -const int kDefaultFileTestTimeoutMillisecs = 10 * 1000;
|
| -
|
| -// Content area size for newly created windows.
|
| -const int kTestWindowWidth = 800;
|
| -const int kTestWindowHeight = 600;
|
| -
|
| -// The W3C SVG layout tests use a different size than the other layout
|
| -// tests.
|
| -const int kSVGTestWindowWidth = 480;
|
| -const int kSVGTestWindowHeight = 360;
|
| -
|
| -// URLRequestTestShellFileJob is used to serve the inspector
|
| -class URLRequestTestShellFileJob : public net::URLRequestFileJob {
|
| - public:
|
| - static net::URLRequestJob* InspectorFactory(
|
| - net::URLRequest* request,
|
| - net::NetworkDelegate* network_delegate,
|
| - const std::string& scheme) {
|
| - base::FilePath path;
|
| - PathService::Get(base::DIR_EXE, &path);
|
| - path = path.AppendASCII("resources");
|
| - path = path.AppendASCII("inspector");
|
| - path = path.AppendASCII(request->url().path().substr(1));
|
| - return new URLRequestTestShellFileJob(request, network_delegate, path);
|
| - }
|
| -
|
| - private:
|
| - URLRequestTestShellFileJob(net::URLRequest* request,
|
| - net::NetworkDelegate* network_delegate,
|
| - const base::FilePath& path)
|
| - : net::URLRequestFileJob(request, network_delegate, path) {
|
| - }
|
| - virtual ~URLRequestTestShellFileJob() { }
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(URLRequestTestShellFileJob);
|
| -};
|
| -
|
| -
|
| -} // namespace
|
| -
|
| -// Initialize static member variable
|
| -WindowList* TestShell::window_list_;
|
| -WebPreferences* TestShell::web_prefs_ = NULL;
|
| -bool TestShell::layout_test_mode_ = false;
|
| -bool TestShell::allow_external_pages_ = false;
|
| -std::vector<std::string> TestShell::js_flags_;
|
| -bool TestShell::accelerated_2d_canvas_enabled_ = false;
|
| -bool TestShell::accelerated_compositing_enabled_ = false;
|
| -
|
| -TestShell::TestParams::TestParams()
|
| - : dump_tree(true),
|
| - dump_pixels(false) {
|
| -}
|
| -
|
| -TestShell::TestShell()
|
| - : m_mainWnd(NULL),
|
| - m_editWnd(NULL),
|
| - m_webViewHost(NULL),
|
| - m_popupHost(NULL),
|
| - m_focusedWidgetHost(NULL),
|
| -#if defined(OS_WIN)
|
| - default_edit_wnd_proc_(0),
|
| -#endif
|
| - test_params_(NULL),
|
| - is_modal_(false),
|
| - is_loading_(false),
|
| - allow_images_(true),
|
| - allow_plugins_(true),
|
| - allow_scripts_(true),
|
| - dump_stats_table_on_exit_(false) {
|
| - delegate_.reset(new TestWebViewDelegate(this));
|
| - popup_delegate_.reset(new TestWebViewDelegate(this));
|
| - navigation_controller_.reset(new TestNavigationController(this));
|
| - notification_presenter_.reset(new TestNotificationPresenter(this));
|
| -
|
| - net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
|
| - filter->AddHostnameHandler("test-shell-resource", "inspector",
|
| - &URLRequestTestShellFileJob::InspectorFactory);
|
| - url_util::AddStandardScheme("test-shell-resource");
|
| - webkit_glue::SetUserAgent(webkit_glue::BuildUserAgentFromProduct(
|
| - "TestShell/0.0.0.0"), false);
|
| -}
|
| -
|
| -TestShell::~TestShell() {
|
| - delegate_->RevokeDragDrop();
|
| -
|
| - // DevTools frontend page is supposed to be navigated only once and
|
| - // loading another URL in that Page is an error.
|
| - if (!dev_tools_client_.get()) {
|
| - // Navigate to an empty page to fire all the destruction logic for the
|
| - // current page.
|
| - LoadURL(GURL("about:blank"));
|
| - }
|
| -
|
| - net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
|
| - filter->RemoveHostnameHandler("test-shell-resource", "inspector");
|
| -
|
| - // Call GC twice to clean up garbage.
|
| - CallJSGC();
|
| - CallJSGC();
|
| -
|
| - // Destroy the WebView before the TestWebViewDelegate.
|
| - m_webViewHost.reset();
|
| -
|
| - CloseDevTools();
|
| -
|
| - PlatformCleanUp();
|
| -
|
| - base::StatsTable *table = base::StatsTable::current();
|
| - if (dump_stats_table_on_exit_) {
|
| - // Dump the stats table.
|
| - printf("<stats>\n");
|
| - if (table != NULL) {
|
| - int counter_max = table->GetMaxCounters();
|
| - for (int index = 0; index < counter_max; index++) {
|
| - std::string name(table->GetRowName(index));
|
| - if (name.length() > 0) {
|
| - int value = table->GetRowValue(index);
|
| - printf("%s:\t%d\n", name.c_str(), value);
|
| - }
|
| - }
|
| - }
|
| - printf("</stats>\n");
|
| - }
|
| -}
|
| -
|
| -void TestShell::UpdateNavigationControls() {
|
| - int current_index = navigation_controller()->GetCurrentEntryIndex();
|
| - int max_index = navigation_controller()->GetEntryCount() - 1;
|
| -
|
| - EnableUIControl(BACK_BUTTON, current_index > 0);
|
| - EnableUIControl(FORWARD_BUTTON, current_index < max_index);
|
| - EnableUIControl(STOP_BUTTON, is_loading_);
|
| -}
|
| -
|
| -bool TestShell::CreateNewWindow(const GURL& starting_url,
|
| - TestShell** result) {
|
| - TestShell* shell = new TestShell();
|
| - bool rv = shell->Initialize(starting_url);
|
| - if (rv) {
|
| - if (result)
|
| - *result = shell;
|
| - TestShell::windowList()->push_back(shell->m_mainWnd);
|
| - }
|
| - return rv;
|
| -}
|
| -
|
| -void TestShell::ShutdownTestShell() {
|
| - PlatformShutdown();
|
| - SimpleResourceLoaderBridge::Shutdown();
|
| - delete window_list_;
|
| - delete TestShell::web_prefs_;
|
| -}
|
| -
|
| -// All fatal log messages (e.g. DCHECK failures) imply unit test failures
|
| -static void UnitTestAssertHandler(const std::string& str) {
|
| - FAIL() << str;
|
| -}
|
| -
|
| -// static
|
| -void TestShell::InitLogging(bool suppress_error_dialogs,
|
| - bool layout_test_mode,
|
| - bool enable_gp_fault_error_box) {
|
| - if (suppress_error_dialogs)
|
| - logging::SetLogAssertHandler(UnitTestAssertHandler);
|
| -
|
| -#if defined(OS_WIN)
|
| - if (!IsDebuggerPresent()) {
|
| - UINT new_flags = SEM_FAILCRITICALERRORS |
|
| - SEM_NOOPENFILEERRORBOX;
|
| - if (!enable_gp_fault_error_box)
|
| - new_flags |= SEM_NOGPFAULTERRORBOX;
|
| -
|
| - // Preserve existing error mode, as discussed at
|
| - // http://blogs.msdn.com/oldnewthing/archive/2004/07/27/198410.aspx
|
| - UINT existing_flags = SetErrorMode(new_flags);
|
| - SetErrorMode(existing_flags | new_flags);
|
| - }
|
| -#endif
|
| -
|
| - // Only log to a file if we're running layout tests. This prevents debugging
|
| - // output from disrupting whether or not we pass.
|
| - logging::LoggingDestination destination =
|
| - logging::LOG_TO_BOTH_FILE_AND_SYSTEM_DEBUG_LOG;
|
| - if (layout_test_mode)
|
| - destination = logging::LOG_ONLY_TO_FILE;
|
| -
|
| - // We might have multiple test_shell processes going at once
|
| - base::FilePath log_filename;
|
| - PathService::Get(base::DIR_EXE, &log_filename);
|
| - log_filename = log_filename.AppendASCII("test_shell.log");
|
| - logging::InitLogging(
|
| - log_filename.value().c_str(),
|
| - destination,
|
| - logging::LOCK_LOG_FILE,
|
| - logging::DELETE_OLD_LOG_FILE,
|
| - logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS);
|
| -
|
| - // we want process and thread IDs because we may have multiple processes
|
| - logging::SetLogItems(true, true, false, true);
|
| -
|
| - // Turn on logging of notImplemented()s inside WebKit, but only if we're
|
| - // not running layout tests (because otherwise they'd corrupt the test
|
| - // output).
|
| - if (!layout_test_mode)
|
| - webkit_glue::EnableWebCoreLogChannels("NotYetImplemented");
|
| -}
|
| -
|
| -// static
|
| -void TestShell::CleanupLogging() {
|
| - logging::CloseLogFile();
|
| -}
|
| -
|
| -// static
|
| -void TestShell::SetAllowScriptsToCloseWindows() {
|
| - if (web_prefs_)
|
| - web_prefs_->allow_scripts_to_close_windows = true;
|
| -}
|
| -
|
| -// static
|
| -void TestShell::SetAccelerated2dCanvasEnabled(bool enabled) {
|
| - accelerated_2d_canvas_enabled_ = enabled;
|
| -}
|
| -
|
| -// static
|
| -void TestShell::SetAcceleratedCompositingEnabled(bool enabled) {
|
| - accelerated_compositing_enabled_ = enabled;
|
| -}
|
| -
|
| -// static
|
| -void TestShell::ResetWebPreferences() {
|
| - DCHECK(web_prefs_);
|
| -
|
| - // Match the settings used by Mac DumpRenderTree, with the exception of
|
| - // fonts.
|
| - if (web_prefs_) {
|
| - *web_prefs_ = WebPreferences();
|
| -
|
| -#if defined(OS_MACOSX)
|
| - web_prefs_->serif_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Times");
|
| - web_prefs_->cursive_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Apple Chancery");
|
| - web_prefs_->fantasy_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Papyrus");
|
| -#else
|
| - // NOTE: case matters here, this must be 'times new roman', else
|
| - // some layout tests fail.
|
| - web_prefs_->serif_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("times new roman");
|
| -
|
| - // These two fonts are picked from the intersection of
|
| - // Win XP font list and Vista font list :
|
| - // http://www.microsoft.com/typography/fonts/winxp.htm
|
| - // http://blogs.msdn.com/michkap/archive/2006/04/04/567881.aspx
|
| - // Some of them are installed only with CJK and complex script
|
| - // support enabled on Windows XP and are out of consideration here.
|
| - // (although we enabled both on our buildbots.)
|
| - // They (especially Impact for fantasy) are not typical cursive
|
| - // and fantasy fonts, but it should not matter for layout tests
|
| - // as long as they're available.
|
| - web_prefs_->cursive_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Comic Sans MS");
|
| - web_prefs_->fantasy_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Impact");
|
| -#endif
|
| - web_prefs_->standard_font_family_map[webkit_glue::kCommonScript] =
|
| - web_prefs_->serif_font_family_map[webkit_glue::kCommonScript];
|
| - web_prefs_->fixed_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Courier");
|
| - web_prefs_->sans_serif_font_family_map[webkit_glue::kCommonScript] =
|
| - ASCIIToUTF16("Helvetica");
|
| -
|
| - web_prefs_->default_encoding = "ISO-8859-1";
|
| - web_prefs_->default_font_size = 16;
|
| - web_prefs_->default_fixed_font_size = 13;
|
| - web_prefs_->minimum_font_size = 0;
|
| - web_prefs_->minimum_logical_font_size = 9;
|
| - web_prefs_->javascript_can_open_windows_automatically = true;
|
| - web_prefs_->dom_paste_enabled = true;
|
| - web_prefs_->site_specific_quirks_enabled = true;
|
| - web_prefs_->shrinks_standalone_images_to_fit = false;
|
| - web_prefs_->uses_universal_detector = false;
|
| - web_prefs_->java_enabled = false;
|
| - web_prefs_->allow_scripts_to_close_windows = false;
|
| - web_prefs_->javascript_can_access_clipboard = true;
|
| - web_prefs_->xss_auditor_enabled = false;
|
| - // It's off by default for Chrome, but we don't want to
|
| - // lose the coverage of dynamic font tests in webkit test.
|
| - web_prefs_->remote_fonts_enabled = true;
|
| - web_prefs_->local_storage_enabled = true;
|
| - web_prefs_->application_cache_enabled = true;
|
| - web_prefs_->databases_enabled = true;
|
| - web_prefs_->allow_file_access_from_file_urls = true;
|
| - // LayoutTests were written with Safari Mac in mind which does not allow
|
| - // tabbing to links by default.
|
| - web_prefs_->tabs_to_links = false;
|
| - web_prefs_->accelerated_2d_canvas_enabled =
|
| - accelerated_2d_canvas_enabled_;
|
| - web_prefs_->accelerated_compositing_enabled =
|
| - accelerated_compositing_enabled_;
|
| - // Allow those layout tests running as local files, i.e. under
|
| - // LayoutTests/http/tests/local, to access http server.
|
| - if (layout_test_mode_)
|
| - web_prefs_->allow_universal_access_from_file_urls = true;
|
| - web_prefs_->visual_word_movement_enabled = false;
|
| - }
|
| -}
|
| -
|
| -// static
|
| -WebPreferences* TestShell::GetWebPreferences() {
|
| - DCHECK(web_prefs_);
|
| - return web_prefs_;
|
| -}
|
| -
|
| -// static
|
| -bool TestShell::RemoveWindowFromList(gfx::NativeWindow window) {
|
| - WindowList::iterator entry =
|
| - std::find(TestShell::windowList()->begin(),
|
| - TestShell::windowList()->end(),
|
| - window);
|
| - if (entry != TestShell::windowList()->end()) {
|
| - TestShell::windowList()->erase(entry);
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -void TestShell::Show(WebNavigationPolicy policy) {
|
| - delegate_->show(policy);
|
| -}
|
| -
|
| -void TestShell::DumpBackForwardEntry(int index, base::string16* result) {
|
| - int current_index = navigation_controller_->GetLastCommittedEntryIndex();
|
| -
|
| - std::string content_state =
|
| - navigation_controller_->GetEntryAtIndex(index)->GetContentState();
|
| - if (content_state.empty()) {
|
| - content_state = webkit_glue::CreateHistoryStateForURL(
|
| - navigation_controller_->GetEntryAtIndex(index)->GetURL());
|
| - }
|
| -
|
| - result->append(
|
| - webkit_glue::DumpHistoryState(content_state, 8, index == current_index));
|
| -}
|
| -
|
| -void TestShell::DumpBackForwardList(base::string16* result) {
|
| - result->append(ASCIIToUTF16(
|
| - "\n============== Back Forward List ==============\n"));
|
| -
|
| - for (int i = 0; i < navigation_controller_->GetEntryCount(); ++i)
|
| - DumpBackForwardEntry(i, result);
|
| -
|
| - result->append(ASCIIToUTF16(
|
| - "===============================================\n"));
|
| -}
|
| -
|
| -void TestShell::CallJSGC() {
|
| - webView()->mainFrame()->collectGarbage();
|
| -}
|
| -
|
| -WebView* TestShell::CreateWebView() {
|
| - // If we're running layout tests, only open a new window if the test has
|
| - // called testRunner.setCanOpenWindows()
|
| - if (layout_test_mode_)
|
| - return NULL;
|
| -
|
| - TestShell* new_win;
|
| - if (!CreateNewWindow(GURL(), &new_win))
|
| - return NULL;
|
| -
|
| - return new_win->webView();
|
| -}
|
| -
|
| -void TestShell::ShowDevTools() {
|
| - if (!devtools_shell_) {
|
| - base::FilePath dir_exe;
|
| - PathService::Get(base::DIR_EXE, &dir_exe);
|
| - base::FilePath devtools_path =
|
| - dir_exe.AppendASCII("resources/inspector/devtools.html");
|
| - TestShell* devtools_shell;
|
| - TestShell::CreateNewWindow(GURL(devtools_path.value()),
|
| - &devtools_shell);
|
| - devtools_shell_ = devtools_shell->AsWeakPtr();
|
| - devtools_shell_->CreateDevToolsClient(dev_tools_agent_.get());
|
| - }
|
| - DCHECK(devtools_shell_);
|
| - devtools_shell_->Show(WebKit::WebNavigationPolicyNewWindow);
|
| -}
|
| -
|
| -void TestShell::CloseDevTools() {
|
| - if (devtools_shell_)
|
| - devtools_shell_->DestroyWindow(devtools_shell_->mainWnd());
|
| -}
|
| -
|
| -void TestShell::CreateDevToolsClient(TestShellDevToolsAgent *agent) {
|
| - dev_tools_client_.reset(new TestShellDevToolsClient(agent,
|
| - webView()));
|
| -}
|
| -
|
| -bool TestShell::IsSVGTestURL(const GURL& url) {
|
| - return url.is_valid() && url.spec().find("W3C-SVG-1.1") != std::string::npos;
|
| -}
|
| -
|
| -void TestShell::SizeToSVG() {
|
| - SizeTo(kSVGTestWindowWidth, kSVGTestWindowHeight);
|
| -}
|
| -
|
| -void TestShell::SizeToDefault() {
|
| - SizeTo(kTestWindowWidth, kTestWindowHeight);
|
| -}
|
| -
|
| -void TestShell::ResetTestController() {
|
| - notification_presenter_->Reset();
|
| - delegate_->Reset();
|
| - if (geolocation_client_mock_.get())
|
| - geolocation_client_mock_->resetMock();
|
| -}
|
| -
|
| -void TestShell::LoadFile(const base::FilePath& file) {
|
| - LoadURLForFrame(net::FilePathToFileURL(file), base::string16());
|
| -}
|
| -
|
| -void TestShell::LoadURL(const GURL& url) {
|
| - LoadURLForFrame(url, base::string16());
|
| -}
|
| -
|
| -bool TestShell::Navigate(const TestNavigationEntry& entry, bool reload) {
|
| - // Get the right target frame for the entry.
|
| - WebFrame* frame = webView()->mainFrame();
|
| - if (!entry.GetTargetFrame().empty())
|
| - frame = webView()->findFrameByName(entry.GetTargetFrame());
|
| -
|
| - // TODO(mpcomplete): should we clear the target frame, or should
|
| - // back/forward navigations maintain the target frame?
|
| -
|
| - // A navigation resulting from loading a javascript URL should not be
|
| - // treated as a browser initiated event. Instead, we want it to look as if
|
| - // the page initiated any load resulting from JS execution.
|
| - if (!entry.GetURL().SchemeIs("javascript")) {
|
| - delegate_->set_pending_extra_data(
|
| - new TestShellExtraData(entry.GetPageID()));
|
| - }
|
| -
|
| - // If we are reloading, then WebKit will use the state of the current page.
|
| - // Otherwise, we give it the state to navigate to.
|
| - if (reload) {
|
| - frame->reload(false);
|
| - } else if (!entry.GetContentState().empty()) {
|
| - DCHECK_NE(entry.GetPageID(), -1);
|
| - frame->loadHistoryItem(
|
| - webkit_glue::HistoryItemFromString(entry.GetContentState()));
|
| - } else {
|
| - DCHECK_EQ(entry.GetPageID(), -1);
|
| - frame->loadRequest(WebURLRequest(entry.GetURL()));
|
| - }
|
| -
|
| - // In case LoadRequest failed before DidCreateDataSource was called.
|
| - delegate_->set_pending_extra_data(NULL);
|
| -
|
| - // Restore focus to the main frame prior to loading new request.
|
| - // This makes sure that we don't have a focused iframe. Otherwise, that
|
| - // iframe would keep focus when the SetFocus called immediately after
|
| - // LoadRequest, thus making some tests fail (see http://b/issue?id=845337
|
| - // for more details).
|
| - webView()->setFocusedFrame(frame);
|
| - SetFocus(webViewHost(), true);
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void TestShell::GoBackOrForward(int offset) {
|
| - navigation_controller_->GoToOffset(offset);
|
| -}
|
| -
|
| -void TestShell::DumpDocumentText() {
|
| - base::FilePath file_path;
|
| - if (!PromptForSaveFile(L"Dump document text", &file_path))
|
| - return;
|
| -
|
| - const std::string data =
|
| - UTF16ToUTF8(webkit_glue::DumpDocumentText(webView()->mainFrame()));
|
| - file_util::WriteFile(file_path, data.c_str(), data.length());
|
| -}
|
| -
|
| -void TestShell::DumpRenderTree() {
|
| - base::FilePath file_path;
|
| - if (!PromptForSaveFile(L"Dump render tree", &file_path))
|
| - return;
|
| -
|
| - const std::string data =
|
| - UTF16ToUTF8(webkit_glue::DumpRenderer(webView()->mainFrame()));
|
| - file_util::WriteFile(file_path, data.c_str(), data.length());
|
| -}
|
| -
|
| -base::string16 TestShell::GetDocumentText() {
|
| - return webkit_glue::DumpDocumentText(webView()->mainFrame());
|
| -}
|
| -
|
| -void TestShell::Reload() {
|
| - navigation_controller_->Reload();
|
| -}
|
| -
|
| -void TestShell::SetFocus(WebWidgetHost* host, bool enable) {
|
| - if (!layout_test_mode_) {
|
| - InteractiveSetFocus(host, enable);
|
| - } else {
|
| - // Simulate the effects of InteractiveSetFocus(), which includes calling
|
| - // both setFocus() and setIsActive().
|
| - if (enable) {
|
| - if (m_focusedWidgetHost != host) {
|
| - if (m_focusedWidgetHost)
|
| - m_focusedWidgetHost->webwidget()->setFocus(false);
|
| - webView()->setIsActive(enable);
|
| - host->webwidget()->setFocus(enable);
|
| - m_focusedWidgetHost = host;
|
| - }
|
| - } else {
|
| - if (m_focusedWidgetHost == host) {
|
| - host->webwidget()->setFocus(enable);
|
| - webView()->setIsActive(enable);
|
| - m_focusedWidgetHost = NULL;
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -WebKit::WebDeviceOrientationClientMock*
|
| -TestShell::device_orientation_client_mock() {
|
| - if (!device_orientation_client_mock_.get()) {
|
| - device_orientation_client_mock_.reset(
|
| - WebKit::WebDeviceOrientationClientMock::create());
|
| - }
|
| - return device_orientation_client_mock_.get();
|
| -}
|
| -
|
| -WebKit::WebGeolocationClientMock* TestShell::geolocation_client_mock() {
|
| - if (!geolocation_client_mock_.get()) {
|
| - geolocation_client_mock_.reset(
|
| - WebKit::WebGeolocationClientMock::create());
|
| - }
|
| - return geolocation_client_mock_.get();
|
| -}
|
|
|