summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/ash/screenshot_taker.cc
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-24 08:21:56 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-24 08:21:56 +0000
commit546802004c1eabc12f13fd0713b7c4eb8e24ea22 (patch)
treee08e1eb1c39a4cff9ab7f63fd7225271d5476dff /chrome/browser/ui/ash/screenshot_taker.cc
parente03dc78d55b148fd84c7ae265748e0cc8ac7448e (diff)
downloadchromium_src-546802004c1eabc12f13fd0713b7c4eb8e24ea22.zip
chromium_src-546802004c1eabc12f13fd0713b7c4eb8e24ea22.tar.gz
chromium_src-546802004c1eabc12f13fd0713b7c4eb8e24ea22.tar.bz2
Ignores screenshot taking invocations if it's too close to the previous one.
R=sky@chromium.org BUG=135535 TEST=manually checked the behavior by keep pressing Ctrl-F5 on lumpy Review URL: https://chromiumcodereview.appspot.com/10802046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148062 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/ash/screenshot_taker.cc')
-rw-r--r--chrome/browser/ui/ash/screenshot_taker.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/chrome/browser/ui/ash/screenshot_taker.cc b/chrome/browser/ui/ash/screenshot_taker.cc
index 3e9d655..77de1e7 100644
--- a/chrome/browser/ui/ash/screenshot_taker.cc
+++ b/chrome/browser/ui/ash/screenshot_taker.cc
@@ -33,6 +33,8 @@
#endif
namespace {
+const int kScreenshotMinimumIntervalInMS = 500;
+
bool ShouldUse24HourClock() {
#if defined(OS_CHROMEOS)
Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord();
@@ -138,6 +140,10 @@ ScreenshotTaker::ScreenshotTaker() {
ScreenshotTaker::~ScreenshotTaker() {
}
+void ScreenshotTaker::HandleTakeScreenshot(aura::Window* window) {
+ HandleTakePartialScreenshot(window, window->bounds());
+}
+
void ScreenshotTaker::HandleTakePartialScreenshot(
aura::Window* window, const gfx::Rect& rect) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
@@ -164,6 +170,7 @@ void ScreenshotTaker::HandleTakePartialScreenshot(
bool use_24hour_clock = ShouldUse24HourClock();
if (GrabWindowSnapshot(window, rect, &png_data->data())) {
+ last_screenshot_timestamp_ = base::Time::Now();
DisplayVisualFeedback(rect);
content::BrowserThread::PostTask(
content::BrowserThread::FILE, FROM_HERE,
@@ -174,8 +181,11 @@ void ScreenshotTaker::HandleTakePartialScreenshot(
}
}
-void ScreenshotTaker::HandleTakeScreenshot(aura::Window* window) {
- HandleTakePartialScreenshot(window, window->bounds());
+bool ScreenshotTaker::CanTakeScreenshot() {
+ return last_screenshot_timestamp_.is_null() ||
+ base::Time::Now() - last_screenshot_timestamp_ >
+ base::TimeDelta::FromMilliseconds(
+ kScreenshotMinimumIntervalInMS);
}
void ScreenshotTaker::CloseVisualFeedbackLayer() {