Chromium Code Reviews| Index: content/public/test/layout_tests/WebFrameTestProxy.h |
| diff --git a/content/public/test/layout_tests/WebFrameTestProxy.h b/content/public/test/layout_tests/WebFrameTestProxy.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..13535098c8df5db542819e4149eb4cb83624e471 |
| --- /dev/null |
| +++ b/content/public/test/layout_tests/WebFrameTestProxy.h |
| @@ -0,0 +1,184 @@ |
| +// Copyright 2013 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. |
| + |
| +/* |
| + * Copyright (C) 2013 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. |
| + */ |
|
abarth-chromium
2013/12/19 17:42:07
I believe you can remove these license blocks when
|
| + |
| +#ifndef WebFrameTestProxy_h |
| +#define WebFrameTestProxy_h |
| + |
| +#include "content/public/test/layout_tests/WebTestProxy.h" |
| +#include "third_party/WebKit/public/platform/WebNonCopyable.h" |
| + |
| +namespace WebTestRunner { |
| + |
| +// Templetized wrapper around RenderFrameImpl objects, which implement |
| +// the WebFrameClient interface. |
| +template<class Base, typename P, typename R> |
| +class WebFrameTestProxy : public Base, public blink::WebNonCopyable { |
| +public: |
| + WebFrameTestProxy(P p, R r) |
| + : Base(p, r) |
| + , m_baseProxy(0) |
| + , m_version(0) { } |
| + |
| + virtual ~WebFrameTestProxy() { } |
| + |
| + void setBaseProxy(WebTestProxyBase* proxy) |
| + { |
| + m_baseProxy = proxy; |
| + } |
| + |
| + void setVersion(int version) |
| + { |
| + m_version = version; |
| + } |
| + |
| + blink::WebPlugin* createPlugin(blink::WebFrame* frame, const blink::WebPluginParams& params) |
| + { |
| + blink::WebPlugin* plugin = m_baseProxy->createPlugin(frame, params); |
| + if (plugin) |
| + return plugin; |
| + return Base::createPlugin(frame, params); |
| + } |
| + |
| + // WebFrameClient implementation. |
| + virtual void didStartProvisionalLoad(blink::WebFrame* frame) |
| + { |
| + if (m_version > 2) |
| + m_baseProxy->didStartProvisionalLoad(frame); |
| + Base::didStartProvisionalLoad(frame); |
| + } |
| + virtual void didReceiveServerRedirectForProvisionalLoad(blink::WebFrame* frame) |
| + { |
| + Base::didReceiveServerRedirectForProvisionalLoad(frame); |
| + } |
| + virtual void didFailProvisionalLoad(blink::WebFrame* frame, const blink::WebURLError& error) |
| + { |
| + Base::didFailProvisionalLoad(frame, error); |
| + } |
| + virtual void didCommitProvisionalLoad(blink::WebFrame* frame, bool isNewNavigation) |
| + { |
| + Base::didCommitProvisionalLoad(frame, isNewNavigation); |
| + } |
| + virtual void didReceiveTitle(blink::WebFrame* frame, const blink::WebString& title, blink::WebTextDirection direction) |
| + { |
| + Base::didReceiveTitle(frame, title, direction); |
| + } |
| + virtual void didChangeIcon(blink::WebFrame* frame, blink::WebIconURL::Type iconType) |
| + { |
| + Base::didChangeIcon(frame, iconType); |
| + } |
| + virtual void didFinishDocumentLoad(blink::WebFrame* frame) |
| + { |
| + Base::didFinishDocumentLoad(frame); |
| + } |
| + virtual void didHandleOnloadEvents(blink::WebFrame* frame) |
| + { |
| + Base::didHandleOnloadEvents(frame); |
| + } |
| + virtual void didFailLoad(blink::WebFrame* frame, const blink::WebURLError& error) |
| + { |
| + Base::didFailLoad(frame, error); |
| + } |
| + virtual void didFinishLoad(blink::WebFrame* frame) |
| + { |
| + Base::didFinishLoad(frame); |
| + } |
| + virtual void didDetectXSS(blink::WebFrame* frame, const blink::WebURL& insecureURL, bool didBlockEntirePage) |
| + { |
| + // This is not implemented in RenderFrameImpl, so need to explicitly call |
| + // into the base proxy. |
| + m_baseProxy->didDetectXSS(frame, insecureURL, didBlockEntirePage); |
| + Base::didDetectXSS(frame, insecureURL, didBlockEntirePage); |
| + } |
| + virtual void didDispatchPingLoader(blink::WebFrame* frame, const blink::WebURL& url) |
| + { |
| + // This is not implemented in RenderFrameImpl, so need to explicitly call |
| + // into the base proxy. |
| + m_baseProxy->didDispatchPingLoader(frame, url); |
| + Base::didDispatchPingLoader(frame, url); |
| + } |
| + virtual void willRequestResource(blink::WebFrame* frame, const blink::WebCachedURLRequest& request) |
| + { |
| + // This is not implemented in RenderFrameImpl, so need to explicitly call |
| + // into the base proxy. |
| + m_baseProxy->willRequestResource(frame, request); |
| + Base::willRequestResource(frame, request); |
| + } |
| + virtual void didCreateDataSource(blink::WebFrame* frame, blink::WebDataSource* ds) |
| + { |
| + Base::didCreateDataSource(frame, ds); |
| + } |
| + virtual void willSendRequest(blink::WebFrame* frame, unsigned identifier, blink::WebURLRequest& request, const blink::WebURLResponse& redirectResponse) |
| + { |
| + m_baseProxy->willSendRequest(frame, identifier, request, redirectResponse); |
| + Base::willSendRequest(frame, identifier, request, redirectResponse); |
| + } |
| + virtual void didReceiveResponse(blink::WebFrame* frame, unsigned identifier, const blink::WebURLResponse& response) |
| + { |
| + m_baseProxy->didReceiveResponse(frame, identifier, response); |
| + Base::didReceiveResponse(frame, identifier, response); |
| + } |
| + virtual void didChangeResourcePriority(blink::WebFrame* frame, unsigned identifier, const blink::WebURLRequest::Priority& priority) |
| + { |
| + // This is not implemented in RenderFrameImpl, so need to explicitly call |
| + // into the base proxy. |
| + m_baseProxy->didChangeResourcePriority(frame, identifier, priority); |
| + Base::didChangeResourcePriority(frame, identifier, priority); |
| + } |
| + virtual void didFinishResourceLoad(blink::WebFrame* frame, unsigned identifier) |
| + { |
| + Base::didFinishResourceLoad(frame, identifier); |
| + } |
| + virtual blink::WebNavigationPolicy decidePolicyForNavigation(blink::WebFrame* frame, blink::WebDataSource::ExtraData* extraData, const blink::WebURLRequest& request, blink::WebNavigationType type, blink::WebNavigationPolicy defaultPolicy, bool isRedirect) |
| + { |
| + return Base::decidePolicyForNavigation(frame, extraData, request, type, defaultPolicy, isRedirect); |
| + } |
| + virtual bool willCheckAndDispatchMessageEvent(blink::WebFrame* sourceFrame, blink::WebFrame* targetFrame, blink::WebSecurityOrigin target, blink::WebDOMMessageEvent event) |
| + { |
| + if (m_baseProxy->willCheckAndDispatchMessageEvent(sourceFrame, targetFrame, target, event)) |
| + return true; |
| + return Base::willCheckAndDispatchMessageEvent(sourceFrame, targetFrame, target, event); |
| + } |
| + |
| +private: |
| + WebTestProxyBase* m_baseProxy; |
| + |
| + // This is used to incrementally change code between Blink and Chromium. |
| + // It is used instead of a #define and is set by layouttest_support when |
| + // creating this object. |
| + int m_version; |
| +}; |
| + |
| +} |
| + |
| +#endif // WebTestProxy_h |