Index: components/test_runner/web_frame_test_proxy.h |
diff --git a/components/test_runner/web_frame_test_proxy.h b/components/test_runner/web_frame_test_proxy.h |
index ce58447b8cef30cb23bb814e6bcaf5d2469d6edd..7f90583c2fde4c0584b5858102189caee89bad44 100644 |
--- a/components/test_runner/web_frame_test_proxy.h |
+++ b/components/test_runner/web_frame_test_proxy.h |
@@ -5,92 +5,79 @@ |
#ifndef COMPONENTS_TEST_RUNNER_WEB_FRAME_TEST_PROXY_H_ |
#define COMPONENTS_TEST_RUNNER_WEB_FRAME_TEST_PROXY_H_ |
-#include "base/logging.h" |
#include "base/macros.h" |
+#include "components/test_runner/mock_screen_orientation_client.h" |
+#include "components/test_runner/web_test_delegate.h" |
+#include "components/test_runner/web_test_interfaces.h" |
+#include "components/test_runner/web_test_proxy.h" |
+#include "components/test_runner/web_test_runner.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
-#include "third_party/WebKit/public/web/WebFrameClient.h" |
-#include "third_party/WebKit/public/web/WebLocalFrame.h" |
namespace test_runner { |
-class WebFrameTestProxyBase { |
+// Templetized wrapper around RenderFrameImpl objects, which implement |
+// the WebFrameClient interface. |
+template <class Base, typename P> |
+class WebFrameTestProxy : public Base { |
public: |
- void set_test_client(blink::WebFrameClient* client) { |
- DCHECK(client); |
- DCHECK(!test_client_); |
- test_client_ = client; |
- } |
- |
- protected: |
- WebFrameTestProxyBase() : test_client_(nullptr) {} |
- blink::WebFrameClient* test_client() { return test_client_; } |
- |
- private: |
- blink::WebFrameClient* test_client_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WebFrameTestProxyBase); |
-}; |
- |
-// WebTestProxy is used during LayoutTests and always instantiated, at time of |
-// writing with Base=RenderFrameImpl. It does not directly inherit from it for |
-// layering purposes. |
-template <class Base, typename P> |
-class WebFrameTestProxy : public Base, public WebFrameTestProxyBase { |
- public: |
- explicit WebFrameTestProxy(P p) : Base(p) {} |
+ explicit WebFrameTestProxy(P p) : Base(p), base_proxy_(NULL) {} |
virtual ~WebFrameTestProxy() {} |
+ |
+ void set_base_proxy(WebTestProxyBase* proxy) { base_proxy_ = proxy; } |
// WebFrameClient implementation. |
blink::WebPlugin* createPlugin( |
blink::WebLocalFrame* frame, |
const blink::WebPluginParams& params) override { |
- blink::WebPlugin* plugin = test_client()->createPlugin(frame, params); |
+ blink::WebPlugin* plugin = base_proxy_->CreatePlugin(frame, params); |
if (plugin) |
return plugin; |
return Base::createPlugin(frame, params); |
} |
blink::WebScreenOrientationClient* webScreenOrientationClient() override { |
- return test_client()->webScreenOrientationClient(); |
+ return base_proxy_->GetScreenOrientationClientMock(); |
} |
void didAddMessageToConsole(const blink::WebConsoleMessage& message, |
const blink::WebString& source_name, |
unsigned source_line, |
const blink::WebString& stack_trace) override { |
- test_client()->didAddMessageToConsole(message, source_name, source_line, |
- stack_trace); |
+ base_proxy_->DidAddMessageToConsole(message, source_name, source_line); |
Base::didAddMessageToConsole( |
message, source_name, source_line, stack_trace); |
} |
bool canCreatePluginWithoutRenderer( |
const blink::WebString& mime_type) override { |
- const char suffix[] = "-can-create-without-renderer"; |
- return mime_type.utf8().find(suffix) != std::string::npos; |
+ using blink::WebString; |
+ |
+ const CR_DEFINE_STATIC_LOCAL( |
+ WebString, suffix, ("-can-create-without-renderer")); |
+ return mime_type.utf8().find(suffix.utf8()) != std::string::npos; |
} |
void loadURLExternally(const blink::WebURLRequest& request, |
blink::WebNavigationPolicy policy, |
const blink::WebString& suggested_name, |
bool replaces_current_history_item) override { |
- test_client()->loadURLExternally(request, policy, suggested_name, |
- replaces_current_history_item); |
+ base_proxy_->LoadURLExternally(request, policy, suggested_name, |
+ replaces_current_history_item); |
Base::loadURLExternally(request, policy, suggested_name, |
replaces_current_history_item); |
} |
void didStartProvisionalLoad(blink::WebLocalFrame* frame, |
double triggeringEventTime) override { |
- test_client()->didStartProvisionalLoad(frame, triggeringEventTime); |
+ base_proxy_->DidStartProvisionalLoad(frame); |
Base::didStartProvisionalLoad( |
frame, triggeringEventTime); |
} |
void didReceiveServerRedirectForProvisionalLoad( |
blink::WebLocalFrame* frame) override { |
- test_client()->didReceiveServerRedirectForProvisionalLoad(frame); |
+ base_proxy_->DidReceiveServerRedirectForProvisionalLoad(frame); |
Base::didReceiveServerRedirectForProvisionalLoad(frame); |
} |
@@ -98,10 +85,9 @@ |
blink::WebLocalFrame* frame, |
const blink::WebURLError& error, |
blink::WebHistoryCommitType commit_type) override { |
- test_client()->didFailProvisionalLoad(frame, error, commit_type); |
// If the test finished, don't notify the embedder of the failed load, |
// as we already destroyed the document loader. |
- if (!frame->provisionalDataSource()) |
+ if (base_proxy_->DidFailProvisionalLoad(frame, error, commit_type)) |
return; |
Base::didFailProvisionalLoad(frame, error, commit_type); |
} |
@@ -110,47 +96,47 @@ |
blink::WebLocalFrame* frame, |
const blink::WebHistoryItem& item, |
blink::WebHistoryCommitType commit_type) override { |
- test_client()->didCommitProvisionalLoad(frame, item, commit_type); |
+ base_proxy_->DidCommitProvisionalLoad(frame, item, commit_type); |
Base::didCommitProvisionalLoad(frame, item, commit_type); |
} |
void didReceiveTitle(blink::WebLocalFrame* frame, |
const blink::WebString& title, |
blink::WebTextDirection direction) override { |
- test_client()->didReceiveTitle(frame, title, direction); |
+ base_proxy_->DidReceiveTitle(frame, title, direction); |
Base::didReceiveTitle(frame, title, direction); |
} |
void didChangeIcon(blink::WebLocalFrame* frame, |
blink::WebIconURL::Type icon_type) override { |
- test_client()->didChangeIcon(frame, icon_type); |
+ base_proxy_->DidChangeIcon(frame, icon_type); |
Base::didChangeIcon(frame, icon_type); |
} |
void didFinishDocumentLoad(blink::WebLocalFrame* frame) override { |
- test_client()->didFinishDocumentLoad(frame); |
+ base_proxy_->DidFinishDocumentLoad(frame); |
Base::didFinishDocumentLoad(frame); |
} |
void didHandleOnloadEvents(blink::WebLocalFrame* frame) override { |
- test_client()->didHandleOnloadEvents(frame); |
+ base_proxy_->DidHandleOnloadEvents(frame); |
Base::didHandleOnloadEvents(frame); |
} |
void didFailLoad(blink::WebLocalFrame* frame, |
const blink::WebURLError& error, |
blink::WebHistoryCommitType commit_type) override { |
- test_client()->didFailLoad(frame, error, commit_type); |
+ base_proxy_->DidFailLoad(frame, error, commit_type); |
Base::didFailLoad(frame, error, commit_type); |
} |
void didFinishLoad(blink::WebLocalFrame* frame) override { |
Base::didFinishLoad(frame); |
- test_client()->didFinishLoad(frame); |
+ base_proxy_->DidFinishLoad(frame); |
} |
void didChangeSelection(bool is_selection_empty) override { |
- test_client()->didChangeSelection(is_selection_empty); |
+ base_proxy_->DidChangeSelection(is_selection_empty); |
Base::didChangeSelection(is_selection_empty); |
} |
@@ -158,32 +144,31 @@ |
blink::WebColorChooserClient* client, |
const blink::WebColor& initial_color, |
const blink::WebVector<blink::WebColorSuggestion>& suggestions) override { |
- return test_client()->createColorChooser(client, initial_color, |
- suggestions); |
+ return base_proxy_->CreateColorChooser(client, initial_color, suggestions); |
} |
void runModalAlertDialog(const blink::WebString& message) override { |
- test_client()->runModalAlertDialog(message); |
+ base_proxy_->RunModalAlertDialog(message); |
} |
bool runModalConfirmDialog(const blink::WebString& message) override { |
- return test_client()->runModalConfirmDialog(message); |
+ return base_proxy_->RunModalConfirmDialog(message); |
} |
bool runModalPromptDialog(const blink::WebString& message, |
const blink::WebString& default_value, |
blink::WebString* actual_value) override { |
- return test_client()->runModalPromptDialog(message, default_value, |
- actual_value); |
+ return base_proxy_->RunModalPromptDialog(message, default_value, |
+ actual_value); |
} |
bool runModalBeforeUnloadDialog(bool is_reload) override { |
- return test_client()->runModalBeforeUnloadDialog(is_reload); |
+ return base_proxy_->RunModalBeforeUnloadDialog(is_reload); |
} |
void showContextMenu( |
const blink::WebContextMenuData& context_menu_data) override { |
- test_client()->showContextMenu(context_menu_data); |
+ base_proxy_->ShowContextMenu(context_menu_data); |
Base::showContextMenu(context_menu_data); |
} |
@@ -191,15 +176,20 @@ |
bool did_block_entire_page) override { |
// This is not implemented in RenderFrameImpl, so need to explicitly call |
// into the base proxy. |
- test_client()->didDetectXSS(insecure_url, did_block_entire_page); |
+ base_proxy_->DidDetectXSS(insecure_url, did_block_entire_page); |
Base::didDetectXSS(insecure_url, did_block_entire_page); |
} |
void didDispatchPingLoader(const blink::WebURL& url) override { |
// This is not implemented in RenderFrameImpl, so need to explicitly call |
// into the base proxy. |
- test_client()->didDispatchPingLoader(url); |
+ base_proxy_->DidDispatchPingLoader(url); |
Base::didDispatchPingLoader(url); |
+ } |
+ |
+ void didCreateDataSource(blink::WebLocalFrame* frame, |
+ blink::WebDataSource* ds) override { |
+ Base::didCreateDataSource(frame, ds); |
} |
void willSendRequest( |
@@ -208,13 +198,12 @@ |
blink::WebURLRequest& request, |
const blink::WebURLResponse& redirect_response) override { |
Base::willSendRequest(frame, identifier, request, redirect_response); |
- test_client()->willSendRequest(frame, identifier, request, |
- redirect_response); |
+ base_proxy_->WillSendRequest(frame, identifier, request, redirect_response); |
} |
void didReceiveResponse(unsigned identifier, |
const blink::WebURLResponse& response) override { |
- test_client()->didReceiveResponse(identifier, response); |
+ base_proxy_->DidReceiveResponse(identifier, response); |
Base::didReceiveResponse(identifier, response); |
} |
@@ -223,21 +212,21 @@ |
int intra_priority_value) override { |
// This is not implemented in RenderFrameImpl, so need to explicitly call |
// into the base proxy. |
- test_client()->didChangeResourcePriority(identifier, priority, |
- intra_priority_value); |
+ base_proxy_->DidChangeResourcePriority( |
+ identifier, priority, intra_priority_value); |
Base::didChangeResourcePriority( |
identifier, priority, intra_priority_value); |
} |
void didFinishResourceLoad(blink::WebLocalFrame* frame, |
unsigned identifier) override { |
- test_client()->didFinishResourceLoad(frame, identifier); |
+ base_proxy_->DidFinishResourceLoad(frame, identifier); |
} |
blink::WebNavigationPolicy decidePolicyForNavigation( |
const blink::WebFrameClient::NavigationPolicyInfo& info) override { |
- blink::WebNavigationPolicy policy = |
- test_client()->decidePolicyForNavigation(info); |
+ blink::WebNavigationPolicy policy = base_proxy_->DecidePolicyForNavigation( |
+ info); |
if (policy == blink::WebNavigationPolicyIgnore) |
return policy; |
@@ -251,7 +240,7 @@ |
} |
blink::WebUserMediaClient* userMediaClient() override { |
- return test_client()->userMediaClient(); |
+ return base_proxy_->GetUserMediaClient(); |
} |
bool willCheckAndDispatchMessageEvent( |
@@ -259,7 +248,7 @@ |
blink::WebFrame* target_frame, |
blink::WebSecurityOrigin target, |
blink::WebDOMMessageEvent event) override { |
- if (test_client()->willCheckAndDispatchMessageEvent( |
+ if (base_proxy_->WillCheckAndDispatchMessageEvent( |
source_frame, target_frame, target, event)) |
return true; |
return Base::willCheckAndDispatchMessageEvent( |
@@ -268,7 +257,7 @@ |
void postAccessibilityEvent(const blink::WebAXObject& object, |
blink::WebAXEvent event) override { |
- test_client()->postAccessibilityEvent(object, event); |
+ base_proxy_->PostAccessibilityEvent(object, event); |
Base::postAccessibilityEvent(object, event); |
} |
@@ -276,11 +265,13 @@ |
const blink::WebString& sink_id, |
const blink::WebSecurityOrigin& security_origin, |
blink::WebSetSinkIdCallbacks* web_callbacks) override { |
- test_client()->checkIfAudioSinkExistsAndIsAuthorized( |
- sink_id, security_origin, web_callbacks); |
+ base_proxy_->CheckIfAudioSinkExistsAndIsAuthorized(sink_id, security_origin, |
+ web_callbacks); |
} |
private: |
+ WebTestProxyBase* base_proxy_; |
+ |
DISALLOW_COPY_AND_ASSIGN(WebFrameTestProxy); |
}; |