| Index: chrome/browser/ui/touch/frame/touch_browser_frame_view.cc
|
| diff --git a/chrome/browser/ui/touch/frame/touch_browser_frame_view.cc b/chrome/browser/ui/touch/frame/touch_browser_frame_view.cc
|
| index b1ae5b4e448f79eb5900b069d3b4ab81d56e0130..89672b4fd5d2653f9e882e8523fed0f3939867f2 100644
|
| --- a/chrome/browser/ui/touch/frame/touch_browser_frame_view.cc
|
| +++ b/chrome/browser/ui/touch/frame/touch_browser_frame_view.cc
|
| @@ -23,6 +23,8 @@
|
| #include "ui/base/animation/slide_animation.h"
|
| #include "ui/gfx/rect.h"
|
| #include "ui/gfx/transform.h"
|
| +#include "views/animation/screen_rotation.h"
|
| +#include "views/desktop/desktop_window_view.h"
|
| #include "views/controls/button/image_button.h"
|
| #include "views/controls/textfield/textfield.h"
|
| #include "views/focus/focus_manager.h"
|
| @@ -46,6 +48,16 @@ bool TabContentsHasFocus(const TabContents* contents) {
|
| return view->Contains(view->GetFocusManager()->GetFocusedView());
|
| }
|
|
|
| +int SideToDegrees(sensors::ScreenOrientation::Side side, int old_degrees) {
|
| + switch (side) {
|
| + case sensors::ScreenOrientation::TOP: return 0;
|
| + case sensors::ScreenOrientation::RIGHT: return 90;
|
| + case sensors::ScreenOrientation::LEFT: return -90;
|
| + case sensors::ScreenOrientation::BOTTOM: return 180;
|
| + default: return old_degrees;
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| // static
|
| @@ -61,7 +73,8 @@ TouchBrowserFrameView::TouchBrowserFrameView(BrowserFrame* frame,
|
| keyboard_showing_(false),
|
| keyboard_height_(kDefaultKeyboardHeight),
|
| focus_listener_added_(false),
|
| - keyboard_(NULL) {
|
| + keyboard_(NULL),
|
| + degrees_(0) {
|
| registrar_.Add(this,
|
| content::NOTIFICATION_NAV_ENTRY_COMMITTED,
|
| NotificationService::AllSources());
|
| @@ -92,10 +105,13 @@ TouchBrowserFrameView::TouchBrowserFrameView(BrowserFrame* frame,
|
| chromeos::input_method::InputMethodManager::GetInstance();
|
| manager->AddVirtualKeyboardObserver(this);
|
| #endif
|
| +
|
| + sensors::Provider::GetInstance()->AddListener(this);
|
| }
|
|
|
| TouchBrowserFrameView::~TouchBrowserFrameView() {
|
| browser_view()->browser()->tabstrip_model()->RemoveObserver(this);
|
| + sensors::Provider::GetInstance()->RemoveListener(this);
|
| }
|
|
|
| std::string TouchBrowserFrameView::GetClassName() const {
|
| @@ -361,6 +377,27 @@ void TouchBrowserFrameView::AnimationEnded(const ui::Animation* animation) {
|
| SchedulePaint();
|
| }
|
|
|
| +void TouchBrowserFrameView::OnScreenOrientationChanged(
|
| + const sensors::ScreenOrientation& change) {
|
| +
|
| + views::View* to_rotate =
|
| + views::desktop::DesktopWindowView::desktop_window_view;
|
| +
|
| + if (!to_rotate) {
|
| + views::Widget* widget = GetWidget();
|
| + to_rotate = widget->GetRootView();
|
| + }
|
| +
|
| + int new_degrees = SideToDegrees(change.upward, degrees_);
|
| +
|
| + views::ScreenRotation::Perform(
|
| + to_rotate,
|
| + degrees_,
|
| + new_degrees);
|
| +
|
| + degrees_ = new_degrees;
|
| +}
|
| +
|
| #if defined(OS_CHROMEOS)
|
| void TouchBrowserFrameView::VirtualKeyboardChanged(
|
| chromeos::input_method::InputMethodManager* manager,
|
|
|