• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef ScreenOrientationController_h
6 #define ScreenOrientationController_h
7 
8 #include "core/frame/FrameDestructionObserver.h"
9 #include "core/frame/PlatformEventController.h"
10 #include "platform/Supplementable.h"
11 #include "platform/Timer.h"
12 #include "public/platform/WebLockOrientationCallback.h"
13 #include "public/platform/WebScreenOrientationLockType.h"
14 #include "public/platform/WebScreenOrientationType.h"
15 
16 namespace blink {
17 
18 class FrameView;
19 class ScreenOrientation;
20 class WebScreenOrientationClient;
21 
22 class ScreenOrientationController FINAL
23     : public NoBaseWillBeGarbageCollectedFinalized<ScreenOrientationController>
24     , public WillBeHeapSupplement<LocalFrame>
25     , public FrameDestructionObserver
26     , public PlatformEventController {
27     WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(ScreenOrientationController);
28     WTF_MAKE_NONCOPYABLE(ScreenOrientationController);
29 public:
30     virtual ~ScreenOrientationController();
31 
32     void setOrientation(ScreenOrientation*);
33     void notifyOrientationChanged();
34 
35     void lock(WebScreenOrientationLockType, WebLockOrientationCallback*);
36     void unlock();
37 
38     static void provideTo(LocalFrame&, WebScreenOrientationClient*);
39     static ScreenOrientationController* from(LocalFrame&);
40     static const char* supplementName();
41 
42     virtual void trace(Visitor*) OVERRIDE;
43 
44 private:
45     explicit ScreenOrientationController(LocalFrame&, WebScreenOrientationClient*);
46     static WebScreenOrientationType computeOrientation(FrameView*);
47 
48     // Inherited from PlatformEventController.
49     virtual void didUpdateData() OVERRIDE;
50     virtual void registerWithDispatcher() OVERRIDE;
51     virtual void unregisterWithDispatcher() OVERRIDE;
52     virtual bool hasLastData() OVERRIDE;
53     virtual void pageVisibilityChanged() OVERRIDE;
54 
55     // Inherited from FrameDestructionObserver.
56     virtual void willDetachFrameHost() override;
57 
58     void notifyDispatcher();
59 
60     void updateOrientation();
61 
62     void dispatchEventTimerFired(Timer<ScreenOrientationController>*);
63 
64     bool isActiveAndVisible() const;
65 
66     PersistentWillBeMember<ScreenOrientation> m_orientation;
67     WebScreenOrientationClient* m_client;
68     Timer<ScreenOrientationController> m_dispatchEventTimer;
69 };
70 
71 } // namespace blink
72 
73 #endif // ScreenOrientationController_h
74