summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/accelerators/accelerator_controller_unittest.cc5
-rw-r--r--ash/accelerators/accelerator_filter_unittest.cc5
-rw-r--r--ash/screenshot_delegate.h9
-rw-r--r--chrome/browser/ui/views/aura/screenshot_taker.cc10
-rw-r--r--chrome/browser/ui/views/aura/screenshot_taker.h3
5 files changed, 29 insertions, 3 deletions
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc
index 1cba03a..964c402 100644
--- a/ash/accelerators/accelerator_controller_unittest.cc
+++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -63,6 +63,11 @@ class DummyScreenshotDelegate : public ScreenshotDelegate {
++handle_take_screenshot_count_;
}
+ virtual void HandleTakePartialScreenshot(
+ aura::Window* window, const gfx::Rect& rect) OVERRIDE {
+ // Do nothing because it's not tested yet.
+ }
+
int handle_take_screenshot_count() const {
return handle_take_screenshot_count_;
}
diff --git a/ash/accelerators/accelerator_filter_unittest.cc b/ash/accelerators/accelerator_filter_unittest.cc
index f8edc563..1476c9f 100644
--- a/ash/accelerators/accelerator_filter_unittest.cc
+++ b/ash/accelerators/accelerator_filter_unittest.cc
@@ -36,6 +36,11 @@ class DummyScreenshotDelegate : public ScreenshotDelegate {
++handle_take_screenshot_count_;
}
+ virtual void HandleTakePartialScreenshot(
+ aura::Window* window, const gfx::Rect& rect) OVERRIDE {
+ // Do nothing because it's not tested yet.
+ }
+
int handle_take_screenshot_count() const {
return handle_take_screenshot_count_;
}
diff --git a/ash/screenshot_delegate.h b/ash/screenshot_delegate.h
index 62ead29..96e67bb 100644
--- a/ash/screenshot_delegate.h
+++ b/ash/screenshot_delegate.h
@@ -10,6 +10,10 @@ namespace aura {
class Window;
} // namespace aura
+namespace gfx {
+class Rect;
+} // namespace gfx
+
namespace ash {
// Delegate for taking screenshots.
@@ -21,6 +25,11 @@ class ScreenshotDelegate {
// This method is called when the user wants to take a screenshot
// manually.
virtual void HandleTakeScreenshot(aura::Window* window) = 0;
+
+ // The actual task of taking a partial screenshot for the given
+ // window.
+ virtual void HandleTakePartialScreenshot(
+ aura::Window* window, const gfx::Rect& rect) = 0;
};
} // namespace ash
diff --git a/chrome/browser/ui/views/aura/screenshot_taker.cc b/chrome/browser/ui/views/aura/screenshot_taker.cc
index 9985d35..c004e9c 100644
--- a/chrome/browser/ui/views/aura/screenshot_taker.cc
+++ b/chrome/browser/ui/views/aura/screenshot_taker.cc
@@ -69,7 +69,8 @@ void SaveScreenshot(bool is_logged_in,
ScreenshotTaker::ScreenshotTaker() {
}
-void ScreenshotTaker::HandleTakeScreenshot(aura::Window* window) {
+void ScreenshotTaker::HandleTakePartialScreenshot(
+ aura::Window* window, const gfx::Rect& rect) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
scoped_refptr<RefCountedBytes> png_data(new RefCountedBytes);
@@ -79,8 +80,7 @@ void ScreenshotTaker::HandleTakeScreenshot(aura::Window* window) {
is_logged_in = chromeos::UserManager::Get()->user_is_logged_in();
#endif
- if (browser::GrabWindowSnapshot(
- window, &png_data->data(), window->bounds())) {
+ if (browser::GrabWindowSnapshot(window, &png_data->data(), rect)) {
content::BrowserThread::PostTask(
content::BrowserThread::FILE, FROM_HERE,
base::Bind(&SaveScreenshot, is_logged_in, png_data));
@@ -88,3 +88,7 @@ void ScreenshotTaker::HandleTakeScreenshot(aura::Window* window) {
LOG(ERROR) << "Failed to grab the window screenshot";
}
}
+
+void ScreenshotTaker::HandleTakeScreenshot(aura::Window* window) {
+ HandleTakePartialScreenshot(window, window->bounds());
+}
diff --git a/chrome/browser/ui/views/aura/screenshot_taker.h b/chrome/browser/ui/views/aura/screenshot_taker.h
index b782ebc..c6707e2 100644
--- a/chrome/browser/ui/views/aura/screenshot_taker.h
+++ b/chrome/browser/ui/views/aura/screenshot_taker.h
@@ -18,7 +18,10 @@ class ScreenshotTaker : public ash::ScreenshotDelegate {
public:
ScreenshotTaker();
+ // Overridden from ash::ScreenshotDelegate:
virtual void HandleTakeScreenshot(aura::Window* window) OVERRIDE;
+ virtual void HandleTakePartialScreenshot(
+ aura::Window* window, const gfx::Rect& rect) OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(ScreenshotTaker);