Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: content/shell/browser/layout_test/blink_test_controller.cc

Issue 2950713002: [DevTools] New harness for inspector-protocol layout tests (Closed)
Patch Set: addressed comments, 4 tests Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/browser/layout_test/blink_test_controller.h" 5 #include "content/shell/browser/layout_test/blink_test_controller.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <iostream> 9 #include <iostream>
10 #include <set> 10 #include <set>
(...skipping 26 matching lines...) Expand all
37 #include "content/public/browser/render_view_host.h" 37 #include "content/public/browser/render_view_host.h"
38 #include "content/public/browser/render_widget_host.h" 38 #include "content/public/browser/render_widget_host.h"
39 #include "content/public/browser/render_widget_host_view.h" 39 #include "content/public/browser/render_widget_host_view.h"
40 #include "content/public/browser/service_worker_context.h" 40 #include "content/public/browser/service_worker_context.h"
41 #include "content/public/browser/storage_partition.h" 41 #include "content/public/browser/storage_partition.h"
42 #include "content/public/browser/web_contents.h" 42 #include "content/public/browser/web_contents.h"
43 #include "content/public/common/associated_interface_provider.h" 43 #include "content/public/common/associated_interface_provider.h"
44 #include "content/public/common/bindings_policy.h" 44 #include "content/public/common/bindings_policy.h"
45 #include "content/public/common/content_switches.h" 45 #include "content/public/common/content_switches.h"
46 #include "content/public/common/url_constants.h" 46 #include "content/public/common/url_constants.h"
47 #include "content/shell/browser/layout_test/devtools_protocol_test_bindings.h"
47 #include "content/shell/browser/layout_test/layout_test_bluetooth_chooser_factor y.h" 48 #include "content/shell/browser/layout_test/layout_test_bluetooth_chooser_factor y.h"
48 #include "content/shell/browser/layout_test/layout_test_content_browser_client.h " 49 #include "content/shell/browser/layout_test/layout_test_content_browser_client.h "
49 #include "content/shell/browser/layout_test/layout_test_devtools_bindings.h" 50 #include "content/shell/browser/layout_test/layout_test_devtools_bindings.h"
50 #include "content/shell/browser/layout_test/layout_test_first_device_bluetooth_c hooser.h" 51 #include "content/shell/browser/layout_test/layout_test_first_device_bluetooth_c hooser.h"
51 #include "content/shell/browser/shell.h" 52 #include "content/shell/browser/shell.h"
52 #include "content/shell/browser/shell_browser_context.h" 53 #include "content/shell/browser/shell_browser_context.h"
53 #include "content/shell/browser/shell_content_browser_client.h" 54 #include "content/shell/browser/shell_content_browser_client.h"
54 #include "content/shell/browser/shell_devtools_frontend.h" 55 #include "content/shell/browser/shell_devtools_frontend.h"
55 #include "content/shell/common/layout_test/layout_test_messages.h" 56 #include "content/shell/common/layout_test/layout_test_messages.h"
56 #include "content/shell/common/layout_test/layout_test_switches.h" 57 #include "content/shell/common/layout_test/layout_test_switches.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 bool enable_pixel_dumping, 294 bool enable_pixel_dumping,
294 const std::string& expected_pixel_hash) { 295 const std::string& expected_pixel_hash) {
295 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 296 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
296 test_phase_ = DURING_TEST; 297 test_phase_ = DURING_TEST;
297 current_working_directory_ = current_working_directory; 298 current_working_directory_ = current_working_directory;
298 enable_pixel_dumping_ = enable_pixel_dumping; 299 enable_pixel_dumping_ = enable_pixel_dumping;
299 expected_pixel_hash_ = expected_pixel_hash; 300 expected_pixel_hash_ = expected_pixel_hash;
300 bool is_devtools_js_test = false; 301 bool is_devtools_js_test = false;
301 test_url_ = LayoutTestDevToolsBindings::MapTestURLIfNeeded( 302 test_url_ = LayoutTestDevToolsBindings::MapTestURLIfNeeded(
302 test_url, &is_devtools_js_test); 303 test_url, &is_devtools_js_test);
304 bool is_devtools_protocol_test = false;
305 test_url_ = DevToolsProtocolTestBindings::MapTestURLIfNeeded(
306 test_url_, &is_devtools_protocol_test);
303 did_send_initial_test_configuration_ = false; 307 did_send_initial_test_configuration_ = false;
304 printer_->reset(); 308 printer_->reset();
305 frame_to_layout_dump_map_.clear(); 309 frame_to_layout_dump_map_.clear();
306 render_process_host_observer_.RemoveAll(); 310 render_process_host_observer_.RemoveAll();
307 all_observed_render_process_hosts_.clear(); 311 all_observed_render_process_hosts_.clear();
308 main_window_render_process_hosts_.clear(); 312 main_window_render_process_hosts_.clear();
309 accumulated_layout_test_runtime_flags_changes_.Clear(); 313 accumulated_layout_test_runtime_flags_changes_.Clear();
310 layout_test_control_map_.clear(); 314 layout_test_control_map_.clear();
311 ShellBrowserContext* browser_context = 315 ShellBrowserContext* browser_context =
312 ShellContentBrowserClient::Get()->browser_context(); 316 ShellContentBrowserClient::Get()->browser_context();
313 is_compositing_test_ = 317 is_compositing_test_ =
314 test_url_.spec().find("compositing/") != std::string::npos; 318 test_url_.spec().find("compositing/") != std::string::npos;
315 initial_size_ = Shell::GetShellDefaultSize(); 319 initial_size_ = Shell::GetShellDefaultSize();
316 // The W3C SVG layout tests use a different size than the other layout tests. 320 // The W3C SVG layout tests use a different size than the other layout tests.
317 if (test_url_.spec().find("W3C-SVG-1.1") != std::string::npos) 321 if (test_url_.spec().find("W3C-SVG-1.1") != std::string::npos)
318 initial_size_ = gfx::Size(kTestSVGWindowWidthDip, kTestSVGWindowHeightDip); 322 initial_size_ = gfx::Size(kTestSVGWindowWidthDip, kTestSVGWindowHeightDip);
319 if (!main_window_) { 323 if (!main_window_) {
320 main_window_ = content::Shell::CreateNewWindow( 324 main_window_ = content::Shell::CreateNewWindow(
321 browser_context, 325 browser_context,
322 GURL(), 326 GURL(),
323 NULL, 327 NULL,
324 initial_size_); 328 initial_size_);
325 WebContentsObserver::Observe(main_window_->web_contents()); 329 WebContentsObserver::Observe(main_window_->web_contents());
330 if (is_devtools_protocol_test) {
331 devtools_protocol_test_bindings_.reset(
332 new DevToolsProtocolTestBindings(main_window_->web_contents()));
333 }
326 current_pid_ = base::kNullProcessId; 334 current_pid_ = base::kNullProcessId;
327 default_prefs_ = 335 default_prefs_ =
328 main_window_->web_contents()->GetRenderViewHost()->GetWebkitPreferences(); 336 main_window_->web_contents()->GetRenderViewHost()->GetWebkitPreferences();
329 if (is_devtools_js_test) 337 if (is_devtools_js_test)
330 LoadDevToolsJSTest(); 338 LoadDevToolsJSTest();
331 else 339 else
332 main_window_->LoadURL(test_url_); 340 main_window_->LoadURL(test_url_);
333 } else { 341 } else {
334 #if defined(OS_MACOSX) 342 #if defined(OS_MACOSX)
335 // Shell::SizeTo is not implemented on all platforms. 343 // Shell::SizeTo is not implemented on all platforms.
336 main_window_->SizeTo(initial_size_); 344 main_window_->SizeTo(initial_size_);
337 #endif 345 #endif
338 main_window_->web_contents() 346 main_window_->web_contents()
339 ->GetRenderViewHost() 347 ->GetRenderViewHost()
340 ->GetWidget() 348 ->GetWidget()
341 ->GetView() 349 ->GetView()
342 ->SetSize(initial_size_); 350 ->SetSize(initial_size_);
343 main_window_->web_contents() 351 main_window_->web_contents()
344 ->GetRenderViewHost() 352 ->GetRenderViewHost()
345 ->GetWidget() 353 ->GetWidget()
346 ->WasResized(); 354 ->WasResized();
347 RenderViewHost* render_view_host = 355 RenderViewHost* render_view_host =
348 main_window_->web_contents()->GetRenderViewHost(); 356 main_window_->web_contents()->GetRenderViewHost();
349 357
358 if (is_devtools_protocol_test) {
359 devtools_protocol_test_bindings_.reset(
360 new DevToolsProtocolTestBindings(main_window_->web_contents()));
361 }
362
350 // Compositing tests override the default preferences (see 363 // Compositing tests override the default preferences (see
351 // BlinkTestController::OverrideWebkitPrefs) so we force them to be 364 // BlinkTestController::OverrideWebkitPrefs) so we force them to be
352 // calculated again to ensure is_compositing_test_ changes are picked up. 365 // calculated again to ensure is_compositing_test_ changes are picked up.
353 OverrideWebkitPrefs(&default_prefs_); 366 OverrideWebkitPrefs(&default_prefs_);
354 367
355 render_view_host->UpdateWebkitPreferences(default_prefs_); 368 render_view_host->UpdateWebkitPreferences(default_prefs_);
356 HandleNewRenderFrameHost(render_view_host->GetMainFrame()); 369 HandleNewRenderFrameHost(render_view_host->GetMainFrame());
357 370
358 if (is_devtools_js_test) { 371 if (is_devtools_js_test) {
359 LoadDevToolsJSTest(); 372 LoadDevToolsJSTest();
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); 637 DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
625 printer_->AddErrorMessage("#CRASHED - gpu"); 638 printer_->AddErrorMessage("#CRASHED - gpu");
626 DiscardMainWindow(); 639 DiscardMainWindow();
627 } 640 }
628 641
629 void BlinkTestController::DiscardMainWindow() { 642 void BlinkTestController::DiscardMainWindow() {
630 // If we're running a test, we need to close all windows and exit the message 643 // If we're running a test, we need to close all windows and exit the message
631 // loop. Otherwise, we're already outside of the message loop, and we just 644 // loop. Otherwise, we're already outside of the message loop, and we just
632 // discard the main window. 645 // discard the main window.
633 devtools_bindings_.reset(); 646 devtools_bindings_.reset();
647 devtools_protocol_test_bindings_.reset();
634 WebContentsObserver::Observe(NULL); 648 WebContentsObserver::Observe(NULL);
635 if (test_phase_ != BETWEEN_TESTS) { 649 if (test_phase_ != BETWEEN_TESTS) {
636 Shell::CloseAllWindows(); 650 Shell::CloseAllWindows();
637 base::ThreadTaskRunnerHandle::Get()->PostTask( 651 base::ThreadTaskRunnerHandle::Get()->PostTask(
638 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 652 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
639 test_phase_ = CLEAN_UP; 653 test_phase_ = CLEAN_UP;
640 } else if (main_window_) { 654 } else if (main_window_) {
641 main_window_->Close(); 655 main_window_->Close();
642 } 656 }
643 main_window_ = NULL; 657 main_window_ = NULL;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 process->Send(new LayoutTestMsg_ReplicateLayoutTestRuntimeFlagsChanges( 716 process->Send(new LayoutTestMsg_ReplicateLayoutTestRuntimeFlagsChanges(
703 accumulated_layout_test_runtime_flags_changes_)); 717 accumulated_layout_test_runtime_flags_changes_));
704 } 718 }
705 } 719 }
706 720
707 void BlinkTestController::OnTestFinished() { 721 void BlinkTestController::OnTestFinished() {
708 test_phase_ = CLEAN_UP; 722 test_phase_ = CLEAN_UP;
709 if (!printer_->output_finished()) 723 if (!printer_->output_finished())
710 printer_->PrintImageFooter(); 724 printer_->PrintImageFooter();
711 main_window_->web_contents()->ExitFullscreen(/*will_cause_resize=*/false); 725 main_window_->web_contents()->ExitFullscreen(/*will_cause_resize=*/false);
726 devtools_protocol_test_bindings_.reset();
712 727
713 ShellBrowserContext* browser_context = 728 ShellBrowserContext* browser_context =
714 ShellContentBrowserClient::Get()->browser_context(); 729 ShellContentBrowserClient::Get()->browser_context();
715 StoragePartition* storage_partition = 730 StoragePartition* storage_partition =
716 BrowserContext::GetStoragePartition(browser_context, nullptr); 731 BrowserContext::GetStoragePartition(browser_context, nullptr);
717 storage_partition->GetServiceWorkerContext()->ClearAllServiceWorkersForTest( 732 storage_partition->GetServiceWorkerContext()->ClearAllServiceWorkersForTest(
718 base::Bind(&BlinkTestController::OnAllServiceWorkersCleared, 733 base::Bind(&BlinkTestController::OnAllServiceWorkersCleared,
719 base::Unretained(this))); 734 base::Unretained(this)));
720 storage_partition->ClearBluetoothAllowedDevicesMapForTesting(); 735 storage_partition->ClearBluetoothAllowedDevicesMapForTesting();
721 } 736 }
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 } 1054 }
1040 DCHECK(layout_test_control_map_[frame].get()); 1055 DCHECK(layout_test_control_map_[frame].get());
1041 return layout_test_control_map_[frame].get(); 1056 return layout_test_control_map_[frame].get();
1042 } 1057 }
1043 1058
1044 void BlinkTestController::HandleLayoutTestControlError(RenderFrameHost* frame) { 1059 void BlinkTestController::HandleLayoutTestControlError(RenderFrameHost* frame) {
1045 layout_test_control_map_.erase(frame); 1060 layout_test_control_map_.erase(frame);
1046 } 1061 }
1047 1062
1048 } // namespace content 1063 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698