Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / browser / screen_orientation / screen_orientation_provider.h
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 CONTENT_BROWSER_SCREEN_ORIENTATION_SCREEN_ORIENTATION_PROVIDER_H_
6 #define CONTENT_BROWSER_SCREEN_ORIENTATION_SCREEN_ORIENTATION_PROVIDER_H_
7
8 #include "base/macros.h"
9 #include "third_party/WebKit/public/platform/WebScreenOrientationLockType.h"
10
11 namespace content {
12
13 class ScreenOrientationDispatcherHost;
14 class WebContents;
15
16 // Interface that needs to be implemented by any backend that wants to handle
17 // screen orientation lock/unlock.
18 class ScreenOrientationProvider {
19  public:
20   // Lock the screen orientation to |orientations|.
21   virtual void LockOrientation(
22       int request_id,
23       blink::WebScreenOrientationLockType orientations) = 0;
24
25   // Unlock the screen orientation.
26   virtual void UnlockOrientation() = 0;
27
28   // Inform about a screen orientation update. It is called to let the provider
29   // know if a lock has been resolved.
30   virtual void OnOrientationChange() = 0;
31
32   virtual ~ScreenOrientationProvider() {}
33
34  protected:
35   friend class ScreenOrientationDispatcherHost;
36
37   static ScreenOrientationProvider* Create(
38       ScreenOrientationDispatcherHost* dispatcher_host,
39       WebContents* web_contents);
40
41   ScreenOrientationProvider() {}
42
43   DISALLOW_COPY_AND_ASSIGN(ScreenOrientationProvider);
44 };
45
46 } // namespace content
47
48 #endif // CONTENT_BROWSER_SCREEN_ORIENTATION_SCREEN_ORIENTATION_PROVIDER_H_