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

Side by Side Diff: content/browser/screen_orientation/screen_orientation_service_impl.cc

Issue 549603003: Create Mojo service for locking/unlocking screen orientation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits Created 6 years, 3 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 unified diff | Download patch
OLDNEW
(Empty)
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 #include "content/browser/screen_orientation/screen_orientation_service_impl.h"
6
7 #include "base/bind.h"
8 #include "content/public/browser/screen_orientation_provider.h"
9
10 namespace content {
11
12 // static
13 void ScreenOrientationServiceImpl::Create(
14 ScreenOrientationProvider* provider,
15 mojo::InterfaceRequest<ScreenOrientationService> request) {
16 BindToRequest(new ScreenOrientationServiceImpl(provider), &request);
17 }
18
19 ScreenOrientationServiceImpl::ScreenOrientationServiceImpl(
20 ScreenOrientationProvider* provider)
21 : provider_(provider),
22 weak_factory_(this) {
23 }
24
25 ScreenOrientationServiceImpl::~ScreenOrientationServiceImpl() {
26 }
27
28 void ScreenOrientationServiceImpl::NotifyLockResult(
29 ScreenOrientationLockResult result) {
30 if (on_result_callback_.is_null())
31 return;
32
33 on_result_callback_.Run(result);
34
35 // Reset the callback.
36 on_result_callback_ = mojo::Callback<void(ScreenOrientationLockResult)>();
37 }
38
39 void ScreenOrientationServiceImpl::LockOrientation(
40 ScreenOrientationLockType lock_type,
41 const mojo::Callback<void(ScreenOrientationLockResult)>& callback) {
42 DCHECK(on_result_callback_.is_null());
43 on_result_callback_ = callback;
44
45 if (!provider_) {
46 NotifyLockResult(SCREEN_ORIENTATION_LOCK_RESULT_ERROR_NOT_AVAILABLE);
47 return;
48 }
49
50 provider_->LockOrientation(
51 lock_type,
52 base::Bind(&ScreenOrientationServiceImpl::NotifyLockResult,
53 weak_factory_.GetWeakPtr()));
54 }
55
56 void ScreenOrientationServiceImpl::UnlockOrientation() {
57 // Cancel any pending lock request.
58 NotifyLockResult(SCREEN_ORIENTATION_LOCK_RESULT_ERROR_CANCELED);
59
60 if (provider_)
61 provider_->UnlockOrientation();
62 }
63
64 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698