Chromium Code Reviews| Index: content/renderer/screen_orientation/screen_orientation_dispatcher.cc |
| diff --git a/content/renderer/screen_orientation/screen_orientation_dispatcher.cc b/content/renderer/screen_orientation/screen_orientation_dispatcher.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6059226b14f81790392b755caa2d7dbb87b6d121 |
| --- /dev/null |
| +++ b/content/renderer/screen_orientation/screen_orientation_dispatcher.cc |
| @@ -0,0 +1,64 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/renderer/screen_orientation/screen_orientation_dispatcher.h" |
| + |
| +#include "content/common/screen_orientation_messages.h" |
| +#include "content/public/renderer/render_thread.h" |
| +#include "third_party/WebKit/public/platform/WebScreenOrientationListener.h" |
| + |
| +namespace content { |
| + |
| +ScreenOrientationDispatcher::ScreenOrientationDispatcher( |
| + RenderThread* thread) |
| + : listener_(NULL) { |
| + thread->AddObserver(this); |
| +} |
| + |
| +bool ScreenOrientationDispatcher::OnControlMessageReceived( |
| + const IPC::Message& message) { |
| + bool handled = true; |
| + |
| + IPC_BEGIN_MESSAGE_MAP(ScreenOrientationDispatcher, message) |
| + IPC_MESSAGE_HANDLER(ScreenOrientationMsg_OrientationChange, |
| + OnOrientationChange) |
| + IPC_MESSAGE_UNHANDLED(handled = false) |
| + IPC_END_MESSAGE_MAP() |
| + |
| + return handled; |
| +} |
| + |
| +void ScreenOrientationDispatcher::OnOrientationChange(int orientation) { |
| + // TODO(mlamouri): we might want to have OrientationChangeEvent to pass us |
| + // a WebScreenOrientation instead of an int so we can let the backend decide |
| + // of the relation between angle and orientation name. |
| + blink::WebScreenOrientation web_orientation; |
| + switch(orientation) { |
| + case 0: |
| + web_orientation = blink::WebScreenOrientationPortraitPrimary; |
| + break; |
| + case 90: |
| + web_orientation = blink::WebScreenOrientationLandscapePrimary; |
| + break; |
| + case 180: |
| + web_orientation = blink::WebScreenOrientationPortraitSecondary; |
| + break; |
| + case -90: |
| + web_orientation = blink::WebScreenOrientationLandscapeSecondary; |
| + break; |
| + default: |
| + NOTREACHED(); |
| + web_orientation = blink::WebScreenOrientationPortraitPrimary; |
| + break; |
| + } |
| + |
| + listener_->didChangeScreenOrientation(web_orientation); |
|
jochen (gone - plz use gerrit)
2014/02/20 16:11:04
what if listener_ is NULL?
mlamouri (slow - plz ping)
2014/02/20 16:32:47
Hmm. I was assuming that could not happen and DCHE
|
| +} |
| + |
| +void ScreenOrientationDispatcher::setListener( |
| + blink::WebScreenOrientationListener* listener) { |
| + listener_ = listener; |
| +} |
| + |
| +} // namespace content |