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

Unified Diff: content/browser/screen_orientation/screen_orientation_provider.cc

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: content/browser/screen_orientation/screen_orientation_provider.cc
diff --git a/content/browser/screen_orientation/screen_orientation_provider.cc b/content/browser/screen_orientation/screen_orientation_provider.cc
index 4fa0cfa110a3e8501353867fabfa2e662ba8fdc7..b7e48413705f3c52d0e99f98be70dbbb4ac297b8 100644
--- a/content/browser/screen_orientation/screen_orientation_provider.cc
+++ b/content/browser/screen_orientation/screen_orientation_provider.cc
@@ -24,9 +24,7 @@ using device::mojom::ScreenOrientationLockResult;
ScreenOrientationDelegate* ScreenOrientationProvider::delegate_ = nullptr;
ScreenOrientationProvider::ScreenOrientationProvider(WebContents* web_contents)
- : WebContentsObserver(web_contents),
- lock_applied_(false),
- bindings_(web_contents, this) {}
+ : WebContentsObserver(web_contents), lock_applied_(false) {}
ScreenOrientationProvider::~ScreenOrientationProvider() {
#if defined(OS_ANDROID)
@@ -35,6 +33,30 @@ ScreenOrientationProvider::~ScreenOrientationProvider() {
#endif
}
+// static
+void ScreenOrientationProvider::SetDelegate(
+ ScreenOrientationDelegate* delegate) {
+ delegate_ = delegate;
+}
+
+// static
+void ScreenOrientationProvider::BindRequest(
+ RenderFrameHost* render_frame_host,
+ device::mojom::ScreenOrientationRequest request) {
+ WebContents* web_contents =
+ WebContents::FromRenderFrameHost(render_frame_host);
+ DCHECK(web_contents);
+
+ static_cast<WebContentsImpl*>(web_contents)
+ ->GetScreenOrientationProvider()
+ ->AddBinding(std::move(request));
+}
+
+void ScreenOrientationProvider::AddBinding(
+ device::mojom::ScreenOrientationRequest request) {
+ bindings_.AddBinding(this, std::move(request));
+}
+
void ScreenOrientationProvider::LockOrientation(
blink::WebScreenOrientationLockType orientation,
const LockOrientationCallback& callback) {
@@ -43,6 +65,7 @@ void ScreenOrientationProvider::LockOrientation(
SCREEN_ORIENTATION_LOCK_RESULT_ERROR_CANCELED);
// Record new pending lock request.
pending_callback_ = callback;
+ pending_lock_orientation_ = orientation;
if (!delegate_ || !delegate_->ScreenOrientationProviderSupported()) {
NotifyLockResult(ScreenOrientationLockResult::
@@ -69,6 +92,7 @@ void ScreenOrientationProvider::LockOrientation(
if (orientation == blink::WebScreenOrientationLockNatural) {
orientation = GetNaturalLockType();
+ pending_lock_orientation_ = orientation;
if (orientation == blink::WebScreenOrientationLockDefault) {
// We are in a broken state, let's pretend we got canceled.
NotifyLockResult(ScreenOrientationLockResult::
@@ -87,8 +111,6 @@ void ScreenOrientationProvider::LockOrientation(
ScreenOrientationLockResult::SCREEN_ORIENTATION_LOCK_RESULT_SUCCESS);
return;
}
-
- pending_lock_orientation_ = orientation;
}
void ScreenOrientationProvider::UnlockOrientation() {
@@ -134,15 +156,14 @@ void ScreenOrientationProvider::OnOrientationChange() {
void ScreenOrientationProvider::NotifyLockResult(
ScreenOrientationLockResult result) {
- if (!pending_callback_.is_null())
- base::ResetAndReturn(&pending_callback_).Run(result);
-
- pending_lock_orientation_.reset();
-}
-
-void ScreenOrientationProvider::SetDelegate(
- ScreenOrientationDelegate* delegate) {
- delegate_ = delegate;
+ if (!pending_callback_.is_null()) {
+ DCHECK(pending_lock_orientation_.has_value());
+ base::ResetAndReturn(&pending_callback_)
+ .Run(result, pending_lock_orientation_.value());
+ pending_lock_orientation_.reset();
+ } else {
+ DCHECK(!pending_lock_orientation_.has_value());
+ }
}
void ScreenOrientationProvider::DidToggleFullscreenModeForTab(

Powered by Google App Engine
This is Rietveld 408576698