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

Unified Diff: chrome/test/base/ui_test_utils.cc

Issue 10007043: Attempt to fix ChromeFrameTestWithWebServer tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: take snapshots on timeout Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/base/ui_test_utils.h ('k') | chrome_frame/test/chrome_frame_test_utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/base/ui_test_utils.cc
diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc
index 26e8df978f519465c6b91430d6980834e43a28b2..191019d29720c77df1fd0963214eb2b0ac28bb29 100644
--- a/chrome/test/base/ui_test_utils.cc
+++ b/chrome/test/base/ui_test_utils.cc
@@ -8,6 +8,8 @@
#include <windows.h>
#endif
+#include <algorithm>
grt (UTC plus 2) 2012/04/09 14:02:39 remove these
+#include <limits>
#include <vector>
#include "base/bind.h"
@@ -15,6 +17,7 @@
#include "base/callback.h"
#include "base/command_line.h"
#include "base/file_path.h"
+#include "base/file_util.h"
#include "base/json/json_reader.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
@@ -23,6 +26,7 @@
#include "base/rand_util.h"
#include "base/string_number_conversions.h"
#include "base/test/test_timeouts.h"
+#include "base/time.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
@@ -38,6 +42,7 @@
#include "chrome/browser/ui/find_bar/find_notification_details.h"
#include "chrome/browser/ui/find_bar/find_tab_helper.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
+#include "chrome/browser/ui/window_snapshot/window_snapshot.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/extensions/extension_action.h"
@@ -272,6 +277,31 @@ void RunAllPendingMessageAndSendQuit(content::BrowserThread::ID thread_id) {
MessageLoop::QuitClosure());
}
+const char kSnapshotBaseName[] = "ChromiumSnapshot";
+const char kSnapshotExtension[] = ".png";
+
+FilePath GetSnapshotFileName(const FilePath& snapshot_directory) {
+ base::Time::Exploded the_time;
+
+ base::Time::Now().LocalExplode(&the_time);
+ std::string filename(StringPrintf("%s%04d%02d%02d%02d%02d%02d%s",
+ kSnapshotBaseName, the_time.year, the_time.month, the_time.day_of_month,
+ the_time.hour, the_time.minute, the_time.second, kSnapshotExtension));
+
+ FilePath snapshot_file = snapshot_directory.AppendASCII(filename);
+ if (file_util::PathExists(snapshot_file)) {
+ int index = 0;
+ std::string suffix;
+ FilePath trial_file;
+ do {
+ suffix = StringPrintf(" (%d)", ++index);
+ trial_file = snapshot_file.InsertBeforeExtensionASCII(suffix);
+ } while (file_util::PathExists(trial_file));
+ snapshot_file = trial_file;
+ }
+ return snapshot_file;
+}
+
} // namespace
void RunMessageLoop() {
@@ -1148,6 +1178,35 @@ bool TakeEntirePageSnapshot(RenderViewHost* rvh, SkBitmap* bitmap) {
return taker.TakeEntirePageSnapshot(rvh, bitmap);
}
+bool SaveScreenSnapshotToDirectory(const FilePath& directory,
+ FilePath* screenshot_path) {
+ bool succeeded = false;
+ FilePath out_path(GetSnapshotFileName(directory));
+
+ MONITORINFO monitor_info = {};
+ monitor_info.cbSize = sizeof(monitor_info);
+ HMONITOR main_monitor = MonitorFromWindow(NULL, MONITOR_DEFAULTTOPRIMARY);
+ if (GetMonitorInfo(main_monitor, &monitor_info)) {
+ RECT& rect = monitor_info.rcMonitor;
+
+ std::vector<unsigned char> png_data;
+ if (browser::GrabWindowSnapshot(NULL, &png_data,
+ gfx::Rect(rect.right - rect.left,
+ rect.bottom - rect.top)) &&
+ png_data.size() <= INT_MAX) {
+ int bytes = static_cast<int>(png_data.size());
+ int written = file_util::WriteFile(
+ out_path, reinterpret_cast<char*>(&png_data[0]), bytes);
+ succeeded = (written == bytes);
+ }
+ }
+
+ if (succeeded && screenshot_path != NULL)
+ *screenshot_path = out_path;
+
+ return succeeded;
+}
+
namespace internal {
void ClickTask(ui_controls::MouseButton button,
« no previous file with comments | « chrome/test/base/ui_test_utils.h ('k') | chrome_frame/test/chrome_frame_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698