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

Unified Diff: ash/wm/maximize_mode/maximize_mode_controller.cc

Issue 263813002: Take a screenshot in maximize mode when volume down and power are pressed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge Created 6 years, 7 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
Index: ash/wm/maximize_mode/maximize_mode_controller.cc
diff --git a/ash/wm/maximize_mode/maximize_mode_controller.cc b/ash/wm/maximize_mode/maximize_mode_controller.cc
index 08d333e48484041c3644ebe08c4d38a425788bc3..61ce2f2205611a724a838ebb705b713a088f2055 100644
--- a/ash/wm/maximize_mode/maximize_mode_controller.cc
+++ b/ash/wm/maximize_mode/maximize_mode_controller.cc
@@ -4,12 +4,18 @@
#include "ash/wm/maximize_mode/maximize_mode_controller.h"
+#include "ash/accelerators/accelerator_controller.h"
+#include "ash/accelerators/accelerator_table.h"
#include "ash/accelerometer/accelerometer_controller.h"
#include "ash/ash_switches.h"
#include "ash/display/display_manager.h"
#include "ash/shell.h"
#include "ash/wm/maximize_mode/maximize_mode_event_blocker.h"
#include "base/command_line.h"
+#include "ui/base/accelerators/accelerator.h"
+#include "ui/events/event.h"
+#include "ui/events/event_handler.h"
+#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/gfx/vector3d_f.h"
namespace ash {
@@ -81,6 +87,47 @@ float ClockwiseAngleBetweenVectorsInDegrees(const gfx::Vector3dF& base,
return angle;
}
+#if defined(OS_CHROMEOS)
+
+// An event handler which listens for a volume down + power keypress and
+// triggers a screenshot when this is seen.
+class ScreenshotActionHandler : public ui::EventHandler {
+ public:
+ ScreenshotActionHandler();
+ virtual ~ScreenshotActionHandler();
+
+ // ui::EventHandler:
+ virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE;
+
+ private:
+ bool volume_down_pressed_;
+
+ DISALLOW_COPY_AND_ASSIGN(ScreenshotActionHandler);
+};
+
+ScreenshotActionHandler::ScreenshotActionHandler()
+ : volume_down_pressed_(false) {
+ Shell::GetInstance()->PrependPreTargetHandler(this);
+}
+
+ScreenshotActionHandler::~ScreenshotActionHandler() {
+ Shell::GetInstance()->RemovePreTargetHandler(this);
+}
+
+void ScreenshotActionHandler::OnKeyEvent(ui::KeyEvent* event) {
+ if (event->key_code() == ui::VKEY_VOLUME_DOWN) {
+ volume_down_pressed_ = event->type() == ui::ET_KEY_PRESSED ||
+ event->type() == ui::ET_TRANSLATED_KEY_PRESS;
+ } else if (volume_down_pressed_ &&
+ event->key_code() == ui::VKEY_POWER &&
+ event->type() == ui::ET_KEY_PRESSED) {
+ Shell::GetInstance()->accelerator_controller()->PerformAction(
+ ash::TAKE_SCREENSHOT, ui::Accelerator());
+ }
+}
+
+#endif // OS_CHROMEOS
+
} // namespace
MaximizeModeController::MaximizeModeController()
@@ -158,10 +205,14 @@ void MaximizeModeController::HandleHingeRotation(const gfx::Vector3dF& base,
angle < kExitMaximizeModeAngle) {
Shell::GetInstance()->EnableMaximizeModeWindowManager(false);
event_blocker_.reset();
+ event_handler_.reset();
} else if (!maximize_mode_engaged &&
angle > kEnterMaximizeModeAngle) {
Shell::GetInstance()->EnableMaximizeModeWindowManager(true);
event_blocker_.reset(new MaximizeModeEventBlocker);
+#if defined(OS_CHROMEOS)
+ event_handler_.reset(new ScreenshotActionHandler);
+#endif
}
}
« no previous file with comments | « ash/wm/maximize_mode/maximize_mode_controller.h ('k') | ash/wm/maximize_mode/maximize_mode_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698