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/test_runner/test_runner.h" | 5 #include "content/shell/test_runner/test_runner.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 |
| 9 #include <algorithm> |
8 #include <limits> | 10 #include <limits> |
9 #include <utility> | 11 #include <utility> |
10 | 12 |
11 #include "base/command_line.h" | 13 #include "base/command_line.h" |
12 #include "base/logging.h" | 14 #include "base/logging.h" |
13 #include "base/macros.h" | 15 #include "base/macros.h" |
14 #include "base/strings/nullable_string16.h" | 16 #include "base/strings/nullable_string16.h" |
15 #include "base/strings/string_number_conversions.h" | 17 #include "base/strings/string_number_conversions.h" |
16 #include "base/strings/stringprintf.h" | 18 #include "base/strings/stringprintf.h" |
17 #include "base/strings/utf_string_conversions.h" | 19 #include "base/strings/utf_string_conversions.h" |
(...skipping 1974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1992 : blink::WebSettings::kV8CacheOptionsDefault); | 1994 : blink::WebSettings::kV8CacheOptionsDefault); |
1993 } | 1995 } |
1994 | 1996 |
1995 void TestRunner::ShowDevTools(const std::string& settings, | 1997 void TestRunner::ShowDevTools(const std::string& settings, |
1996 const std::string& frontend_url) { | 1998 const std::string& frontend_url) { |
1997 delegate_->ShowDevTools(settings, frontend_url); | 1999 delegate_->ShowDevTools(settings, frontend_url); |
1998 } | 2000 } |
1999 | 2001 |
2000 class WorkItemBackForward : public TestRunner::WorkItem { | 2002 class WorkItemBackForward : public TestRunner::WorkItem { |
2001 public: | 2003 public: |
2002 WorkItemBackForward(int distance) : distance_(distance) {} | 2004 explicit WorkItemBackForward(int distance) : distance_(distance) {} |
2003 | 2005 |
2004 bool Run(WebTestDelegate* delegate, WebView*) override { | 2006 bool Run(WebTestDelegate* delegate, WebView*) override { |
2005 delegate->GoToOffset(distance_); | 2007 delegate->GoToOffset(distance_); |
2006 return true; // FIXME: Did it really start a navigation? | 2008 return true; // FIXME: Did it really start a navigation? |
2007 } | 2009 } |
2008 | 2010 |
2009 private: | 2011 private: |
2010 int distance_; | 2012 int distance_; |
2011 }; | 2013 }; |
2012 | 2014 |
(...skipping 17 matching lines...) Expand all Loading... |
2030 return true; | 2032 return true; |
2031 } | 2033 } |
2032 }; | 2034 }; |
2033 | 2035 |
2034 void TestRunner::QueueReload() { | 2036 void TestRunner::QueueReload() { |
2035 work_queue_.AddWork(new WorkItemReload()); | 2037 work_queue_.AddWork(new WorkItemReload()); |
2036 } | 2038 } |
2037 | 2039 |
2038 class WorkItemLoadingScript : public TestRunner::WorkItem { | 2040 class WorkItemLoadingScript : public TestRunner::WorkItem { |
2039 public: | 2041 public: |
2040 WorkItemLoadingScript(const std::string& script) : script_(script) {} | 2042 explicit WorkItemLoadingScript(const std::string& script) : script_(script) {} |
2041 | 2043 |
2042 bool Run(WebTestDelegate*, WebView* web_view) override { | 2044 bool Run(WebTestDelegate*, WebView* web_view) override { |
2043 blink::WebFrame* main_frame = web_view->MainFrame(); | 2045 blink::WebFrame* main_frame = web_view->MainFrame(); |
2044 if (!main_frame->IsWebLocalFrame()) { | 2046 if (!main_frame->IsWebLocalFrame()) { |
2045 CHECK(false) << "This function cannot be called if the main frame is not " | 2047 CHECK(false) << "This function cannot be called if the main frame is not " |
2046 "a local frame."; | 2048 "a local frame."; |
2047 return false; | 2049 return false; |
2048 } | 2050 } |
2049 main_frame->ToWebLocalFrame()->ExecuteScript( | 2051 main_frame->ToWebLocalFrame()->ExecuteScript( |
2050 WebScriptSource(WebString::FromUTF8(script_))); | 2052 WebScriptSource(WebString::FromUTF8(script_))); |
2051 return true; // FIXME: Did it really start a navigation? | 2053 return true; // FIXME: Did it really start a navigation? |
2052 } | 2054 } |
2053 | 2055 |
2054 private: | 2056 private: |
2055 std::string script_; | 2057 std::string script_; |
2056 }; | 2058 }; |
2057 | 2059 |
2058 void TestRunner::QueueLoadingScript(const std::string& script) { | 2060 void TestRunner::QueueLoadingScript(const std::string& script) { |
2059 work_queue_.AddWork(new WorkItemLoadingScript(script)); | 2061 work_queue_.AddWork(new WorkItemLoadingScript(script)); |
2060 } | 2062 } |
2061 | 2063 |
2062 class WorkItemNonLoadingScript : public TestRunner::WorkItem { | 2064 class WorkItemNonLoadingScript : public TestRunner::WorkItem { |
2063 public: | 2065 public: |
2064 WorkItemNonLoadingScript(const std::string& script) : script_(script) {} | 2066 explicit WorkItemNonLoadingScript(const std::string& script) |
| 2067 : script_(script) {} |
2065 | 2068 |
2066 bool Run(WebTestDelegate*, WebView* web_view) override { | 2069 bool Run(WebTestDelegate*, WebView* web_view) override { |
2067 blink::WebFrame* main_frame = web_view->MainFrame(); | 2070 blink::WebFrame* main_frame = web_view->MainFrame(); |
2068 if (!main_frame->IsWebLocalFrame()) { | 2071 if (!main_frame->IsWebLocalFrame()) { |
2069 CHECK(false) << "This function cannot be called if the main frame is not " | 2072 CHECK(false) << "This function cannot be called if the main frame is not " |
2070 "a local frame."; | 2073 "a local frame."; |
2071 return false; | 2074 return false; |
2072 } | 2075 } |
2073 main_frame->ToWebLocalFrame()->ExecuteScript( | 2076 main_frame->ToWebLocalFrame()->ExecuteScript( |
2074 WebScriptSource(WebString::FromUTF8(script_))); | 2077 WebScriptSource(WebString::FromUTF8(script_))); |
(...skipping 20 matching lines...) Expand all Loading... |
2095 | 2098 |
2096 private: | 2099 private: |
2097 WebURL url_; | 2100 WebURL url_; |
2098 std::string target_; | 2101 std::string target_; |
2099 }; | 2102 }; |
2100 | 2103 |
2101 void TestRunner::QueueLoad(const std::string& url, const std::string& target) { | 2104 void TestRunner::QueueLoad(const std::string& url, const std::string& target) { |
2102 if (!main_view_) | 2105 if (!main_view_) |
2103 return; | 2106 return; |
2104 | 2107 |
| 2108 // TODO(lukasza): testRunner.queueLoad(...) should work even if the main frame |
| 2109 // is remote (ideally testRunner.queueLoad would bind to and execute in the |
| 2110 // context of a specific local frame - resolving relative urls should be done |
| 2111 // on relative to the calling frame's url). |
| 2112 CHECK(main_view_->MainFrame()->IsWebLocalFrame()) |
| 2113 << "This function cannot be called if the main frame is not " |
| 2114 "a local frame."; |
| 2115 |
2105 // FIXME: Implement WebURL::resolve() and avoid GURL. | 2116 // FIXME: Implement WebURL::resolve() and avoid GURL. |
2106 GURL current_url = main_view_->MainFrame()->GetDocument().Url(); | 2117 GURL current_url = |
| 2118 main_view_->MainFrame()->ToWebLocalFrame()->GetDocument().Url(); |
2107 GURL full_url = current_url.Resolve(url); | 2119 GURL full_url = current_url.Resolve(url); |
2108 work_queue_.AddWork(new WorkItemLoad(full_url, target)); | 2120 work_queue_.AddWork(new WorkItemLoad(full_url, target)); |
2109 } | 2121 } |
2110 | 2122 |
2111 void TestRunner::SetCustomPolicyDelegate(gin::Arguments* args) { | 2123 void TestRunner::SetCustomPolicyDelegate(gin::Arguments* args) { |
2112 bool value; | 2124 bool value; |
2113 args->GetNext(&value); | 2125 args->GetNext(&value); |
2114 layout_test_runtime_flags_.set_policy_delegate_enabled(value); | 2126 layout_test_runtime_flags_.set_policy_delegate_enabled(value); |
2115 | 2127 |
2116 if (!args->PeekNext().IsEmpty() && args->PeekNext()->IsBoolean()) { | 2128 if (!args->PeekNext().IsEmpty() && args->PeekNext()->IsBoolean()) { |
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2814 | 2826 |
2815 void TestRunner::NotifyDone() { | 2827 void TestRunner::NotifyDone() { |
2816 if (layout_test_runtime_flags_.wait_until_done() && !topLoadingFrame() && | 2828 if (layout_test_runtime_flags_.wait_until_done() && !topLoadingFrame() && |
2817 !will_navigate_ && work_queue_.is_empty()) | 2829 !will_navigate_ && work_queue_.is_empty()) |
2818 delegate_->TestFinished(); | 2830 delegate_->TestFinished(); |
2819 layout_test_runtime_flags_.set_wait_until_done(false); | 2831 layout_test_runtime_flags_.set_wait_until_done(false); |
2820 OnLayoutTestRuntimeFlagsChanged(); | 2832 OnLayoutTestRuntimeFlagsChanged(); |
2821 } | 2833 } |
2822 | 2834 |
2823 } // namespace test_runner | 2835 } // namespace test_runner |
OLD | NEW |