| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/test/base/ui_test_utils.h" | 5 #include "chrome/test/base/ui_test_utils.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <windows.h> | 8 #include <windows.h> |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 #include "net/base/filename_util.h" | 70 #include "net/base/filename_util.h" |
| 71 #include "net/cookies/cookie_constants.h" | 71 #include "net/cookies/cookie_constants.h" |
| 72 #include "net/cookies/cookie_monster.h" | 72 #include "net/cookies/cookie_monster.h" |
| 73 #include "net/cookies/cookie_store.h" | 73 #include "net/cookies/cookie_store.h" |
| 74 #include "net/test/python_utils.h" | 74 #include "net/test/python_utils.h" |
| 75 #include "net/url_request/url_request_context.h" | 75 #include "net/url_request/url_request_context.h" |
| 76 #include "net/url_request/url_request_context_getter.h" | 76 #include "net/url_request/url_request_context_getter.h" |
| 77 #include "third_party/skia/include/core/SkBitmap.h" | 77 #include "third_party/skia/include/core/SkBitmap.h" |
| 78 #include "third_party/skia/include/core/SkColor.h" | 78 #include "third_party/skia/include/core/SkColor.h" |
| 79 #include "ui/gfx/size.h" | 79 #include "ui/gfx/size.h" |
| 80 #include "ui/snapshot/test/snapshot_desktop.h" | |
| 81 | 80 |
| 82 #if defined(USE_AURA) | 81 #if defined(USE_AURA) |
| 83 #include "ash/shell.h" | 82 #include "ash/shell.h" |
| 84 #include "ui/aura/window_event_dispatcher.h" | 83 #include "ui/aura/window_event_dispatcher.h" |
| 85 #endif | 84 #endif |
| 86 | 85 |
| 87 using content::DomOperationNotificationDetails; | 86 using content::DomOperationNotificationDetails; |
| 88 using content::NativeWebKeyboardEvent; | 87 using content::NativeWebKeyboardEvent; |
| 89 using content::NavigationController; | 88 using content::NavigationController; |
| 90 using content::NavigationEntry; | 89 using content::NavigationEntry; |
| 91 using content::OpenURLParams; | 90 using content::OpenURLParams; |
| 92 using content::RenderViewHost; | 91 using content::RenderViewHost; |
| 93 using content::RenderWidgetHost; | 92 using content::RenderWidgetHost; |
| 94 using content::Referrer; | 93 using content::Referrer; |
| 95 using content::WebContents; | 94 using content::WebContents; |
| 96 | 95 |
| 97 namespace ui_test_utils { | 96 namespace ui_test_utils { |
| 98 | 97 |
| 99 namespace { | 98 namespace { |
| 100 | 99 |
| 101 #if defined(OS_WIN) | |
| 102 const char kSnapshotBaseName[] = "ChromiumSnapshot"; | |
| 103 const char kSnapshotExtension[] = ".png"; | |
| 104 | |
| 105 base::FilePath GetSnapshotFileName(const base::FilePath& snapshot_directory) { | |
| 106 base::Time::Exploded the_time; | |
| 107 | |
| 108 base::Time::Now().LocalExplode(&the_time); | |
| 109 std::string filename(base::StringPrintf("%s%04d%02d%02d%02d%02d%02d%s", | |
| 110 kSnapshotBaseName, the_time.year, the_time.month, the_time.day_of_month, | |
| 111 the_time.hour, the_time.minute, the_time.second, kSnapshotExtension)); | |
| 112 | |
| 113 base::FilePath snapshot_file = snapshot_directory.AppendASCII(filename); | |
| 114 if (base::PathExists(snapshot_file)) { | |
| 115 int index = 0; | |
| 116 std::string suffix; | |
| 117 base::FilePath trial_file; | |
| 118 do { | |
| 119 suffix = base::StringPrintf(" (%d)", ++index); | |
| 120 trial_file = snapshot_file.InsertBeforeExtensionASCII(suffix); | |
| 121 } while (base::PathExists(trial_file)); | |
| 122 snapshot_file = trial_file; | |
| 123 } | |
| 124 return snapshot_file; | |
| 125 } | |
| 126 #endif // defined(OS_WIN) | |
| 127 | |
| 128 Browser* WaitForBrowserNotInSet(std::set<Browser*> excluded_browsers) { | 100 Browser* WaitForBrowserNotInSet(std::set<Browser*> excluded_browsers) { |
| 129 Browser* new_browser = GetBrowserNotInSet(excluded_browsers); | 101 Browser* new_browser = GetBrowserNotInSet(excluded_browsers); |
| 130 if (new_browser == NULL) { | 102 if (new_browser == NULL) { |
| 131 BrowserAddedObserver observer; | 103 BrowserAddedObserver observer; |
| 132 new_browser = observer.WaitForSingleNewBrowser(); | 104 new_browser = observer.WaitForSingleNewBrowser(); |
| 133 // The new browser should never be in |excluded_browsers|. | 105 // The new browser should never be in |excluded_browsers|. |
| 134 DCHECK(!ContainsKey(excluded_browsers, new_browser)); | 106 DCHECK(!ContainsKey(excluded_browsers, new_browser)); |
| 135 } | 107 } |
| 136 return new_browser; | 108 return new_browser; |
| 137 } | 109 } |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 BrowserAddedObserver::~BrowserAddedObserver() { | 470 BrowserAddedObserver::~BrowserAddedObserver() { |
| 499 } | 471 } |
| 500 | 472 |
| 501 Browser* BrowserAddedObserver::WaitForSingleNewBrowser() { | 473 Browser* BrowserAddedObserver::WaitForSingleNewBrowser() { |
| 502 notification_observer_.Wait(); | 474 notification_observer_.Wait(); |
| 503 // Ensure that only a single new browser has appeared. | 475 // Ensure that only a single new browser has appeared. |
| 504 EXPECT_EQ(original_browsers_.size() + 1, chrome::GetTotalBrowserCount()); | 476 EXPECT_EQ(original_browsers_.size() + 1, chrome::GetTotalBrowserCount()); |
| 505 return GetBrowserNotInSet(original_browsers_); | 477 return GetBrowserNotInSet(original_browsers_); |
| 506 } | 478 } |
| 507 | 479 |
| 508 #if defined(OS_WIN) | |
| 509 | |
| 510 bool SaveScreenSnapshotToDirectory(const base::FilePath& directory, | |
| 511 base::FilePath* screenshot_path) { | |
| 512 bool succeeded = false; | |
| 513 base::FilePath out_path(GetSnapshotFileName(directory)); | |
| 514 | |
| 515 MONITORINFO monitor_info = {}; | |
| 516 monitor_info.cbSize = sizeof(monitor_info); | |
| 517 HMONITOR main_monitor = MonitorFromWindow(NULL, MONITOR_DEFAULTTOPRIMARY); | |
| 518 if (GetMonitorInfo(main_monitor, &monitor_info)) { | |
| 519 RECT& rect = monitor_info.rcMonitor; | |
| 520 | |
| 521 std::vector<unsigned char> png_data; | |
| 522 gfx::Rect bounds( | |
| 523 gfx::Size(rect.right - rect.left, rect.bottom - rect.top)); | |
| 524 if (ui::GrabDesktopSnapshot(bounds, &png_data) && | |
| 525 png_data.size() <= INT_MAX) { | |
| 526 int bytes = static_cast<int>(png_data.size()); | |
| 527 int written = base::WriteFile( | |
| 528 out_path, reinterpret_cast<char*>(&png_data[0]), bytes); | |
| 529 succeeded = (written == bytes); | |
| 530 } | |
| 531 } | |
| 532 | |
| 533 if (succeeded && screenshot_path != NULL) | |
| 534 *screenshot_path = out_path; | |
| 535 | |
| 536 return succeeded; | |
| 537 } | |
| 538 | |
| 539 bool SaveScreenSnapshotToDesktop(base::FilePath* screenshot_path) { | |
| 540 base::FilePath desktop; | |
| 541 | |
| 542 return PathService::Get(base::DIR_USER_DESKTOP, &desktop) && | |
| 543 SaveScreenSnapshotToDirectory(desktop, screenshot_path); | |
| 544 } | |
| 545 | |
| 546 #endif // defined(OS_WIN) | |
| 547 | |
| 548 void OverrideGeolocation(double latitude, double longitude) { | 480 void OverrideGeolocation(double latitude, double longitude) { |
| 549 content::Geoposition position; | 481 content::Geoposition position; |
| 550 position.latitude = latitude; | 482 position.latitude = latitude; |
| 551 position.longitude = longitude; | 483 position.longitude = longitude; |
| 552 position.altitude = 0.; | 484 position.altitude = 0.; |
| 553 position.accuracy = 0.; | 485 position.accuracy = 0.; |
| 554 position.timestamp = base::Time::Now(); | 486 position.timestamp = base::Time::Now(); |
| 555 content::GeolocationProvider::GetInstance()->OverrideLocationForTesting( | 487 content::GeolocationProvider::GetInstance()->OverrideLocationForTesting( |
| 556 position); | 488 position); |
| 557 } | 489 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 575 | 507 |
| 576 void HistoryEnumerator::HistoryQueryComplete( | 508 void HistoryEnumerator::HistoryQueryComplete( |
| 577 const base::Closure& quit_task, | 509 const base::Closure& quit_task, |
| 578 history::QueryResults* results) { | 510 history::QueryResults* results) { |
| 579 for (size_t i = 0; i < results->size(); ++i) | 511 for (size_t i = 0; i < results->size(); ++i) |
| 580 urls_.push_back((*results)[i].url()); | 512 urls_.push_back((*results)[i].url()); |
| 581 quit_task.Run(); | 513 quit_task.Run(); |
| 582 } | 514 } |
| 583 | 515 |
| 584 } // namespace ui_test_utils | 516 } // namespace ui_test_utils |
| OLD | NEW |