| Index: content/public/browser/screen_orientation_provider.h
|
| diff --git a/content/public/browser/screen_orientation_provider.h b/content/public/browser/screen_orientation_provider.h
|
| index 463fc82786656d2d6a74d4b739779d09a230a1f8..f5d0f229b427fd04ad8eb7a04be7f8ca78ab96aa 100644
|
| --- a/content/public/browser/screen_orientation_provider.h
|
| +++ b/content/public/browser/screen_orientation_provider.h
|
| @@ -7,28 +7,33 @@
|
|
|
| #include <memory>
|
|
|
| +#include "base/callback.h"
|
| #include "base/macros.h"
|
| #include "content/common/content_export.h"
|
| #include "content/public/browser/web_contents_observer.h"
|
| #include "third_party/WebKit/public/platform/modules/screen_orientation/WebScreenOrientationLockType.h"
|
| +#include "third_party/WebKit/public/platform/modules/screen_orientation/screen_orientation_lock_types.mojom.h"
|
|
|
| namespace content {
|
|
|
| class ScreenOrientationDelegate;
|
| -class ScreenOrientationDispatcherHost;
|
| class WebContents;
|
|
|
| +using LockOrientationCallback =
|
| + base::Callback<void(::blink::mojom::ScreenOrientationLockResult)>;
|
| +
|
| // Handles screen orientation lock/unlock. Platforms which wish to provide
|
| // custom implementations can provide a factory for ScreenOrientationDelegate.
|
| class CONTENT_EXPORT ScreenOrientationProvider : public WebContentsObserver {
|
| public:
|
| - ScreenOrientationProvider(ScreenOrientationDispatcherHost* dispatcher_host,
|
| - WebContents* web_contents);
|
| + ScreenOrientationProvider(WebContents* web_contents);
|
| +
|
| ~ScreenOrientationProvider() override;
|
|
|
| - // Lock the screen orientation to |orientations|.
|
| - void LockOrientation(int request_id,
|
| - blink::WebScreenOrientationLockType lock_orientation);
|
| + // Lock the screen orientation to |orientation|, |callback| is the callback
|
| + // that should be invoked when this request receives a result.
|
| + void LockOrientation(blink::WebScreenOrientationLockType orientation,
|
| + const LockOrientationCallback& callback);
|
|
|
| // Unlock the screen orientation.
|
| void UnlockOrientation();
|
| @@ -46,11 +51,9 @@ class CONTENT_EXPORT ScreenOrientationProvider : public WebContentsObserver {
|
| bool will_cause_resize) override;
|
|
|
| private:
|
| - struct LockInformation {
|
| - LockInformation(int request_id, blink::WebScreenOrientationLockType lock);
|
| - int request_id;
|
| - blink::WebScreenOrientationLockType lock;
|
| - };
|
| + // Calls on |on_result_callback_| with |result|, followed by resetting
|
| + // |on_result_callback_| and |pending_lock_orientation_|.
|
| + void NotifyLockResult(::blink::mojom::ScreenOrientationLockResult result);
|
|
|
| // Returns the lock type that should be associated with 'natural' lock.
|
| // Returns WebScreenOrientationLockDefault if the natural lock type can't be
|
| @@ -64,15 +67,15 @@ class CONTENT_EXPORT ScreenOrientationProvider : public WebContentsObserver {
|
| // Not owned, responsible for platform implementations.
|
| static ScreenOrientationDelegate* delegate_;
|
|
|
| - // ScreenOrientationDispatcherHost owns ScreenOrientationProvider.
|
| - ScreenOrientationDispatcherHost* dispatcher_;
|
| -
|
| // Whether the ScreenOrientationProvider currently has a lock applied.
|
| bool lock_applied_;
|
|
|
| // Locks that require orientation changes are not completed until
|
| // OnOrientationChange.
|
| - std::unique_ptr<LockInformation> pending_lock_;
|
| +
|
| + base::Optional<blink::WebScreenOrientationLockType> pending_lock_orientation_;
|
| +
|
| + LockOrientationCallback on_result_callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ScreenOrientationProvider);
|
| };
|
|
|