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

Unified Diff: Tools/DumpRenderTree/chromium/WebViewHost.cpp

Issue 16844004: Stop building DumpRenderTree and delete the files. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: merge Created 7 years, 6 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
« no previous file with comments | « Tools/DumpRenderTree/chromium/WebViewHost.h ('k') | Tools/DumpRenderTree/chromium/config.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Tools/DumpRenderTree/chromium/WebViewHost.cpp
diff --git a/Tools/DumpRenderTree/chromium/WebViewHost.cpp b/Tools/DumpRenderTree/chromium/WebViewHost.cpp
deleted file mode 100644
index a2dcb0e81900d136beacf1f04f890ba9aedba823..0000000000000000000000000000000000000000
--- a/Tools/DumpRenderTree/chromium/WebViewHost.cpp
+++ /dev/null
@@ -1,1008 +0,0 @@
-/*
- * Copyright (C) 2010, 2011, 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WebViewHost.h"
-
-#include "DRTDevToolsAgent.h"
-#include "Task.h"
-#include "TestNavigationController.h"
-#include "TestShell.h"
-#include "WebCachedURLRequest.h"
-#include "WebConsoleMessage.h"
-#include "WebContextMenuData.h"
-#include "WebDOMMessageEvent.h"
-#include "WebDataSource.h"
-#include "WebDocument.h"
-#include "WebElement.h"
-#include "WebFrame.h"
-#include "WebHistoryItem.h"
-#include "WebKit.h"
-#include "WebNode.h"
-#include "WebPluginParams.h"
-#include "WebPopupMenu.h"
-#include "WebPopupType.h"
-#include "WebPrintParams.h"
-#include "WebRange.h"
-#include "WebScreenInfo.h"
-#include "WebSerializedScriptValue.h"
-#include "WebUserGestureIndicator.h"
-#include "WebView.h"
-#include "WebWindowFeatures.h"
-#include "webkit/support/test_media_stream_client.h"
-#include "webkit/support/webkit_support.h"
-#include <cctype>
-#include <clocale>
-#include "public/platform/WebCString.h"
-#include "public/platform/WebCompositorOutputSurface.h"
-#include "public/platform/WebCompositorSupport.h"
-#include "public/platform/WebDragData.h"
-#include "public/platform/WebRect.h"
-#include "public/platform/WebSize.h"
-#include "public/platform/WebStorageNamespace.h"
-#include "public/platform/WebThread.h"
-#include "public/platform/WebURLRequest.h"
-#include "public/platform/WebURLResponse.h"
-
-#include <wtf/Assertions.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/Vector.h>
-
-using namespace WebCore;
-using namespace WebKit;
-using namespace WebTestRunner;
-using namespace std;
-
-static const int screenWidth = 1920;
-static const int screenHeight = 1080;
-
-const int WebViewHost::screenUnavailableBorder = 8;
-
-static int nextPageID = 1;
-
-// WebViewClient -------------------------------------------------------------
-
-WebView* WebViewHost::createView(WebFrame* creator, const WebURLRequest&, const WebWindowFeatures&, const WebString&, WebNavigationPolicy)
-{
- WebUserGestureIndicator::consumeUserGesture();
- return m_shell->createNewWindow(WebURL())->webView();
-}
-
-WebWidget* WebViewHost::createPopupMenu(WebPopupType type)
-{
- switch (type) {
- case WebKit::WebPopupTypeNone:
- case WebKit::WebPopupTypePage:
- case WebKit::WebPopupTypeHelperPlugin:
- break;
- case WebKit::WebPopupTypeSelect:
- case WebKit::WebPopupTypeSuggestion:
- m_popupmenus.append(WebPopupMenu::create(0));
- return m_popupmenus.last();
- }
- return 0;
-}
-
-WebWidget* WebViewHost::createPopupMenu(const WebPopupMenuInfo&)
-{
- // Do not use this method. It's been replaced by createExternalPopupMenu.
- ASSERT_NOT_REACHED();
- return 0;
-}
-
-WebStorageNamespace* WebViewHost::createSessionStorageNamespace(unsigned quota)
-{
- return webkit_support::CreateSessionStorageNamespace(quota);
-}
-
-void WebViewHost::didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine)
-{
-}
-
-void WebViewHost::didStartLoading()
-{
-}
-
-void WebViewHost::didStopLoading()
-{
-}
-
-bool WebViewHost::shouldBeginEditing(const WebRange& range)
-{
- return true;
-}
-
-bool WebViewHost::shouldEndEditing(const WebRange& range)
-{
- return true;
-}
-
-bool WebViewHost::shouldInsertNode(const WebNode& node, const WebRange& range, WebEditingAction action)
-{
- return true;
-}
-
-bool WebViewHost::shouldInsertText(const WebString& text, const WebRange& range, WebEditingAction action)
-{
- return true;
-}
-
-bool WebViewHost::shouldChangeSelectedRange(
- const WebRange& fromRange, const WebRange& toRange, WebTextAffinity affinity, bool stillSelecting)
-{
- return true;
-}
-
-bool WebViewHost::shouldDeleteRange(const WebRange& range)
-{
- return true;
-}
-
-bool WebViewHost::shouldApplyStyle(const WebString& style, const WebRange& range)
-{
- return true;
-}
-
-bool WebViewHost::handleCurrentKeyboardEvent()
-{
- if (m_editCommandName.empty())
- return false;
- WebFrame* frame = webView()->focusedFrame();
- if (!frame)
- return false;
-
- return frame->executeCommand(WebString::fromUTF8(m_editCommandName), WebString::fromUTF8(m_editCommandValue));
-}
-
-// WebKit::WebPrerendererClient
-
-void WebViewHost::willAddPrerender(WebKit::WebPrerender*)
-{
-}
-
-
-void WebViewHost::runModalAlertDialog(WebFrame*, const WebString& message)
-{
-}
-
-bool WebViewHost::runModalConfirmDialog(WebFrame*, const WebString& message)
-{
- return true;
-}
-
-bool WebViewHost::runModalPromptDialog(WebFrame* frame, const WebString& message,
- const WebString& defaultValue, WebString*)
-{
- return true;
-}
-
-void WebViewHost::showContextMenu(WebFrame*, const WebContextMenuData& contextMenuData)
-{
-}
-
-void WebViewHost::didUpdateLayout()
-{
-#if OS(DARWIN)
- static bool queryingPreferredSize = false;
- if (queryingPreferredSize)
- return;
-
- queryingPreferredSize = true;
- // Query preferred width to emulate the same functionality in Chromium:
- // see RenderView::CheckPreferredSize (src/content/renderer/render_view.cc)
- // and TabContentsViewMac::RenderViewCreated (src/chrome/browser/tab_contents/tab_contents_view_mac.mm)
- webView()->contentsPreferredMinimumSize();
- queryingPreferredSize = false;
-#endif
-}
-
-void WebViewHost::navigateBackForwardSoon(int offset)
-{
- navigationController()->goToOffset(offset);
-}
-
-int WebViewHost::historyBackListCount()
-{
- return navigationController()->lastCommittedEntryIndex();
-}
-
-int WebViewHost::historyForwardListCount()
-{
- int currentIndex =navigationController()->lastCommittedEntryIndex();
- return navigationController()->entryCount() - currentIndex - 1;
-}
-
-// WebWidgetClient -----------------------------------------------------------
-
-void WebViewHost::didAutoResize(const WebSize& newSize)
-{
- // Purposely don't include the virtualWindowBorder in this case so that
- // window.inner[Width|Height] is the same as window.outer[Width|Height]
- setWindowRect(WebRect(0, 0, newSize.width, newSize.height));
-}
-
-class WebViewHostDRTLayerTreeViewClient : public webkit_support::DRTLayerTreeViewClient {
-public:
- explicit WebViewHostDRTLayerTreeViewClient(WebViewHost* host)
- : m_host(host) { }
- virtual ~WebViewHostDRTLayerTreeViewClient() { }
-
- virtual void Layout() { m_host->webView()->layout(); }
- virtual void ScheduleComposite() { m_host->proxy()->scheduleComposite(); }
-
-private:
- WebViewHost* m_host;
-};
-
-void WebViewHost::initializeLayerTreeView()
-{
- m_layerTreeViewClient = adoptPtr(new WebViewHostDRTLayerTreeViewClient(this));
- if (m_shell->softwareCompositingEnabled()) {
- m_layerTreeView = adoptPtr(webkit_support::CreateLayerTreeView(
- webkit_support::SOFTWARE_CONTEXT,
- m_layerTreeViewClient.get(),
- m_shell->webCompositorThread()));
- } else {
- m_layerTreeView = adoptPtr(webkit_support::CreateLayerTreeView(
- webkit_support::MESA_CONTEXT,
- m_layerTreeViewClient.get(),
- m_shell->webCompositorThread()));
- }
-
- ASSERT(m_layerTreeView);
- updateViewportSize();
- m_layerTreeView->setSurfaceReady();
-}
-
-WebLayerTreeView* WebViewHost::layerTreeView()
-{
- return m_layerTreeView.get();
-}
-
-void WebViewHost::scheduleAnimation()
-{
- if (m_finished) {
- return;
- }
- if (!m_animateScheduled) {
- m_animateScheduled = true;
- postDelayedTask(new HostMethodTask(this, &WebViewHost::animateNow), 1);
- }
-}
-
-void WebViewHost::animateNow()
-{
- if (m_animateScheduled) {
- m_animateScheduled = false;
- webView()->animate(0.0);
- }
-}
-
-void WebViewHost::didFocus()
-{
-}
-
-void WebViewHost::didBlur()
-{
-}
-
-WebScreenInfo WebViewHost::screenInfo()
-{
- // We don't need to set actual values.
- WebScreenInfo info;
- info.depth = 24;
- info.depthPerComponent = 8;
- info.isMonochrome = false;
- info.rect = WebRect(0, 0, screenWidth, screenHeight);
- // Use values different from info.rect for testing.
- info.availableRect = WebRect(screenUnavailableBorder, screenUnavailableBorder,
- screenWidth - screenUnavailableBorder * 2,
- screenHeight - screenUnavailableBorder * 2);
- return info;
-}
-
-void WebViewHost::show(WebNavigationPolicy)
-{
- m_hasWindow = true;
-}
-
-
-
-void WebViewHost::closeWidget()
-{
- m_hasWindow = false;
- m_shell->closeWindow(this);
- // No more code here, we should be deleted at this point.
-}
-
-void WebViewHost::closeWidgetSoon()
-{
- postDelayedTask(new HostMethodTask(this, &WebViewHost::closeWidget), 0);
-}
-
-void WebViewHost::didChangeCursor(const WebCursorInfo& cursorInfo)
-{
- if (!hasWindow())
- return;
- m_currentCursor = cursorInfo;
-}
-
-WebRect WebViewHost::windowRect()
-{
- return m_windowRect;
-}
-
-void WebViewHost::setWindowRect(const WebRect& rect)
-{
- m_windowRect = rect;
- const int border2 = TestShell::virtualWindowBorder * 2;
- if (m_windowRect.width <= border2)
- m_windowRect.width = 1 + border2;
- if (m_windowRect.height <= border2)
- m_windowRect.height = 1 + border2;
- int width = m_windowRect.width - border2;
- int height = m_windowRect.height - border2;
- webWidget()->resize(WebSize(width, height));
- updateViewportSize();
-}
-
-WebRect WebViewHost::rootWindowRect()
-{
- return windowRect();
-}
-
-WebRect WebViewHost::windowResizerRect()
-{
- // Not necessary.
- return WebRect();
-}
-
-void WebViewHost::runModal()
-{
- if (m_shell->isDisplayingModalDialog()) {
- // DumpRenderTree doesn't support real modal dialogs, so a test shouldn't try to start two modal dialogs at the same time.
- ASSERT_NOT_REACHED();
- return;
- }
- // This WebViewHost might get deleted before RunMessageLoop() returns, so keep a copy of the m_shell member variable around.
- ASSERT(m_shell->webViewHost() != this);
- TestShell* shell = m_shell;
- shell->setIsDisplayingModalDialog(true);
- bool oldState = webkit_support::MessageLoopNestableTasksAllowed();
- webkit_support::MessageLoopSetNestableTasksAllowed(true);
- m_inModalLoop = true;
- webkit_support::RunMessageLoop();
- webkit_support::MessageLoopSetNestableTasksAllowed(oldState);
- shell->setIsDisplayingModalDialog(false);
-}
-
-bool WebViewHost::enterFullScreen()
-{
- postDelayedTask(new HostMethodTask(this, &WebViewHost::enterFullScreenNow), 0);
- return true;
-}
-
-void WebViewHost::exitFullScreen()
-{
- postDelayedTask(new HostMethodTask(this, &WebViewHost::exitFullScreenNow), 0);
-}
-
-// WebFrameClient ------------------------------------------------------------
-
-WebPlugin* WebViewHost::createPlugin(WebFrame* frame, const WebPluginParams& params)
-{
- return webkit_support::CreateWebPlugin(frame, params);
-}
-
-WebApplicationCacheHost* WebViewHost::createApplicationCacheHost(WebFrame* frame, WebApplicationCacheHostClient* client)
-{
- return webkit_support::CreateApplicationCacheHost(frame, client);
-}
-
-void WebViewHost::loadURLExternally(WebFrame* frame, const WebURLRequest& request, WebNavigationPolicy policy)
-{
- loadURLExternally(frame, request, policy, WebString());
-}
-
-void WebViewHost::loadURLExternally(WebFrame*, const WebURLRequest& request, WebNavigationPolicy policy, const WebString& downloadName)
-{
- ASSERT(policy != WebKit::WebNavigationPolicyCurrentTab);
- WebViewHost* another = m_shell->createNewWindow(request.url());
- if (another)
- another->show(policy);
-}
-
-WebNavigationPolicy WebViewHost::decidePolicyForNavigation(
- WebFrame*, const WebURLRequest&, WebNavigationType, WebNavigationPolicy defaultPolicy, bool)
-{
- return defaultPolicy;
-}
-
-WebURLError WebViewHost::cancelledError(WebFrame*, const WebURLRequest& request)
-{
- return webkit_support::CreateCancelledError(request);
-}
-
-void WebViewHost::unableToImplementPolicyWithError(WebFrame* frame, const WebURLError& error)
-{
-}
-
-void WebViewHost::didCreateDataSource(WebFrame*, WebDataSource* ds)
-{
- ds->setExtraData(m_pendingExtraData.leakPtr());
-}
-
-void WebViewHost::didCommitProvisionalLoad(WebFrame* frame, bool isNewNavigation)
-{
- updateForCommittedLoad(frame, isNewNavigation);
-}
-
-void WebViewHost::didClearWindowObject(WebFrame* frame)
-{
- m_shell->bindJSObjectsToWindow(frame);
-}
-
-void WebViewHost::didReceiveTitle(WebFrame* frame, const WebString& title, WebTextDirection direction)
-{
- setPageTitle(title);
-}
-
-void WebViewHost::didChangeIcon(WebFrame* , WebIconURL::Type)
-{
-}
-
-void WebViewHost::didNavigateWithinPage(WebFrame* frame, bool isNewNavigation)
-{
- frame->dataSource()->setExtraData(m_pendingExtraData.leakPtr());
-
- updateForCommittedLoad(frame, isNewNavigation);
-}
-
-void WebViewHost::willSendRequest(WebFrame* frame, unsigned, WebURLRequest& request, const WebURLResponse&)
-{
- if (request.url().isEmpty())
- return;
-
- request.setExtraData(webkit_support::CreateWebURLRequestExtraData(frame->document().referrerPolicy()));
-}
-
-void WebViewHost::openFileSystem(WebFrame* frame, WebFileSystemType type, long long size, bool create, WebFileSystemCallbacks* callbacks)
-{
- webkit_support::OpenFileSystem(frame, type, size, create, callbacks);
-}
-
-void WebViewHost::deleteFileSystem(WebKit::WebFrame* frame, WebKit::WebFileSystemType type, WebKit::WebFileSystemCallbacks* callbacks)
-{
- webkit_support::DeleteFileSystem(frame, type, callbacks);
-}
-
-bool WebViewHost::willCheckAndDispatchMessageEvent(WebFrame* sourceFrame, WebFrame* targetFrame, WebSecurityOrigin target, WebDOMMessageEvent event)
-{
- return false;
-}
-
-// WebTestDelegate ------------------------------------------------------------
-
-void WebViewHost::setEditCommand(const string& name, const string& value)
-{
- m_editCommandName = name;
- m_editCommandValue = value;
-}
-
-void WebViewHost::clearEditCommand()
-{
- m_editCommandName.clear();
- m_editCommandValue.clear();
-}
-
-void WebViewHost::setGamepadData(const WebGamepads& pads)
-{
- webkit_support::SetGamepadData(pads);
-}
-
-void WebViewHost::printMessage(const std::string& message)
-{
- printf("%s", message.c_str());
-}
-
-void WebViewHost::postTask(WebTask* task)
-{
- ::postTask(task);
-}
-
-void WebViewHost::postDelayedTask(WebTask* task, long long ms)
-{
- ::postDelayedTask(task, ms);
-}
-
-WebString WebViewHost::registerIsolatedFileSystem(const WebVector<WebString>& absoluteFilenames)
-{
- return webkit_support::RegisterIsolatedFileSystem(absoluteFilenames);
-}
-
-long long WebViewHost::getCurrentTimeInMillisecond()
-{
- return webkit_support::GetCurrentTimeInMillisecond();
-}
-
-WebKit::WebString WebViewHost::getAbsoluteWebStringFromUTF8Path(const std::string& path)
-{
- return webkit_support::GetAbsoluteWebStringFromUTF8Path(path);
-}
-
-WebURL WebViewHost::localFileToDataURL(const WebKit::WebURL& url)
-{
- return webkit_support::LocalFileToDataURL(url);
-}
-
-WebURL WebViewHost::rewriteLayoutTestsURL(const std::string& url)
-{
- return webkit_support::RewriteLayoutTestsURL(url);
-}
-
-WebPreferences* WebViewHost::preferences()
-{
- return m_shell->preferences();
-}
-
-void WebViewHost::applyPreferences()
-{
- m_shell->applyPreferences();
-}
-
-std::string WebViewHost::makeURLErrorDescription(const WebKit::WebURLError& error)
-{
- return webkit_support::MakeURLErrorDescription(error);
-}
-
-void WebViewHost::showDevTools()
-{
- m_shell->showDevTools();
-}
-
-void WebViewHost::closeDevTools()
-{
- m_shell->closeDevTools();
-}
-
-void WebViewHost::evaluateInWebInspector(long callID, const std::string& script)
-{
- m_shell->drtDevToolsAgent()->evaluateInWebInspector(callID, script);
-}
-
-void WebViewHost::clearAllDatabases()
-{
- webkit_support::ClearAllDatabases();
-}
-
-void WebViewHost::setDatabaseQuota(int quota)
-{
- webkit_support::SetDatabaseQuota(quota);
-}
-
-void WebViewHost::setDeviceScaleFactor(float deviceScaleFactor)
-{
- webView()->setDeviceScaleFactor(deviceScaleFactor);
- updateViewportSize();
-}
-
-void WebViewHost::setFocus(WebTestProxyBase* proxy, bool focused)
-{
- for (size_t i = 0; i < m_shell->windowList().size(); ++i) {
- if (m_shell->windowList()[i]->proxy() == proxy)
- m_shell->setFocus(m_shell->windowList()[i]->webWidget(), focused);
- }
-}
-
-void WebViewHost::setAcceptAllCookies(bool acceptCookies)
-{
- webkit_support::SetAcceptAllCookies(acceptCookies);
-}
-
-string WebViewHost::pathToLocalResource(const string& url)
-{
-#if OS(WINDOWS)
- if (!url.find("/tmp/")) {
- // We want a temp file.
- const unsigned tempPrefixLength = 5;
- size_t bufferSize = MAX_PATH;
- OwnArrayPtr<WCHAR> tempPath = adoptArrayPtr(new WCHAR[bufferSize]);
- DWORD tempLength = ::GetTempPathW(bufferSize, tempPath.get());
- if (tempLength + url.length() - tempPrefixLength + 1 > bufferSize) {
- bufferSize = tempLength + url.length() - tempPrefixLength + 1;
- tempPath = adoptArrayPtr(new WCHAR[bufferSize]);
- tempLength = GetTempPathW(bufferSize, tempPath.get());
- ASSERT(tempLength < bufferSize);
- }
- string resultPath(WebString(tempPath.get(), tempLength).utf8());
- resultPath.append(url.substr(tempPrefixLength));
- return resultPath;
- }
-#endif
-
- // Some layout tests use file://// which we resolve as a UNC path. Normalize
- // them to just file:///.
- string lowerUrl = url;
- string result = url;
- transform(lowerUrl.begin(), lowerUrl.end(), lowerUrl.begin(), ::tolower);
- while (!lowerUrl.find("file:////")) {
- result = result.substr(0, 8) + result.substr(9);
- lowerUrl = lowerUrl.substr(0, 8) + lowerUrl.substr(9);
- }
- return webkit_support::RewriteLayoutTestsURL(result).spec();
-}
-
-void WebViewHost::setLocale(const std::string& locale)
-{
- setlocale(LC_ALL, locale.c_str());
-}
-
-void WebViewHost::testFinished()
-{
- m_finished = true;
- m_shell->testFinished(this);
-}
-
-void WebViewHost::closeRemainingWindows()
-{
- m_shell->closeRemainingWindows();
-}
-
-int WebViewHost::navigationEntryCount()
-{
- return m_shell->navigationEntryCount();
-}
-
-void WebViewHost::goToOffset(int offset)
-{
- m_shell->goToOffset(offset);
-}
-
-void WebViewHost::reload()
-{
- m_shell->reload();
-}
-
-void WebViewHost::loadURLForFrame(const WebURL& url, const string& frameName)
-{
- if (!url.isValid())
- return;
- TestShell::resizeWindowForTest(this, url);
- navigationController()->loadEntry(TestNavigationEntry::create(-1, url, WebString(), WebString::fromUTF8(frameName)).get());
-}
-
-bool WebViewHost::allowExternalPages()
-{
- return m_shell->allowExternalPages();
-}
-
-void WebViewHost::captureHistoryForWindow(WebTestProxyBase* proxy, WebVector<WebHistoryItem>* history, size_t* currentEntryIndex)
-{
- for (size_t i = 0; i < m_shell->windowList().size(); ++i) {
- if (m_shell->windowList()[i]->proxy() == proxy)
- m_shell->captureHistoryForWindow(i, history, currentEntryIndex);
- }
-}
-
-WebMediaPlayer* WebViewHost::createWebMediaPlayer(WebFrame* frame, const WebURL& url, WebMediaPlayerClient* client)
-{
- return webkit_support::CreateMediaPlayer(frame, url, client,
- testMediaStreamClient()
- );
-}
-
-// Public functions -----------------------------------------------------------
-
-WebViewHost::WebViewHost(TestShell* shell)
- : m_shell(shell)
- , m_proxy(0)
- , m_webWidget(0)
- , m_shutdownWasInvoked(false)
-{
- reset();
-}
-
-WebViewHost::~WebViewHost()
-{
- ASSERT(m_shutdownWasInvoked);
- if (m_inModalLoop)
- webkit_support::QuitMessageLoop();
-}
-
-void WebViewHost::shutdown()
-{
- ASSERT(!m_shutdownWasInvoked);
-
- // DevTools frontend page is supposed to be navigated only once and
- // loading another URL in that Page is an error.
- if (m_shell->devToolsWebView() != this) {
- // Navigate to an empty page to fire all the destruction logic for the
- // current page.
- loadURLForFrame(GURL("about:blank"), string());
- }
-
- for (Vector<WebKit::WebWidget*>::iterator it = m_popupmenus.begin();
- it < m_popupmenus.end(); ++it)
- (*it)->close();
-
- webWidget()->willCloseLayerTreeView();
- m_layerTreeView.clear();
- webWidget()->close();
- m_webWidget = 0;
- m_shutdownWasInvoked = true;
-}
-
-void WebViewHost::setWebWidget(WebKit::WebWidget* widget)
-{
- m_webWidget = widget;
- m_proxy->setWidget(widget);
- webView()->setSpellCheckClient(proxy()->spellCheckClient());
- webView()->setValidationMessageClient(proxy()->validationMessageClient());
- webView()->setPrerendererClient(this);
-}
-
-WebView* WebViewHost::webView() const
-{
- ASSERT(m_webWidget);
- // DRT does not support popup widgets. So m_webWidget is always a WebView.
- return static_cast<WebView*>(m_webWidget);
-}
-
-WebWidget* WebViewHost::webWidget() const
-{
- ASSERT(m_webWidget);
- return m_webWidget;
-}
-
-WebTestProxyBase* WebViewHost::proxy() const
-{
- ASSERT(m_proxy);
- return m_proxy;
-}
-
-void WebViewHost::setProxy(WebTestProxyBase* proxy)
-{
- ASSERT(!m_proxy);
- ASSERT(proxy);
- m_proxy = proxy;
-}
-
-void WebViewHost::reset()
-{
- m_pageId = -1;
- m_lastPageIdUpdated = -1;
- m_hasWindow = false;
- m_inModalLoop = false;
- m_animateScheduled = false;
- m_finished = false;
-
- m_navigationController = adoptPtr(new TestNavigationController(this));
-
- m_pendingExtraData.clear();
- m_editCommandName.clear();
- m_editCommandValue.clear();
-
- m_currentCursor = WebCursorInfo();
- m_windowRect = WebRect();
- // m_proxy is not set when reset() is invoked from the constructor.
- if (m_proxy)
- proxy()->reset();
-
- if (m_webWidget) {
- webView()->mainFrame()->setName(WebString());
- }
-}
-
-void WebViewHost::setClientWindowRect(const WebKit::WebRect& rect)
-{
- setWindowRect(rect);
-}
-
-void WebViewHost::enableAutoResizeMode(const WebSize& minSize, const WebSize& maxSize)
-{
- webView()->enableAutoResizeMode(minSize, maxSize);
-}
-
-void WebViewHost::disableAutoResizeMode(const WebKit::WebSize& newSize)
-{
- if (!newSize.isEmpty())
- setWindowRect(WebRect(0, 0, newSize.width, newSize.height));
- webView()->disableAutoResizeMode();
- if (!newSize.isEmpty())
- webView()->resize(newSize);
-}
-
-bool WebViewHost::navigate(const TestNavigationEntry& entry, bool reload)
-{
- // Get the right target frame for the entry.
- WebFrame* frame = webView()->mainFrame();
- if (!entry.targetFrame().isEmpty())
- frame = webView()->findFrameByName(entry.targetFrame());
-
- // 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 (!GURL(entry.URL()).SchemeIs("javascript"))
- setPendingExtraData(adoptPtr(new TestShellExtraData(entry.pageID())));
-
- // 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.contentState().isNull()) {
- ASSERT(entry.pageID() != -1);
- frame->loadHistoryItem(entry.contentState());
- } else {
- ASSERT(entry.pageID() == -1);
- frame->loadRequest(WebURLRequest(entry.URL()));
- }
-
- // In case LoadRequest failed before DidCreateDataSource was called.
- setPendingExtraData(nullptr);
-
- // 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);
- m_shell->setFocus(webView(), true);
-
- return true;
-}
-
-// Private functions ----------------------------------------------------------
-
-void WebViewHost::updateForCommittedLoad(WebFrame* frame, bool isNewNavigation)
-{
- // Code duplicated from RenderView::DidCommitLoadForFrame.
- TestShellExtraData* extraData = static_cast<TestShellExtraData*>(frame->dataSource()->extraData());
- const WebURL& url = frame->dataSource()->request().url();
- bool nonBlankPageAfterReset = m_pageId == -1 && !url.isEmpty() && strcmp(url.spec().data(), "about:blank");
-
- if (isNewNavigation || nonBlankPageAfterReset) {
- // New navigation.
- updateSessionHistory(frame);
- m_pageId = nextPageID++;
- } else if (extraData && extraData->pendingPageID != -1 && !extraData->requestCommitted) {
- // This is a successful session history navigation!
- updateSessionHistory(frame);
- m_pageId = extraData->pendingPageID;
- }
-
- // Don't update session history multiple times.
- if (extraData)
- extraData->requestCommitted = true;
-
- updateURL(frame);
-}
-
-void WebViewHost::updateURL(WebFrame* frame)
-{
- WebDataSource* ds = frame->dataSource();
- ASSERT(ds);
- const WebURLRequest& request = ds->request();
- RefPtr<TestNavigationEntry> entry(TestNavigationEntry::create());
-
- // The referrer will be empty on https->http transitions. It
- // would be nice if we could get the real referrer from somewhere.
- entry->setPageID(m_pageId);
- if (ds->hasUnreachableURL())
- entry->setURL(ds->unreachableURL());
- else
- entry->setURL(request.url());
-
- const WebHistoryItem& historyItem = frame->currentHistoryItem();
- if (!historyItem.isNull())
- entry->setContentState(historyItem);
-
- navigationController()->didNavigateToEntry(entry.get());
- m_lastPageIdUpdated = max(m_lastPageIdUpdated, m_pageId);
-}
-
-void WebViewHost::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 (m_pageId == -1)
- return;
-
- TestNavigationEntry* entry = navigationController()->entryWithPageID(m_pageId);
- if (!entry)
- return;
-
- const WebHistoryItem& historyItem = webView()->mainFrame()->previousHistoryItem();
- if (historyItem.isNull())
- return;
-
- entry->setContentState(historyItem);
-}
-
-void WebViewHost::updateViewportSize()
-{
- if (!m_layerTreeView)
- return;
-
- WebSize deviceViewportSize(webWidget()->size().width * webView()->deviceScaleFactor(),
- webWidget()->size().height * webView()->deviceScaleFactor());
- m_layerTreeView->setViewportSize(webWidget()->size(), deviceViewportSize);
-}
-
-void WebViewHost::printFrameDescription(WebFrame* webframe)
-{
- string name8 = webframe->uniqueName().utf8();
- if (webframe == webView()->mainFrame()) {
- if (!name8.length()) {
- fputs("main frame", stdout);
- return;
- }
- printf("main frame \"%s\"", name8.c_str());
- return;
- }
- if (!name8.length()) {
- fputs("frame (anonymous)", stdout);
- return;
- }
- printf("frame \"%s\"", name8.c_str());
-}
-
-void WebViewHost::setPendingExtraData(PassOwnPtr<TestShellExtraData> extraData)
-{
- m_pendingExtraData = extraData;
-}
-
-void WebViewHost::setPageTitle(const WebString&)
-{
- // Nothing to do in layout test.
-}
-
-void WebViewHost::enterFullScreenNow()
-{
- webView()->willEnterFullScreen();
- webView()->didEnterFullScreen();
-}
-
-void WebViewHost::exitFullScreenNow()
-{
- webView()->willExitFullScreen();
- webView()->didExitFullScreen();
-}
-
-webkit_support::TestMediaStreamClient* WebViewHost::testMediaStreamClient()
-{
- if (!m_testMediaStreamClient.get())
- m_testMediaStreamClient = adoptPtr(new webkit_support::TestMediaStreamClient());
- return m_testMediaStreamClient.get();
-}
« no previous file with comments | « Tools/DumpRenderTree/chromium/WebViewHost.h ('k') | Tools/DumpRenderTree/chromium/config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698