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 "ui/views/controls/webview/webview.h" | 5 #include "ui/views/controls/webview/webview.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
13 #include "base/message_loop/message_loop.h" | |
14 #include "base/test/scoped_task_scheduler.h" | |
15 #include "content/public/browser/web_contents.h" | 13 #include "content/public/browser/web_contents.h" |
16 #include "content/public/browser/web_contents_observer.h" | 14 #include "content/public/browser/web_contents_observer.h" |
17 #include "content/public/test/test_browser_context.h" | 15 #include "content/public/test/test_browser_context.h" |
18 #include "content/public/test/test_browser_thread.h" | 16 #include "content/public/test/test_browser_thread_bundle.h" |
19 #include "content/public/test/web_contents_tester.h" | 17 #include "content/public/test/web_contents_tester.h" |
20 #include "content/test/test_content_browser_client.h" | 18 #include "content/test/test_content_browser_client.h" |
21 #include "ui/events/event.h" | 19 #include "ui/events/event.h" |
22 #include "ui/events/event_utils.h" | 20 #include "ui/events/event_utils.h" |
23 #include "ui/views/controls/native/native_view_host.h" | 21 #include "ui/views/controls/native/native_view_host.h" |
24 #include "ui/views/test/test_views_delegate.h" | 22 #include "ui/views/test/test_views_delegate.h" |
25 #include "ui/views/test/widget_test.h" | 23 #include "ui/views/test/widget_test.h" |
26 | 24 |
27 #if defined(USE_AURA) | 25 #if defined(USE_AURA) |
28 #include "ui/aura/window.h" | 26 #include "ui/aura/window.h" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 bool is_fullscreened_; | 123 bool is_fullscreened_; |
126 | 124 |
127 DISALLOW_COPY_AND_ASSIGN(WebViewTestWebContentsDelegate); | 125 DISALLOW_COPY_AND_ASSIGN(WebViewTestWebContentsDelegate); |
128 }; | 126 }; |
129 | 127 |
130 } // namespace | 128 } // namespace |
131 | 129 |
132 // Provides functionality to test a WebView. | 130 // Provides functionality to test a WebView. |
133 class WebViewUnitTest : public views::test::WidgetTest { | 131 class WebViewUnitTest : public views::test::WidgetTest { |
134 public: | 132 public: |
135 WebViewUnitTest() | 133 WebViewUnitTest() = default; |
136 : ui_thread_(content::BrowserThread::UI, base::MessageLoop::current()), | |
137 scoped_task_scheduler_(base::MessageLoop::current()), | |
138 file_blocking_thread_(content::BrowserThread::FILE_USER_BLOCKING, | |
139 base::MessageLoop::current()), | |
140 io_thread_(content::BrowserThread::IO, base::MessageLoop::current()), | |
141 top_level_widget_(nullptr) {} | |
142 | 134 |
143 ~WebViewUnitTest() override {} | 135 ~WebViewUnitTest() override {} |
144 | 136 |
145 void SetUp() override { | 137 void SetUp() override { |
146 set_views_delegate(base::WrapUnique(new WebViewTestViewsDelegate)); | 138 set_views_delegate(base::WrapUnique(new WebViewTestViewsDelegate)); |
147 browser_context_.reset(new content::TestBrowserContext); | 139 browser_context_.reset(new content::TestBrowserContext); |
148 WidgetTest::SetUp(); | 140 WidgetTest::SetUp(); |
149 // Set the test content browser client to avoid pulling in needless | 141 // Set the test content browser client to avoid pulling in needless |
150 // dependencies from content. | 142 // dependencies from content. |
151 SetBrowserClientForTesting(&test_browser_client_); | 143 SetBrowserClientForTesting(&test_browser_client_); |
(...skipping 26 matching lines...) Expand all Loading... |
178 Widget* top_level_widget() const { return top_level_widget_; } | 170 Widget* top_level_widget() const { return top_level_widget_; } |
179 WebView* web_view() const { return web_view_; } | 171 WebView* web_view() const { return web_view_; } |
180 NativeViewHost* holder() const { return web_view_->holder_; } | 172 NativeViewHost* holder() const { return web_view_->holder_; } |
181 | 173 |
182 std::unique_ptr<content::WebContents> CreateWebContents() const { | 174 std::unique_ptr<content::WebContents> CreateWebContents() const { |
183 return base::WrapUnique(content::WebContents::Create( | 175 return base::WrapUnique(content::WebContents::Create( |
184 content::WebContents::CreateParams(browser_context_.get()))); | 176 content::WebContents::CreateParams(browser_context_.get()))); |
185 } | 177 } |
186 | 178 |
187 private: | 179 private: |
188 content::TestBrowserThread ui_thread_; | 180 content::TestBrowserThreadBundle test_browser_thread_bundle_; |
189 base::test::ScopedTaskScheduler scoped_task_scheduler_; | |
190 content::TestBrowserThread file_blocking_thread_; | |
191 content::TestBrowserThread io_thread_; | |
192 std::unique_ptr<content::TestBrowserContext> browser_context_; | 181 std::unique_ptr<content::TestBrowserContext> browser_context_; |
193 content::TestContentBrowserClient test_browser_client_; | 182 content::TestContentBrowserClient test_browser_client_; |
194 | 183 |
195 Widget* top_level_widget_; | 184 Widget* top_level_widget_ = nullptr; |
196 WebView* web_view_; | 185 WebView* web_view_ = nullptr; |
197 | 186 |
198 DISALLOW_COPY_AND_ASSIGN(WebViewUnitTest); | 187 DISALLOW_COPY_AND_ASSIGN(WebViewUnitTest); |
199 }; | 188 }; |
200 | 189 |
201 // Tests that attaching and detaching a WebContents to a WebView makes the | 190 // Tests that attaching and detaching a WebContents to a WebView makes the |
202 // WebContents visible and hidden respectively. | 191 // WebContents visible and hidden respectively. |
203 TEST_F(WebViewUnitTest, TestWebViewAttachDetachWebContents) { | 192 TEST_F(WebViewUnitTest, TestWebViewAttachDetachWebContents) { |
204 // Case 1: Create a new WebContents and set it in the webview via | 193 // Case 1: Create a new WebContents and set it in the webview via |
205 // SetWebContents. This should make the WebContents visible. | 194 // SetWebContents. This should make the WebContents visible. |
206 const std::unique_ptr<content::WebContents> web_contents1( | 195 const std::unique_ptr<content::WebContents> web_contents1( |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 | 469 |
481 // Remove WebView from views hierarchy. NativeView should be detached | 470 // Remove WebView from views hierarchy. NativeView should be detached |
482 // from Widget. | 471 // from Widget. |
483 contents_view->RemoveChildView(webview.get()); | 472 contents_view->RemoveChildView(webview.get()); |
484 // Destroy WebView. NativeView should be detached secondary. | 473 // Destroy WebView. NativeView should be detached secondary. |
485 // There should be no crash. | 474 // There should be no crash. |
486 webview.reset(); | 475 webview.reset(); |
487 } | 476 } |
488 | 477 |
489 } // namespace views | 478 } // namespace views |
OLD | NEW |