OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/renderer/screen_orientation/screen_orientation_dispatcher.h" | |
6 | |
7 #include "content/common/screen_orientation_messages.h" | |
8 #include "content/public/renderer/render_thread.h" | |
9 #include "third_party/WebKit/public/platform/WebScreenOrientationListener.h" | |
10 | |
11 namespace content { | |
12 | |
13 ScreenOrientationDispatcher::ScreenOrientationDispatcher( | |
14 RenderThread* thread) | |
15 : listener_(NULL) { | |
16 thread->AddObserver(this); | |
17 } | |
18 | |
19 bool ScreenOrientationDispatcher::OnControlMessageReceived( | |
20 const IPC::Message& message) { | |
21 bool handled = true; | |
22 | |
23 IPC_BEGIN_MESSAGE_MAP(ScreenOrientationDispatcher, message) | |
24 IPC_MESSAGE_HANDLER(ScreenOrientationMsg_OrientationChange, | |
25 OnOrientationChange) | |
26 IPC_MESSAGE_UNHANDLED(handled = false) | |
27 IPC_END_MESSAGE_MAP() | |
28 | |
29 return handled; | |
30 } | |
31 | |
32 void ScreenOrientationDispatcher::OnOrientationChange(int orientation) { | |
33 if (!listener_) | |
34 return; | |
35 | |
36 // TODO(mlamouri): we might want to have OrientationChangeEvent to pass us | |
37 // a WebScreenOrientation instead of an int so we can let the backend decide | |
38 // of the relation between angle and orientation name. | |
39 blink::WebScreenOrientation web_orientation; | |
40 switch(orientation) { | |
41 case 0: | |
42 web_orientation = blink::WebScreenOrientationPortraitPrimary; | |
43 break; | |
44 case 90: | |
45 web_orientation = blink::WebScreenOrientationLandscapePrimary; | |
46 break; | |
47 case 180: | |
48 web_orientation = blink::WebScreenOrientationPortraitSecondary; | |
49 break; | |
50 case -90: | |
51 web_orientation = blink::WebScreenOrientationLandscapeSecondary; | |
52 break; | |
53 default: | |
54 NOTREACHED(); | |
Cris Neckar
2014/02/20 18:47:45
We prefer that you not handle failures when it com
mlamouri (slow - plz ping)
2014/02/20 19:01:12
Done.
| |
55 web_orientation = blink::WebScreenOrientationPortraitPrimary; | |
56 break; | |
57 } | |
58 | |
59 listener_->didChangeScreenOrientation(web_orientation); | |
60 } | |
61 | |
62 void ScreenOrientationDispatcher::setListener( | |
63 blink::WebScreenOrientationListener* listener) { | |
64 listener_ = listener; | |
65 } | |
66 | |
67 } // namespace content | |
OLD | NEW |