Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.h

Issue 2702103002: [ScreenOrientation] De-associate device.mojom.ScreenOrientation from legacy IPC channel.
Patch Set: Synchronize response of lock success with legacy IPC ViewMsg_Resize. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.h
diff --git a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.h b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.h
index 14a4ec3800c8e347785a1115d9df6dcd9866ec81..65dc5ef92cd2a4468ddac6e5caa140fddc6cdf54 100644
--- a/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.h
+++ b/third_party/WebKit/Source/modules/screen_orientation/ScreenOrientationControllerImpl.h
@@ -5,9 +5,13 @@
#ifndef ScreenOrientationControllerImpl_h
#define ScreenOrientationControllerImpl_h
+#include <memory>
+#include <utility>
+
#include "core/dom/Document.h"
#include "core/frame/ScreenOrientationController.h"
#include "core/page/PageVisibilityObserver.h"
+#include "device/screen_orientation/public/interfaces/screen_orientation.mojom-blink.h"
#include "modules/ModulesExport.h"
#include "public/platform/modules/screen_orientation/WebLockOrientationCallback.h"
#include "public/platform/modules/screen_orientation/WebScreenOrientationLockType.h"
@@ -16,7 +20,6 @@
namespace blink {
class ScreenOrientation;
-class WebScreenOrientationClient;
class MODULES_EXPORT ScreenOrientationControllerImpl final
: public ScreenOrientationController,
@@ -37,13 +40,13 @@ class MODULES_EXPORT ScreenOrientationControllerImpl final
void unlock() override;
bool maybeHasActiveLock() const override;
- static void provideTo(LocalFrame&, WebScreenOrientationClient*);
+ static void provideTo(LocalFrame&);
static ScreenOrientationControllerImpl* from(LocalFrame&);
DECLARE_VIRTUAL_TRACE();
private:
- ScreenOrientationControllerImpl(LocalFrame&, WebScreenOrientationClient*);
+ ScreenOrientationControllerImpl(LocalFrame&);
static WebScreenOrientationType computeOrientation(const IntRect&, uint16_t);
@@ -58,14 +61,34 @@ class MODULES_EXPORT ScreenOrientationControllerImpl final
void dispatchEventTimerFired(TimerBase*);
+ void onLockOrientationResult(
+ WebLockOrientationCallback*,
+ device::mojom::blink::ScreenOrientationLockResult,
+ WebScreenOrientationLockType);
+
+ void cancelPendingLock();
+
+ bool lockMatchesCurrentOrientation(WebScreenOrientationLockType);
+
bool isActive() const;
bool isVisible() const;
bool isActiveAndVisible() const;
Member<ScreenOrientation> m_orientation;
- WebScreenOrientationClient* m_client;
+ device::mojom::blink::ScreenOrientationPtr m_remoteScreenOrientation;
+ std::unique_ptr<WebLockOrientationCallback> m_pendingLockCallback;
+
+ using CallbackLockTypeMap =
+ std::map<std::unique_ptr<WebLockOrientationCallback>,
+ WebScreenOrientationLockType>;
+
+ // Lock orientation request has got SUCCESS response, but at that timing the
+ // new screen orientation value carried by legacy IPC ViewMsg_Resize has not
+ // arrived at blink side, so we pend those callbacks for such cases, until we
+ // find that the new screen orientation arrived and matched with what we
+ // wanted to lock to.
+ CallbackLockTypeMap m_waitCallbacks;
TaskRunnerTimer<ScreenOrientationControllerImpl> m_dispatchEventTimer;
- bool m_activeLock = false;
bool m_startedAccurateListen = false;
};

Powered by Google App Engine
This is Rietveld 408576698