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 7f90583c2fde4c0584b5858102189caee89bad44..ce58447b8cef30cb23bb814e6bcaf5d2469d6edd 100644 |
--- a/components/test_runner/web_frame_test_proxy.h |
+++ b/components/test_runner/web_frame_test_proxy.h |
@@ -5,79 +5,92 @@ |
#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 { |
-// Templetized wrapper around RenderFrameImpl objects, which implement |
-// the WebFrameClient interface. |
+class WebFrameTestProxyBase { |
+ 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 { |
+class WebFrameTestProxy : public Base, public WebFrameTestProxyBase { |
public: |
- explicit WebFrameTestProxy(P p) : Base(p), base_proxy_(NULL) {} |
+ explicit WebFrameTestProxy(P p) : Base(p) {} |
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 = base_proxy_->CreatePlugin(frame, params); |
+ blink::WebPlugin* plugin = test_client()->createPlugin(frame, params); |
if (plugin) |
return plugin; |
return Base::createPlugin(frame, params); |
} |
blink::WebScreenOrientationClient* webScreenOrientationClient() override { |
- return base_proxy_->GetScreenOrientationClientMock(); |
+ return test_client()->webScreenOrientationClient(); |
} |
void didAddMessageToConsole(const blink::WebConsoleMessage& message, |
const blink::WebString& source_name, |
unsigned source_line, |
const blink::WebString& stack_trace) override { |
- base_proxy_->DidAddMessageToConsole(message, source_name, source_line); |
+ test_client()->didAddMessageToConsole(message, source_name, source_line, |
+ stack_trace); |
Base::didAddMessageToConsole( |
message, source_name, source_line, stack_trace); |
} |
bool canCreatePluginWithoutRenderer( |
const blink::WebString& mime_type) override { |
- using blink::WebString; |
- |
- const CR_DEFINE_STATIC_LOCAL( |
- WebString, suffix, ("-can-create-without-renderer")); |
- return mime_type.utf8().find(suffix.utf8()) != std::string::npos; |
+ const char suffix[] = "-can-create-without-renderer"; |
+ return mime_type.utf8().find(suffix) != std::string::npos; |
} |
void loadURLExternally(const blink::WebURLRequest& request, |
blink::WebNavigationPolicy policy, |
const blink::WebString& suggested_name, |
bool replaces_current_history_item) override { |
- base_proxy_->LoadURLExternally(request, policy, suggested_name, |
- replaces_current_history_item); |
+ test_client()->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 { |
- base_proxy_->DidStartProvisionalLoad(frame); |
+ test_client()->didStartProvisionalLoad(frame, triggeringEventTime); |
Base::didStartProvisionalLoad( |
frame, triggeringEventTime); |
} |
void didReceiveServerRedirectForProvisionalLoad( |
blink::WebLocalFrame* frame) override { |
- base_proxy_->DidReceiveServerRedirectForProvisionalLoad(frame); |
+ test_client()->didReceiveServerRedirectForProvisionalLoad(frame); |
Base::didReceiveServerRedirectForProvisionalLoad(frame); |
} |
@@ -85,9 +98,10 @@ class WebFrameTestProxy : public Base { |
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 (base_proxy_->DidFailProvisionalLoad(frame, error, commit_type)) |
+ if (!frame->provisionalDataSource()) |
return; |
Base::didFailProvisionalLoad(frame, error, commit_type); |
} |
@@ -96,47 +110,47 @@ class WebFrameTestProxy : public Base { |
blink::WebLocalFrame* frame, |
const blink::WebHistoryItem& item, |
blink::WebHistoryCommitType commit_type) override { |
- base_proxy_->DidCommitProvisionalLoad(frame, item, commit_type); |
+ test_client()->didCommitProvisionalLoad(frame, item, commit_type); |
Base::didCommitProvisionalLoad(frame, item, commit_type); |
} |
void didReceiveTitle(blink::WebLocalFrame* frame, |
const blink::WebString& title, |
blink::WebTextDirection direction) override { |
- base_proxy_->DidReceiveTitle(frame, title, direction); |
+ test_client()->didReceiveTitle(frame, title, direction); |
Base::didReceiveTitle(frame, title, direction); |
} |
void didChangeIcon(blink::WebLocalFrame* frame, |
blink::WebIconURL::Type icon_type) override { |
- base_proxy_->DidChangeIcon(frame, icon_type); |
+ test_client()->didChangeIcon(frame, icon_type); |
Base::didChangeIcon(frame, icon_type); |
} |
void didFinishDocumentLoad(blink::WebLocalFrame* frame) override { |
- base_proxy_->DidFinishDocumentLoad(frame); |
+ test_client()->didFinishDocumentLoad(frame); |
Base::didFinishDocumentLoad(frame); |
} |
void didHandleOnloadEvents(blink::WebLocalFrame* frame) override { |
- base_proxy_->DidHandleOnloadEvents(frame); |
+ test_client()->didHandleOnloadEvents(frame); |
Base::didHandleOnloadEvents(frame); |
} |
void didFailLoad(blink::WebLocalFrame* frame, |
const blink::WebURLError& error, |
blink::WebHistoryCommitType commit_type) override { |
- base_proxy_->DidFailLoad(frame, error, commit_type); |
+ test_client()->didFailLoad(frame, error, commit_type); |
Base::didFailLoad(frame, error, commit_type); |
} |
void didFinishLoad(blink::WebLocalFrame* frame) override { |
Base::didFinishLoad(frame); |
- base_proxy_->DidFinishLoad(frame); |
+ test_client()->didFinishLoad(frame); |
} |
void didChangeSelection(bool is_selection_empty) override { |
- base_proxy_->DidChangeSelection(is_selection_empty); |
+ test_client()->didChangeSelection(is_selection_empty); |
Base::didChangeSelection(is_selection_empty); |
} |
@@ -144,31 +158,32 @@ class WebFrameTestProxy : public Base { |
blink::WebColorChooserClient* client, |
const blink::WebColor& initial_color, |
const blink::WebVector<blink::WebColorSuggestion>& suggestions) override { |
- return base_proxy_->CreateColorChooser(client, initial_color, suggestions); |
+ return test_client()->createColorChooser(client, initial_color, |
+ suggestions); |
} |
void runModalAlertDialog(const blink::WebString& message) override { |
- base_proxy_->RunModalAlertDialog(message); |
+ test_client()->runModalAlertDialog(message); |
} |
bool runModalConfirmDialog(const blink::WebString& message) override { |
- return base_proxy_->RunModalConfirmDialog(message); |
+ return test_client()->runModalConfirmDialog(message); |
} |
bool runModalPromptDialog(const blink::WebString& message, |
const blink::WebString& default_value, |
blink::WebString* actual_value) override { |
- return base_proxy_->RunModalPromptDialog(message, default_value, |
- actual_value); |
+ return test_client()->runModalPromptDialog(message, default_value, |
+ actual_value); |
} |
bool runModalBeforeUnloadDialog(bool is_reload) override { |
- return base_proxy_->RunModalBeforeUnloadDialog(is_reload); |
+ return test_client()->runModalBeforeUnloadDialog(is_reload); |
} |
void showContextMenu( |
const blink::WebContextMenuData& context_menu_data) override { |
- base_proxy_->ShowContextMenu(context_menu_data); |
+ test_client()->showContextMenu(context_menu_data); |
Base::showContextMenu(context_menu_data); |
} |
@@ -176,34 +191,30 @@ class WebFrameTestProxy : public Base { |
bool did_block_entire_page) override { |
// This is not implemented in RenderFrameImpl, so need to explicitly call |
// into the base proxy. |
- base_proxy_->DidDetectXSS(insecure_url, did_block_entire_page); |
+ test_client()->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. |
- base_proxy_->DidDispatchPingLoader(url); |
+ test_client()->didDispatchPingLoader(url); |
Base::didDispatchPingLoader(url); |
} |
- void didCreateDataSource(blink::WebLocalFrame* frame, |
- blink::WebDataSource* ds) override { |
- Base::didCreateDataSource(frame, ds); |
- } |
- |
void willSendRequest( |
blink::WebLocalFrame* frame, |
unsigned identifier, |
blink::WebURLRequest& request, |
const blink::WebURLResponse& redirect_response) override { |
Base::willSendRequest(frame, identifier, request, redirect_response); |
- base_proxy_->WillSendRequest(frame, identifier, request, redirect_response); |
+ test_client()->willSendRequest(frame, identifier, request, |
+ redirect_response); |
} |
void didReceiveResponse(unsigned identifier, |
const blink::WebURLResponse& response) override { |
- base_proxy_->DidReceiveResponse(identifier, response); |
+ test_client()->didReceiveResponse(identifier, response); |
Base::didReceiveResponse(identifier, response); |
} |
@@ -212,21 +223,21 @@ class WebFrameTestProxy : public Base { |
int intra_priority_value) override { |
// This is not implemented in RenderFrameImpl, so need to explicitly call |
// into the base proxy. |
- base_proxy_->DidChangeResourcePriority( |
- identifier, priority, intra_priority_value); |
+ test_client()->didChangeResourcePriority(identifier, priority, |
+ intra_priority_value); |
Base::didChangeResourcePriority( |
identifier, priority, intra_priority_value); |
} |
void didFinishResourceLoad(blink::WebLocalFrame* frame, |
unsigned identifier) override { |
- base_proxy_->DidFinishResourceLoad(frame, identifier); |
+ test_client()->didFinishResourceLoad(frame, identifier); |
} |
blink::WebNavigationPolicy decidePolicyForNavigation( |
const blink::WebFrameClient::NavigationPolicyInfo& info) override { |
- blink::WebNavigationPolicy policy = base_proxy_->DecidePolicyForNavigation( |
- info); |
+ blink::WebNavigationPolicy policy = |
+ test_client()->decidePolicyForNavigation(info); |
if (policy == blink::WebNavigationPolicyIgnore) |
return policy; |
@@ -240,7 +251,7 @@ class WebFrameTestProxy : public Base { |
} |
blink::WebUserMediaClient* userMediaClient() override { |
- return base_proxy_->GetUserMediaClient(); |
+ return test_client()->userMediaClient(); |
} |
bool willCheckAndDispatchMessageEvent( |
@@ -248,7 +259,7 @@ class WebFrameTestProxy : public Base { |
blink::WebFrame* target_frame, |
blink::WebSecurityOrigin target, |
blink::WebDOMMessageEvent event) override { |
- if (base_proxy_->WillCheckAndDispatchMessageEvent( |
+ if (test_client()->willCheckAndDispatchMessageEvent( |
source_frame, target_frame, target, event)) |
return true; |
return Base::willCheckAndDispatchMessageEvent( |
@@ -257,7 +268,7 @@ class WebFrameTestProxy : public Base { |
void postAccessibilityEvent(const blink::WebAXObject& object, |
blink::WebAXEvent event) override { |
- base_proxy_->PostAccessibilityEvent(object, event); |
+ test_client()->postAccessibilityEvent(object, event); |
Base::postAccessibilityEvent(object, event); |
} |
@@ -265,13 +276,11 @@ class WebFrameTestProxy : public Base { |
const blink::WebString& sink_id, |
const blink::WebSecurityOrigin& security_origin, |
blink::WebSetSinkIdCallbacks* web_callbacks) override { |
- base_proxy_->CheckIfAudioSinkExistsAndIsAuthorized(sink_id, security_origin, |
- web_callbacks); |
+ test_client()->checkIfAudioSinkExistsAndIsAuthorized( |
+ sink_id, security_origin, web_callbacks); |
} |
private: |
- WebTestProxyBase* base_proxy_; |
- |
DISALLOW_COPY_AND_ASSIGN(WebFrameTestProxy); |
}; |