Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(754)

Unified Diff: webkit/tools/test_shell/test_webview_delegate.cc

Issue 15028002: Delete test_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add dummy test_shell build target. Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/tools/test_shell/test_webview_delegate.cc
diff --git a/webkit/tools/test_shell/test_webview_delegate.cc b/webkit/tools/test_shell/test_webview_delegate.cc
deleted file mode 100644
index afba3a70e240c9c524616b01adea301325493485..0000000000000000000000000000000000000000
--- a/webkit/tools/test_shell/test_webview_delegate.cc
+++ /dev/null
@@ -1,989 +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.
-
-// This file contains the implementation of TestWebViewDelegate, which serves
-// as the WebViewDelegate for the TestShellWebHost. The host is expected to
-// have initialized a MessageLoop before these methods are called.
-
-#include "webkit/tools/test_shell/test_webview_delegate.h"
-
-#include "base/debug/trace_event.h"
-#include "base/file_util.h"
-#include "base/message_loop.h"
-#include "base/process_util.h"
-#include "base/string_util.h"
-#include "base/stringprintf.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/utf_string_conversions.h"
-#include "media/base/filter_collection.h"
-#include "media/base/media_log.h"
-#include "net/base/net_errors.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/Platform.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebData.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebDragData.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebImage.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebPoint.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebStorageNamespace.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/WebURLError.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/Platform/chromium/public/WebVector.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObject.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDeviceOrientationClientMock.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileError.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallbacks.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/WebHistoryItem.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPresenter.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginParams.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupMenu.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebRange.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h"
-#include "ui/base/window_open_disposition.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/gfx/point.h"
-#include "webkit/appcache/web_application_cache_host_impl.h"
-#include "webkit/glue/glue_serialize.h"
-#include "webkit/glue/webdropdata.h"
-#include "webkit/glue/webkit_glue.h"
-#include "webkit/glue/webpreferences.h"
-#include "webkit/glue/weburlrequest_extradata_impl.h"
-#include "webkit/media/webmediaplayer_impl.h"
-#include "webkit/media/webmediaplayer_params.h"
-#include "webkit/plugins/npapi/plugin_list.h"
-#include "webkit/plugins/npapi/webplugin_delegate_impl.h"
-#include "webkit/plugins/npapi/webplugin_impl.h"
-#include "webkit/tools/test_shell/mock_spellcheck.h"
-#include "webkit/tools/test_shell/notification_presenter.h"
-#include "webkit/tools/test_shell/simple_appcache_system.h"
-#include "webkit/tools/test_shell/simple_dom_storage_system.h"
-#include "webkit/tools/test_shell/simple_file_system.h"
-#include "webkit/tools/test_shell/test_navigation_controller.h"
-#include "webkit/tools/test_shell/test_shell.h"
-
-#if defined(OS_WIN)
-// TODO(port): make these files work everywhere.
-#include "webkit/tools/test_shell/drop_delegate.h"
-#endif
-
-#if defined(OS_MACOSX)
-#include "webkit/plugins/plugin_constants.h"
-#endif
-
-using appcache::WebApplicationCacheHostImpl;
-using WebKit::WebAccessibilityObject;
-using WebKit::WebApplicationCacheHost;
-using WebKit::WebApplicationCacheHostClient;
-using WebKit::WebConsoleMessage;
-using WebKit::WebContextMenuData;
-using WebKit::WebCookieJar;
-using WebKit::WebData;
-using WebKit::WebDataSource;
-using WebKit::WebDragData;
-using WebKit::WebDragOperationsMask;
-using WebKit::WebEditingAction;
-using WebKit::WebFileSystem;
-using WebKit::WebFileSystemCallbacks;
-using WebKit::WebFormElement;
-using WebKit::WebFrame;
-using WebKit::WebGraphicsContext3D;
-using WebKit::WebHistoryItem;
-using WebKit::WebImage;
-using WebKit::WebMediaPlayer;
-using WebKit::WebMediaPlayerClient;
-using WebKit::WebNavigationType;
-using WebKit::WebNavigationPolicy;
-using WebKit::WebNode;
-using WebKit::WebNotificationPresenter;
-using WebKit::WebPlugin;
-using WebKit::WebPluginParams;
-using WebKit::WebPoint;
-using WebKit::WebPopupMenu;
-using WebKit::WebPopupType;
-using WebKit::WebRange;
-using WebKit::WebRect;
-using WebKit::WebScreenInfo;
-using WebKit::WebSecurityOrigin;
-using WebKit::WebSize;
-using WebKit::WebStorageNamespace;
-using WebKit::WebString;
-using WebKit::WebTextAffinity;
-using WebKit::WebTextDirection;
-using WebKit::WebURL;
-using WebKit::WebURLError;
-using WebKit::WebURLRequest;
-using WebKit::WebURLResponse;
-using WebKit::WebWidget;
-using WebKit::WebWindowFeatures;
-using WebKit::WebWorker;
-using WebKit::WebVector;
-using WebKit::WebView;
-
-namespace {
-
-// WebNavigationType debugging strings taken from PolicyDelegate.mm.
-const char* kLinkClickedString = "link clicked";
-const char* kFormSubmittedString = "form submitted";
-const char* kBackForwardString = "back/forward";
-const char* kReloadString = "reload";
-const char* kFormResubmittedString = "form resubmitted";
-const char* kOtherString = "other";
-const char* kIllegalString = "illegal value";
-
-int next_page_id_ = 1;
-
-// Used to write a platform neutral file:/// URL by taking the
-// filename and its directory. (e.g., converts
-// "file:///tmp/foo/bar.txt" to just "bar.txt").
-// Get a debugging string from a WebNavigationType.
-const char* WebNavigationTypeToString(WebNavigationType type) {
- switch (type) {
- case WebKit::WebNavigationTypeLinkClicked:
- return kLinkClickedString;
- case WebKit::WebNavigationTypeFormSubmitted:
- return kFormSubmittedString;
- case WebKit::WebNavigationTypeBackForward:
- return kBackForwardString;
- case WebKit::WebNavigationTypeReload:
- return kReloadString;
- case WebKit::WebNavigationTypeFormResubmitted:
- return kFormResubmittedString;
- case WebKit::WebNavigationTypeOther:
- return kOtherString;
- }
- return kIllegalString;
-}
-
-std::string GetURLDescription(const GURL& url) {
- if (url.SchemeIs("file"))
- return url.ExtractFileName();
-
- return url.possibly_invalid_spec();
-}
-
-std::string GetNodeDescription(const WebNode& node, int exception) {
- if (exception)
- return "ERROR";
- if (node.isNull())
- return "(null)";
- std::string str = node.nodeName().utf8();
- const WebNode& parent = node.parentNode();
- if (!parent.isNull()) {
- str.append(" > ");
- str.append(GetNodeDescription(parent, 0));
- }
- return str;
-}
-
-} // namespace
-
-// WebViewDelegate -----------------------------------------------------------
-
-std::string TestWebViewDelegate::GetResourceDescription(uint32 identifier) {
- ResourceMap::iterator it = resource_identifier_map_.find(identifier);
- return it != resource_identifier_map_.end() ? it->second : "<unknown>";
-}
-
-void TestWebViewDelegate::SetUserStyleSheetEnabled(bool is_enabled) {
- WebPreferences* prefs = shell_->GetWebPreferences();
- prefs->user_style_sheet_enabled = is_enabled;
- webkit_glue::ApplyWebPreferences(*prefs, shell_->webView());
-}
-
-void TestWebViewDelegate::SetUserStyleSheetLocation(const GURL& location) {
- WebPreferences* prefs = shell_->GetWebPreferences();
- prefs->user_style_sheet_enabled = true;
- prefs->user_style_sheet_location = location;
- webkit_glue::ApplyWebPreferences(*prefs, shell_->webView());
-}
-
-void TestWebViewDelegate::SetAuthorAndUserStylesEnabled(bool is_enabled) {
- WebPreferences* prefs = shell_->GetWebPreferences();
- prefs->author_and_user_styles_enabled = is_enabled;
- webkit_glue::ApplyWebPreferences(*prefs, shell_->webView());
-}
-
-// WebViewClient -------------------------------------------------------------
-WebView* TestWebViewDelegate::createView(
- WebFrame* creator,
- const WebURLRequest& request,
- const WebWindowFeatures& window_features,
- const WebString& frame_name,
- WebNavigationPolicy policy) {
- return shell_->CreateWebView();
-}
-
-WebWidget* TestWebViewDelegate::createPopupMenu(WebPopupType popup_type) {
- // TODO(darin): Should we take into account |popup_type| (for activation
- // purpose)?
- return shell_->CreatePopupWidget();
-}
-
-WebStorageNamespace* TestWebViewDelegate::createSessionStorageNamespace(
- unsigned quota) {
- return SimpleDomStorageSystem::instance().CreateSessionStorageNamespace();
-}
-
-void TestWebViewDelegate::didAddMessageToConsole(
- const WebConsoleMessage& message, const WebString& source_name,
- unsigned source_line) {
- logging::LogMessage("CONSOLE", 0).stream() << "\""
- << message.text.utf8().data()
- << ",\" source: "
- << source_name.utf8().data()
- << "("
- << source_line
- << ")";
-}
-
-void TestWebViewDelegate::didStartLoading() {
- shell_->set_is_loading(true);
- shell_->UpdateNavigationControls();
-}
-
-void TestWebViewDelegate::didStopLoading() {
- shell_->set_is_loading(false);
- shell_->UpdateNavigationControls();
-}
-
-// The output from these methods in layout test mode should match that
-// expected by the layout tests. See EditingDelegate.m in DumpRenderTree.
-
-bool TestWebViewDelegate::shouldBeginEditing(const WebRange& range) {
- return shell_->AcceptsEditing();
-}
-
-bool TestWebViewDelegate::shouldEndEditing(const WebRange& range) {
- return shell_->AcceptsEditing();
-}
-
-bool TestWebViewDelegate::shouldInsertNode(const WebNode& node,
- const WebRange& range,
- WebEditingAction action) {
- return shell_->AcceptsEditing();
-}
-
-bool TestWebViewDelegate::shouldInsertText(const WebString& text,
- const WebRange& range,
- WebEditingAction action) {
- return shell_->AcceptsEditing();
-}
-
-bool TestWebViewDelegate::shouldChangeSelectedRange(const WebRange& from_range,
- const WebRange& to_range,
- WebTextAffinity affinity,
- bool still_selecting) {
- return shell_->AcceptsEditing();
-}
-
-bool TestWebViewDelegate::shouldDeleteRange(const WebRange& range) {
- return shell_->AcceptsEditing();
-}
-
-bool TestWebViewDelegate::shouldApplyStyle(const WebString& style,
- const WebRange& range) {
- return shell_->AcceptsEditing();
-}
-
-void TestWebViewDelegate::didBeginEditing() {
-}
-
-void TestWebViewDelegate::didChangeSelection(bool is_empty_selection) {
- UpdateSelectionClipboard(is_empty_selection);
-}
-
-void TestWebViewDelegate::didChangeContents() {
-}
-
-void TestWebViewDelegate::didEndEditing() {
-}
-
-bool TestWebViewDelegate::handleCurrentKeyboardEvent() {
- if (edit_command_name_.empty())
- return false;
-
- WebFrame* frame = shell_->webView()->focusedFrame();
- if (!frame)
- return false;
-
- return frame->executeCommand(WebString::fromUTF8(edit_command_name_),
- WebString::fromUTF8(edit_command_value_));
-}
-
-void TestWebViewDelegate::spellCheck(const WebString& text,
- int& misspelledOffset,
- int& misspelledLength) {
-#if defined(OS_MACOSX)
- // Check the spelling of the given text.
- // TODO(hbono): rebaseline layout-test results of Windows and Linux so we
- // can enable this mock spellchecker on them.
- base::string16 word(text);
- mock_spellcheck_.SpellCheckWord(word, &misspelledOffset, &misspelledLength);
-#endif
-}
-
-WebString TestWebViewDelegate::autoCorrectWord(const WebString& word) {
- // Returns an empty string as Mac WebKit ('WebKitSupport/WebEditorClient.mm')
- // does. (If this function returns a non-empty string, WebKit replaces the
- // given misspelled string with the result one. This process executes some
- // editor commands and causes layout-test failures.)
- return WebString();
-}
-
-void TestWebViewDelegate::runModalAlertDialog(
- WebFrame* frame, const WebString& message) {
- if (!shell_->layout_test_mode()) {
- ShowJavaScriptAlert(message);
- } else {
- printf("ALERT: %s\n", message.utf8().data());
- }
-}
-
-bool TestWebViewDelegate::runModalConfirmDialog(
- WebFrame* frame, const WebString& message) {
- if (shell_->layout_test_mode()) {
- // When running tests, write to stdout.
- printf("CONFIRM: %s\n", message.utf8().data());
- return true;
- }
- return false;
-}
-
-bool TestWebViewDelegate::runModalPromptDialog(
- WebFrame* frame, const WebString& message, const WebString& default_value,
- WebString* actual_value) {
- if (shell_->layout_test_mode()) {
- // When running tests, write to stdout.
- printf("PROMPT: %s, default text: %s\n",
- message.utf8().data(),
- default_value.utf8().data());
- return true;
- }
- return false;
-}
-
-bool TestWebViewDelegate::runModalBeforeUnloadDialog(
- WebFrame* frame, const WebString& message) {
- return true; // Allow window closure.
-}
-
-
-
-
-void TestWebViewDelegate::setStatusText(const WebString& text) {
-}
-
-void TestWebViewDelegate::startDragging(
- WebFrame* frame,
- const WebDragData& data,
- WebDragOperationsMask mask,
- const WebImage& image,
- const WebPoint& image_offset) {
- shell_->webView()->dragSourceSystemDragEnded();
-}
-
-void TestWebViewDelegate::navigateBackForwardSoon(int offset) {
- shell_->navigation_controller()->GoToOffset(offset);
-}
-
-int TestWebViewDelegate::historyBackListCount() {
- int current_index =
- shell_->navigation_controller()->GetLastCommittedEntryIndex();
- return current_index;
-}
-
-int TestWebViewDelegate::historyForwardListCount() {
- int current_index =
- shell_->navigation_controller()->GetLastCommittedEntryIndex();
- return shell_->navigation_controller()->GetEntryCount() - current_index - 1;
-}
-
-WebNotificationPresenter* TestWebViewDelegate::notificationPresenter() {
- return shell_->notification_presenter();
-}
-
-WebKit::WebGeolocationClient* TestWebViewDelegate::geolocationClient() {
- return shell_->geolocation_client_mock();
-}
-
-WebKit::WebDeviceOrientationClient*
-TestWebViewDelegate::deviceOrientationClient() {
- return shell_->device_orientation_client_mock();
-}
-
-WebKit::WebSpeechInputController* TestWebViewDelegate::speechInputController(
- WebKit::WebSpeechInputListener* listener) {
- return 0;
-}
-
-// WebWidgetClient -----------------------------------------------------------
-
-void TestWebViewDelegate::didInvalidateRect(const WebRect& rect) {
- if (WebWidgetHost* host = GetWidgetHost())
- host->DidInvalidateRect(rect);
-}
-
-void TestWebViewDelegate::didScrollRect(int dx, int dy,
- const WebRect& clip_rect) {
- if (WebWidgetHost* host = GetWidgetHost())
- host->DidScrollRect(dx, dy, clip_rect);
-}
-
-void TestWebViewDelegate::scheduleComposite() {
- if (WebWidgetHost* host = GetWidgetHost())
- host->ScheduleComposite();
-}
-
-void TestWebViewDelegate::scheduleAnimation() {
- if (WebWidgetHost* host = GetWidgetHost())
- host->ScheduleAnimation();
-}
-
-void TestWebViewDelegate::didFocus() {
- if (WebWidgetHost* host = GetWidgetHost())
- shell_->SetFocus(host, true);
-}
-
-void TestWebViewDelegate::didBlur() {
- if (WebWidgetHost* host = GetWidgetHost())
- shell_->SetFocus(host, false);
-}
-
-WebScreenInfo TestWebViewDelegate::screenInfo() {
- if (WebWidgetHost* host = GetWidgetHost())
- return host->GetScreenInfo();
-
- return WebScreenInfo();
-}
-
-// WebFrameClient ------------------------------------------------------------
-
-WebPlugin* TestWebViewDelegate::createPlugin(WebFrame* frame,
- const WebPluginParams& params) {
- bool allow_wildcard = true;
- std::vector<webkit::WebPluginInfo> plugins;
- std::vector<std::string> mime_types;
- webkit::npapi::PluginList::Singleton()->GetPluginInfoArray(
- params.url, params.mimeType.utf8(), allow_wildcard,
- NULL, &plugins, &mime_types);
- if (plugins.empty())
- return NULL;
-
- WebPluginParams params_copy = params;
- params_copy.mimeType = WebString::fromUTF8(mime_types.front());
-
-#if defined(OS_MACOSX)
- if (!shell_->layout_test_mode()) {
- bool flash = LowerCaseEqualsASCII(params_copy.mimeType.utf8(),
- kFlashPluginSwfMimeType);
- if (flash) {
- // Mac does not support windowed plugins. Force Flash plugins to use
- // windowless mode by setting the wmode="opaque" attribute.
- DCHECK(params_copy.attributeNames.size() ==
- params_copy.attributeValues.size());
- size_t size = params_copy.attributeNames.size();
-
- WebVector<WebString> new_names(size+1), new_values(size+1);
-
- for (size_t i = 0; i < size; ++i) {
- new_names[i] = params_copy.attributeNames[i];
- new_values[i] = params_copy.attributeValues[i];
- }
-
- new_names[size] = "wmode";
- new_values[size] = "opaque";
-
- params_copy.attributeNames.swap(new_names);
- params_copy.attributeValues.swap(new_values);
-
- return new webkit::npapi::WebPluginImpl(
- frame, params_copy, plugins.front().path, AsWeakPtr());
- }
- }
-#endif // defined (OS_MACOSX)
-
- return new webkit::npapi::WebPluginImpl(
- frame, params, plugins.front().path, AsWeakPtr());
-}
-
-WebMediaPlayer* TestWebViewDelegate::createMediaPlayer(
- WebFrame* frame, const WebKit::WebURL& url, WebMediaPlayerClient* client) {
- webkit_media::WebMediaPlayerParams params(
- NULL, NULL, new media::MediaLog());
- return new webkit_media::WebMediaPlayerImpl(
- frame,
- client,
- base::WeakPtr<webkit_media::WebMediaPlayerDelegate>(),
- params);
-}
-
-WebApplicationCacheHost* TestWebViewDelegate::createApplicationCacheHost(
- WebFrame* frame, WebApplicationCacheHostClient* client) {
- return SimpleAppCacheSystem::CreateApplicationCacheHost(client);
-}
-
-bool TestWebViewDelegate::allowPlugins(WebFrame* frame,
- bool enabled_per_settings) {
- return enabled_per_settings && shell_->allow_plugins();
-}
-
-bool TestWebViewDelegate::allowImage(WebFrame* frame,
- bool enabled_per_settings,
- const WebURL& image_url) {
- return enabled_per_settings && shell_->allow_images();
-}
-
-void TestWebViewDelegate::loadURLExternally(
- WebFrame* frame, const WebURLRequest& request,
- WebNavigationPolicy policy) {
- DCHECK_NE(policy, WebKit::WebNavigationPolicyCurrentTab);
- TestShell* shell = NULL;
- if (TestShell::CreateNewWindow(request.url(), &shell))
- shell->Show(policy);
-}
-
-WebNavigationPolicy TestWebViewDelegate::decidePolicyForNavigation(
- WebFrame* frame, WebDataSource::ExtraData* extraData,
- const WebURLRequest& request, WebNavigationType type,
- WebNavigationPolicy default_policy, bool is_redirect) {
- WebNavigationPolicy result;
- if (policy_delegate_enabled_) {
- printf("Policy delegate: attempt to load %s with navigation type '%s'\n",
- GetURLDescription(request.url()).c_str(),
- WebNavigationTypeToString(type));
- if (policy_delegate_is_permissive_) {
- result = WebKit::WebNavigationPolicyCurrentTab;
- } else {
- result = WebKit::WebNavigationPolicyIgnore;
- }
- } else {
- result = default_policy;
- }
- return result;
-}
-
-WebNavigationPolicy TestWebViewDelegate::decidePolicyForNavigation(
- WebFrame* frame, const WebURLRequest& request,
- WebNavigationType type, WebNavigationPolicy default_policy,
- bool is_redirect) {
- return decidePolicyForNavigation(frame, 0, request, type,
- default_policy, is_redirect);
-}
-
-bool TestWebViewDelegate::canHandleRequest(
- WebFrame* frame, const WebURLRequest& request) {
- GURL url = request.url();
- // Just reject the scheme used in
- // LayoutTests/http/tests/misc/redirect-to-external-url.html
- return !url.SchemeIs("spaceballs");
-}
-
-WebURLError TestWebViewDelegate::cannotHandleRequestError(
- WebFrame* frame, const WebURLRequest& request) {
- WebURLError error;
- // A WebKit layout test expects the following values.
- // unableToImplementPolicyWithError() below prints them.
- error.domain = WebString::fromUTF8("WebKitErrorDomain");
- error.reason = 101;
- error.unreachableURL = request.url();
- return error;
-}
-
-WebURLError TestWebViewDelegate::cancelledError(
- WebFrame* frame, const WebURLRequest& request) {
- WebURLError error;
- error.domain = WebString::fromUTF8(net::kErrorDomain);
- error.reason = net::ERR_ABORTED;
- error.unreachableURL = request.url();
- return error;
-}
-
-void TestWebViewDelegate::unableToImplementPolicyWithError(
- WebFrame* frame, const WebURLError& error) {
- std::string domain = error.domain.utf8();
- printf("Policy delegate: unable to implement policy with error domain '%s', "
- "error code %d, in frame '%s'\n",
- domain.data(), error.reason, frame->uniqueName().utf8().data());
-}
-
-void TestWebViewDelegate::willPerformClientRedirect(
- WebFrame* frame, const WebURL& from, const WebURL& to,
- double interval, double fire_time) {
-}
-
-void TestWebViewDelegate::didCancelClientRedirect(WebFrame* frame) {
-}
-
-void TestWebViewDelegate::didCreateDataSource(
- WebFrame* frame, WebDataSource* ds) {
- ds->setExtraData(pending_extra_data_.release());
-}
-
-void TestWebViewDelegate::didStartProvisionalLoad(WebFrame* frame) {
- UpdateAddressBar(frame->view());
-}
-
-void TestWebViewDelegate::didReceiveServerRedirectForProvisionalLoad(
- WebFrame* frame) {
- UpdateAddressBar(frame->view());
-}
-
-void TestWebViewDelegate::didFailProvisionalLoad(
- WebFrame* frame, const WebURLError& error) {
- // Don't display an error page if we're running layout tests, because
- // DumpRenderTree doesn't.
- if (shell_->layout_test_mode())
- return;
-
- // Don't display an error page if this is simply a cancelled load. Aside
- // from being dumb, WebCore doesn't expect it and it will cause a crash.
- if (error.reason == net::ERR_ABORTED)
- return;
-
- const WebDataSource* failed_ds = frame->provisionalDataSource();
-
- TestShellExtraData* extra_data =
- static_cast<TestShellExtraData*>(failed_ds->extraData());
- bool replace = extra_data && extra_data->pending_page_id != -1;
-
- // Ensure the error page ends up with the same page ID if we are replacing.
- if (replace)
- set_pending_extra_data(new TestShellExtraData(extra_data->pending_page_id));
-
- const std::string& error_text =
- base::StringPrintf("Error %d when loading url %s", error.reason,
- failed_ds->request().url().spec().data());
-
- // Make sure we never show errors in view source mode.
- frame->enableViewSourceMode(false);
-
- frame->loadHTMLString(
- error_text, GURL("testshell-error:"), error.unreachableURL, replace);
-
- // In case the load failed before DidCreateDataSource was called.
- if (replace)
- set_pending_extra_data(NULL);
-}
-
-void TestWebViewDelegate::didCommitProvisionalLoad(
- WebFrame* frame, bool is_new_navigation) {
- UpdateForCommittedLoad(frame, is_new_navigation);
-}
-
-void TestWebViewDelegate::didReceiveTitle(
- WebFrame* frame, const WebString& title, WebTextDirection direction) {
- SetPageTitle(title);
-}
-
-void TestWebViewDelegate::didFinishDocumentLoad(WebFrame* frame) {
- unsigned pending_unload_events = frame->unloadListenerCount();
- if (pending_unload_events) {
- printf("%s - has %u onunload handler(s)\n",
- UTF16ToUTF8(GetFrameDescription(frame)).c_str(), pending_unload_events);
- }
-}
-
-void TestWebViewDelegate::didHandleOnloadEvents(WebFrame* frame) {
-}
-
-void TestWebViewDelegate::didFinishLoad(WebFrame* frame) {
- TRACE_EVENT_END_ETW("frame.load", this, frame->document().url().spec());
- UpdateAddressBar(frame->view());
-}
-
-void TestWebViewDelegate::didNavigateWithinPage(
- WebFrame* frame, bool is_new_navigation) {
- frame->dataSource()->setExtraData(pending_extra_data_.release());
-
- UpdateForCommittedLoad(frame, is_new_navigation);
-}
-
-void TestWebViewDelegate::didChangeLocationWithinPage(WebFrame* frame) {
-}
-
-void TestWebViewDelegate::assignIdentifierToRequest(
- WebFrame* frame, unsigned identifier, const WebURLRequest& request) {
-}
-
-void TestWebViewDelegate::willSendRequest(
- WebFrame* frame, unsigned identifier, WebURLRequest& request,
- const WebURLResponse& redirect_response) {
- GURL url = request.url();
- std::string request_url = url.possibly_invalid_spec();
-
- request.setExtraData(
- new webkit_glue::WebURLRequestExtraDataImpl(
- frame->document().referrerPolicy(), WebString()));
-
- if (!redirect_response.isNull() && block_redirects_) {
- printf("Returning null for this redirect\n");
-
- // To block the request, we set its URL to an empty one.
- request.setURL(WebURL());
- return;
- }
-
- if (request_return_null_) {
- // To block the request, we set its URL to an empty one.
- request.setURL(WebURL());
- return;
- }
-
- std::string host = url.host();
- if (TestShell::layout_test_mode() && !host.empty() &&
- (url.SchemeIs("http") || url.SchemeIs("https")) &&
- host != "127.0.0.1" &&
- host != "255.255.255.255" && // Used in some tests that expect to get
- // back an error.
- host != "localhost" &&
- !TestShell::allow_external_pages()) {
- printf("Blocked access to external URL %s\n", request_url.c_str());
-
- // To block the request, we set its URL to an empty one.
- request.setURL(WebURL());
- return;
- }
-
- for (std::set<std::string>::const_iterator header = clear_headers_.begin();
- header != clear_headers_.end(); ++header)
- request.clearHTTPHeaderField(WebString::fromUTF8(*header));
-
- TRACE_EVENT_BEGIN_ETW("url.load", identifier, request_url);
- // Set the new substituted URL.
- request.setURL(GURL(TestShell::RewriteLocalUrl(request_url)));
-}
-
-void TestWebViewDelegate::didReceiveResponse(
- WebFrame* frame, unsigned identifier, const WebURLResponse& response) {
-}
-
-void TestWebViewDelegate::didFinishResourceLoad(
- WebFrame* frame, unsigned identifier) {
- TRACE_EVENT_END_ETW("url.load", identifier, "");
- resource_identifier_map_.erase(identifier);
-}
-
-void TestWebViewDelegate::didFailResourceLoad(
- WebFrame* frame, unsigned identifier, const WebURLError& error) {
- resource_identifier_map_.erase(identifier);
-}
-
-void TestWebViewDelegate::didDisplayInsecureContent(WebFrame* frame) {
-}
-
-void TestWebViewDelegate::didRunInsecureContent(
- WebFrame* frame, const WebSecurityOrigin& origin, const WebURL& target) {
-}
-
-bool TestWebViewDelegate::allowScript(WebFrame* frame,
- bool enabled_per_settings) {
- return enabled_per_settings && shell_->allow_scripts();
-}
-
-void TestWebViewDelegate::openFileSystem(
- WebFrame* frame,
- WebKit::WebFileSystemType type,
- long long size, bool create,
- WebFileSystemCallbacks* callbacks) {
- SimpleFileSystem* fileSystem = static_cast<SimpleFileSystem*>(
- WebKit::Platform::current()->fileSystem());
- fileSystem->OpenFileSystem(frame, type, size, create, callbacks);
-}
-
-// WebPluginPageDelegate -----------------------------------------------------
-
-WebKit::WebPlugin* TestWebViewDelegate::CreatePluginReplacement(
- const base::FilePath& file_path) {
- return NULL;
-}
-
-WebCookieJar* TestWebViewDelegate::GetCookieJar() {
- return WebKit::Platform::current()->cookieJar();
-}
-
-// Public methods ------------------------------------------------------------
-
-TestWebViewDelegate::TestWebViewDelegate(TestShell* shell)
- : policy_delegate_enabled_(false),
- policy_delegate_is_permissive_(false),
- policy_delegate_should_notify_done_(false),
- shell_(shell),
- page_id_(-1),
- last_page_id_updated_(-1),
- using_fake_rect_(false),
-#if defined(TOOLKIT_GTK)
- cursor_type_(GDK_X_CURSOR),
-#endif
- block_redirects_(false),
- request_return_null_(false) {
-}
-
-TestWebViewDelegate::~TestWebViewDelegate() {
-}
-
-void TestWebViewDelegate::Reset() {
- // Do a little placement new dance...
- TestShell* shell = shell_;
- this->~TestWebViewDelegate();
- new (this) TestWebViewDelegate(shell);
-}
-
-void TestWebViewDelegate::RegisterDragDrop() {
-#if defined(OS_WIN)
- // TODO(port): add me once drag and drop works.
- DCHECK(!drop_delegate_);
- drop_delegate_ = new TestDropDelegate(shell_->webViewWnd(),
- shell_->webView());
-#endif
-}
-
-void TestWebViewDelegate::RevokeDragDrop() {
-#if defined(OS_WIN)
- ::RevokeDragDrop(shell_->webViewWnd());
-#endif
-}
-
-void TestWebViewDelegate::SetCustomPolicyDelegate(bool is_custom,
- bool is_permissive) {
- policy_delegate_enabled_ = is_custom;
- policy_delegate_is_permissive_ = is_permissive;
-}
-
-void TestWebViewDelegate::WaitForPolicyDelegate() {
- policy_delegate_enabled_ = true;
- policy_delegate_should_notify_done_ = true;
-}
-
-// Private methods -----------------------------------------------------------
-
-void TestWebViewDelegate::UpdateAddressBar(WebView* webView) {
- WebFrame* main_frame = webView->mainFrame();
-
- WebDataSource* data_source = main_frame->dataSource();
- if (!data_source)
- data_source = main_frame->provisionalDataSource();
- if (!data_source)
- return;
-
- SetAddressBarURL(data_source->request().url());
-}
-
-WebWidgetHost* TestWebViewDelegate::GetWidgetHost() {
- if (this == shell_->delegate())
- return shell_->webViewHost();
- if (this == shell_->popup_delegate())
- return shell_->popupHost();
- return NULL;
-}
-
-void TestWebViewDelegate::UpdateForCommittedLoad(WebFrame* frame,
- bool is_new_navigation) {
- // Code duplicated from RenderView::DidCommitLoadForFrame.
- TestShellExtraData* extra_data = static_cast<TestShellExtraData*>(
- frame->dataSource()->extraData());
-
- if (is_new_navigation) {
- // New navigation.
- UpdateSessionHistory(frame);
- page_id_ = next_page_id_++;
- } else if (extra_data && extra_data->pending_page_id != -1 &&
- !extra_data->request_committed) {
- // This is a successful session history navigation!
- UpdateSessionHistory(frame);
- page_id_ = extra_data->pending_page_id;
- }
-
- // Don't update session history multiple times.
- if (extra_data)
- extra_data->request_committed = true;
-
- UpdateURL(frame);
-}
-
-void TestWebViewDelegate::UpdateURL(WebFrame* frame) {
- WebDataSource* ds = frame->dataSource();
- DCHECK(ds);
-
- const WebURLRequest& request = ds->request();
-
- // Type is unused.
- scoped_ptr<TestNavigationEntry> entry(new TestNavigationEntry);
-
- // Bug 654101: the referrer will be empty on https->http transitions. It
- // would be nice if we could get the real referrer from somewhere.
- entry->SetPageID(page_id_);
- if (ds->hasUnreachableURL()) {
- entry->SetURL(ds->unreachableURL());
- } else {
- entry->SetURL(request.url());
- }
-
- const WebHistoryItem& history_item = frame->currentHistoryItem();
- if (!history_item.isNull())
- entry->SetContentState(webkit_glue::HistoryItemToString(history_item));
-
- shell_->navigation_controller()->DidNavigateToEntry(entry.release());
- shell_->UpdateNavigationControls();
- UpdateAddressBar(frame->view());
-
- last_page_id_updated_ = std::max(last_page_id_updated_, page_id_);
-}
-
-void TestWebViewDelegate::UpdateSessionHistory(WebFrame* frame) {
- // If we have a valid page ID at this point, then it corresponds to the page
- // we are navigating away from. Otherwise, this is the first navigation, so
- // there is no past session history to record.
- if (page_id_ == -1)
- return;
-
- TestNavigationEntry* entry = static_cast<TestNavigationEntry*>(
- shell_->navigation_controller()->GetEntryWithPageID(page_id_));
- if (!entry)
- return;
-
- const WebHistoryItem& history_item =
- shell_->webView()->mainFrame()->previousHistoryItem();
- if (history_item.isNull())
- return;
-
- entry->SetContentState(webkit_glue::HistoryItemToString(history_item));
-}
-
-base::string16 TestWebViewDelegate::GetFrameDescription(WebFrame* webframe) {
- std::string name = UTF16ToUTF8(webframe->uniqueName());
-
- if (webframe == shell_->webView()->mainFrame()) {
- if (name.length())
- name = "main frame \"" + name + "\"";
- else
- name = "main frame";
- } else {
- if (name.length())
- name = "frame \"" + name + "\"";
- else
- name = "frame (anonymous)";
- }
- return UTF8ToUTF16(name);
-}
-
-void TestWebViewDelegate::set_fake_window_rect(const WebRect& rect) {
- fake_rect_ = rect;
- using_fake_rect_ = true;
-}
-
-WebRect TestWebViewDelegate::fake_window_rect() {
- return fake_rect_;
-}

Powered by Google App Engine
This is Rietveld 408576698