OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/shell/renderer/test_runner/test_runner.h" | 5 #include "content/shell/renderer/test_runner/test_runner.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "content/public/test/layouttest_support.h" | 10 #include "content/public/test/layouttest_support.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 v8_str->WriteUtf8(chars.get(), length); | 67 v8_str->WriteUtf8(chars.get(), length); |
68 return WebString::fromUTF8(chars.get()); | 68 return WebString::fromUTF8(chars.get()); |
69 } | 69 } |
70 | 70 |
71 class HostMethodTask : public WebMethodTask<TestRunner> { | 71 class HostMethodTask : public WebMethodTask<TestRunner> { |
72 public: | 72 public: |
73 typedef void (TestRunner::*CallbackMethodType)(); | 73 typedef void (TestRunner::*CallbackMethodType)(); |
74 HostMethodTask(TestRunner* object, CallbackMethodType callback) | 74 HostMethodTask(TestRunner* object, CallbackMethodType callback) |
75 : WebMethodTask<TestRunner>(object), callback_(callback) {} | 75 : WebMethodTask<TestRunner>(object), callback_(callback) {} |
76 | 76 |
77 virtual void RunIfValid() override { (object_->*callback_)(); } | 77 void RunIfValid() override { (object_->*callback_)(); } |
78 | 78 |
79 private: | 79 private: |
80 CallbackMethodType callback_; | 80 CallbackMethodType callback_; |
81 }; | 81 }; |
82 | 82 |
83 } // namespace | 83 } // namespace |
84 | 84 |
85 class InvokeCallbackTask : public WebMethodTask<TestRunner> { | 85 class InvokeCallbackTask : public WebMethodTask<TestRunner> { |
86 public: | 86 public: |
87 InvokeCallbackTask(TestRunner* object, v8::Handle<v8::Function> callback) | 87 InvokeCallbackTask(TestRunner* object, v8::Handle<v8::Function> callback) |
88 : WebMethodTask<TestRunner>(object), | 88 : WebMethodTask<TestRunner>(object), |
89 callback_(blink::mainThreadIsolate(), callback), | 89 callback_(blink::mainThreadIsolate(), callback), |
90 argc_(0) {} | 90 argc_(0) {} |
91 | 91 |
92 virtual void RunIfValid() override { | 92 void RunIfValid() override { |
93 v8::Isolate* isolate = blink::mainThreadIsolate(); | 93 v8::Isolate* isolate = blink::mainThreadIsolate(); |
94 v8::HandleScope handle_scope(isolate); | 94 v8::HandleScope handle_scope(isolate); |
95 WebFrame* frame = object_->web_view_->mainFrame(); | 95 WebFrame* frame = object_->web_view_->mainFrame(); |
96 | 96 |
97 v8::Handle<v8::Context> context = frame->mainWorldScriptContext(); | 97 v8::Handle<v8::Context> context = frame->mainWorldScriptContext(); |
98 if (context.IsEmpty()) | 98 if (context.IsEmpty()) |
99 return; | 99 return; |
100 | 100 |
101 v8::Context::Scope context_scope(context); | 101 v8::Context::Scope context_scope(context); |
102 | 102 |
(...skipping 28 matching lines...) Expand all Loading... |
131 class TestRunnerBindings : public gin::Wrappable<TestRunnerBindings> { | 131 class TestRunnerBindings : public gin::Wrappable<TestRunnerBindings> { |
132 public: | 132 public: |
133 static gin::WrapperInfo kWrapperInfo; | 133 static gin::WrapperInfo kWrapperInfo; |
134 | 134 |
135 static void Install(base::WeakPtr<TestRunner> controller, | 135 static void Install(base::WeakPtr<TestRunner> controller, |
136 WebFrame* frame); | 136 WebFrame* frame); |
137 | 137 |
138 private: | 138 private: |
139 explicit TestRunnerBindings( | 139 explicit TestRunnerBindings( |
140 base::WeakPtr<TestRunner> controller); | 140 base::WeakPtr<TestRunner> controller); |
141 virtual ~TestRunnerBindings(); | 141 ~TestRunnerBindings() override; |
142 | 142 |
143 // gin::Wrappable: | 143 // gin::Wrappable: |
144 virtual gin::ObjectTemplateBuilder GetObjectTemplateBuilder( | 144 gin::ObjectTemplateBuilder GetObjectTemplateBuilder( |
145 v8::Isolate* isolate) override; | 145 v8::Isolate* isolate) override; |
146 | 146 |
147 void LogToStderr(const std::string& output); | 147 void LogToStderr(const std::string& output); |
148 void NotifyDone(); | 148 void NotifyDone(); |
149 void WaitUntilDone(); | 149 void WaitUntilDone(); |
150 void QueueBackNavigation(int how_far_back); | 150 void QueueBackNavigation(int how_far_back); |
151 void QueueForwardNavigation(int how_far_forward); | 151 void QueueForwardNavigation(int how_far_forward); |
152 void QueueReload(); | 152 void QueueReload(); |
153 void QueueLoadingScript(const std::string& script); | 153 void QueueLoadingScript(const std::string& script); |
154 void QueueNonLoadingScript(const std::string& script); | 154 void QueueNonLoadingScript(const std::string& script); |
(...skipping 1753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1908 | 1908 |
1909 void TestRunner::ShowDevTools(const std::string& settings, | 1909 void TestRunner::ShowDevTools(const std::string& settings, |
1910 const std::string& frontend_url) { | 1910 const std::string& frontend_url) { |
1911 delegate_->ShowDevTools(settings, frontend_url); | 1911 delegate_->ShowDevTools(settings, frontend_url); |
1912 } | 1912 } |
1913 | 1913 |
1914 class WorkItemBackForward : public TestRunner::WorkItem { | 1914 class WorkItemBackForward : public TestRunner::WorkItem { |
1915 public: | 1915 public: |
1916 WorkItemBackForward(int distance) : distance_(distance) {} | 1916 WorkItemBackForward(int distance) : distance_(distance) {} |
1917 | 1917 |
1918 virtual bool Run(WebTestDelegate* delegate, WebView*) override { | 1918 bool Run(WebTestDelegate* delegate, WebView*) override { |
1919 delegate->GoToOffset(distance_); | 1919 delegate->GoToOffset(distance_); |
1920 return true; // FIXME: Did it really start a navigation? | 1920 return true; // FIXME: Did it really start a navigation? |
1921 } | 1921 } |
1922 | 1922 |
1923 private: | 1923 private: |
1924 int distance_; | 1924 int distance_; |
1925 }; | 1925 }; |
1926 | 1926 |
1927 void TestRunner::NotifyDone() { | 1927 void TestRunner::NotifyDone() { |
1928 if (disable_notify_done_) | 1928 if (disable_notify_done_) |
(...skipping 12 matching lines...) Expand all Loading... |
1941 void TestRunner::QueueBackNavigation(int how_far_back) { | 1941 void TestRunner::QueueBackNavigation(int how_far_back) { |
1942 work_queue_.AddWork(new WorkItemBackForward(-how_far_back)); | 1942 work_queue_.AddWork(new WorkItemBackForward(-how_far_back)); |
1943 } | 1943 } |
1944 | 1944 |
1945 void TestRunner::QueueForwardNavigation(int how_far_forward) { | 1945 void TestRunner::QueueForwardNavigation(int how_far_forward) { |
1946 work_queue_.AddWork(new WorkItemBackForward(how_far_forward)); | 1946 work_queue_.AddWork(new WorkItemBackForward(how_far_forward)); |
1947 } | 1947 } |
1948 | 1948 |
1949 class WorkItemReload : public TestRunner::WorkItem { | 1949 class WorkItemReload : public TestRunner::WorkItem { |
1950 public: | 1950 public: |
1951 virtual bool Run(WebTestDelegate* delegate, WebView*) override { | 1951 bool Run(WebTestDelegate* delegate, WebView*) override { |
1952 delegate->Reload(); | 1952 delegate->Reload(); |
1953 return true; | 1953 return true; |
1954 } | 1954 } |
1955 }; | 1955 }; |
1956 | 1956 |
1957 void TestRunner::QueueReload() { | 1957 void TestRunner::QueueReload() { |
1958 work_queue_.AddWork(new WorkItemReload()); | 1958 work_queue_.AddWork(new WorkItemReload()); |
1959 } | 1959 } |
1960 | 1960 |
1961 class WorkItemLoadingScript : public TestRunner::WorkItem { | 1961 class WorkItemLoadingScript : public TestRunner::WorkItem { |
1962 public: | 1962 public: |
1963 WorkItemLoadingScript(const std::string& script) | 1963 WorkItemLoadingScript(const std::string& script) |
1964 : script_(script) {} | 1964 : script_(script) {} |
1965 | 1965 |
1966 virtual bool Run(WebTestDelegate*, WebView* web_view) override { | 1966 bool Run(WebTestDelegate*, WebView* web_view) override { |
1967 web_view->mainFrame()->executeScript( | 1967 web_view->mainFrame()->executeScript( |
1968 WebScriptSource(WebString::fromUTF8(script_))); | 1968 WebScriptSource(WebString::fromUTF8(script_))); |
1969 return true; // FIXME: Did it really start a navigation? | 1969 return true; // FIXME: Did it really start a navigation? |
1970 } | 1970 } |
1971 | 1971 |
1972 private: | 1972 private: |
1973 std::string script_; | 1973 std::string script_; |
1974 }; | 1974 }; |
1975 | 1975 |
1976 void TestRunner::QueueLoadingScript(const std::string& script) { | 1976 void TestRunner::QueueLoadingScript(const std::string& script) { |
1977 work_queue_.AddWork(new WorkItemLoadingScript(script)); | 1977 work_queue_.AddWork(new WorkItemLoadingScript(script)); |
1978 } | 1978 } |
1979 | 1979 |
1980 class WorkItemNonLoadingScript : public TestRunner::WorkItem { | 1980 class WorkItemNonLoadingScript : public TestRunner::WorkItem { |
1981 public: | 1981 public: |
1982 WorkItemNonLoadingScript(const std::string& script) | 1982 WorkItemNonLoadingScript(const std::string& script) |
1983 : script_(script) {} | 1983 : script_(script) {} |
1984 | 1984 |
1985 virtual bool Run(WebTestDelegate*, WebView* web_view) override { | 1985 bool Run(WebTestDelegate*, WebView* web_view) override { |
1986 web_view->mainFrame()->executeScript( | 1986 web_view->mainFrame()->executeScript( |
1987 WebScriptSource(WebString::fromUTF8(script_))); | 1987 WebScriptSource(WebString::fromUTF8(script_))); |
1988 return false; | 1988 return false; |
1989 } | 1989 } |
1990 | 1990 |
1991 private: | 1991 private: |
1992 std::string script_; | 1992 std::string script_; |
1993 }; | 1993 }; |
1994 | 1994 |
1995 void TestRunner::QueueNonLoadingScript(const std::string& script) { | 1995 void TestRunner::QueueNonLoadingScript(const std::string& script) { |
1996 work_queue_.AddWork(new WorkItemNonLoadingScript(script)); | 1996 work_queue_.AddWork(new WorkItemNonLoadingScript(script)); |
1997 } | 1997 } |
1998 | 1998 |
1999 class WorkItemLoad : public TestRunner::WorkItem { | 1999 class WorkItemLoad : public TestRunner::WorkItem { |
2000 public: | 2000 public: |
2001 WorkItemLoad(const WebURL& url, const std::string& target) | 2001 WorkItemLoad(const WebURL& url, const std::string& target) |
2002 : url_(url), target_(target) {} | 2002 : url_(url), target_(target) {} |
2003 | 2003 |
2004 virtual bool Run(WebTestDelegate* delegate, WebView*) override { | 2004 bool Run(WebTestDelegate* delegate, WebView*) override { |
2005 delegate->LoadURLForFrame(url_, target_); | 2005 delegate->LoadURLForFrame(url_, target_); |
2006 return true; // FIXME: Did it really start a navigation? | 2006 return true; // FIXME: Did it really start a navigation? |
2007 } | 2007 } |
2008 | 2008 |
2009 private: | 2009 private: |
2010 WebURL url_; | 2010 WebURL url_; |
2011 std::string target_; | 2011 std::string target_; |
2012 }; | 2012 }; |
2013 | 2013 |
2014 void TestRunner::QueueLoad(const std::string& url, const std::string& target) { | 2014 void TestRunner::QueueLoad(const std::string& url, const std::string& target) { |
2015 // FIXME: Implement WebURL::resolve() and avoid GURL. | 2015 // FIXME: Implement WebURL::resolve() and avoid GURL. |
2016 GURL current_url = web_view_->mainFrame()->document().url(); | 2016 GURL current_url = web_view_->mainFrame()->document().url(); |
2017 GURL full_url = current_url.Resolve(url); | 2017 GURL full_url = current_url.Resolve(url); |
2018 work_queue_.AddWork(new WorkItemLoad(full_url, target)); | 2018 work_queue_.AddWork(new WorkItemLoad(full_url, target)); |
2019 } | 2019 } |
2020 | 2020 |
2021 class WorkItemLoadHTMLString : public TestRunner::WorkItem { | 2021 class WorkItemLoadHTMLString : public TestRunner::WorkItem { |
2022 public: | 2022 public: |
2023 WorkItemLoadHTMLString(const std::string& html, const WebURL& base_url) | 2023 WorkItemLoadHTMLString(const std::string& html, const WebURL& base_url) |
2024 : html_(html), base_url_(base_url) {} | 2024 : html_(html), base_url_(base_url) {} |
2025 | 2025 |
2026 WorkItemLoadHTMLString(const std::string& html, const WebURL& base_url, | 2026 WorkItemLoadHTMLString(const std::string& html, const WebURL& base_url, |
2027 const WebURL& unreachable_url) | 2027 const WebURL& unreachable_url) |
2028 : html_(html), base_url_(base_url), unreachable_url_(unreachable_url) {} | 2028 : html_(html), base_url_(base_url), unreachable_url_(unreachable_url) {} |
2029 | 2029 |
2030 virtual bool Run(WebTestDelegate*, WebView* web_view) override { | 2030 bool Run(WebTestDelegate*, WebView* web_view) override { |
2031 web_view->mainFrame()->loadHTMLString( | 2031 web_view->mainFrame()->loadHTMLString( |
2032 WebData(html_.data(), html_.length()), | 2032 WebData(html_.data(), html_.length()), |
2033 base_url_, unreachable_url_); | 2033 base_url_, unreachable_url_); |
2034 return true; | 2034 return true; |
2035 } | 2035 } |
2036 | 2036 |
2037 private: | 2037 private: |
2038 std::string html_; | 2038 std::string html_; |
2039 WebURL base_url_; | 2039 WebURL base_url_; |
2040 WebURL unreachable_url_; | 2040 WebURL unreachable_url_; |
(...skipping 904 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2945 } | 2945 } |
2946 | 2946 |
2947 void TestRunner::DidLosePointerLockInternal() { | 2947 void TestRunner::DidLosePointerLockInternal() { |
2948 bool was_locked = pointer_locked_; | 2948 bool was_locked = pointer_locked_; |
2949 pointer_locked_ = false; | 2949 pointer_locked_ = false; |
2950 if (was_locked) | 2950 if (was_locked) |
2951 web_view_->didLosePointerLock(); | 2951 web_view_->didLosePointerLock(); |
2952 } | 2952 } |
2953 | 2953 |
2954 } // namespace content | 2954 } // namespace content |
OLD | NEW |