blob: 26b2abc2019c8ac428f368f9f6588a334bb9f979 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/device/wake_lock/wake_lock_provider.h"
#include <utility>
#include "mojo/public/cpp/bindings/strong_binding.h"
#include "services/device/wake_lock/wake_lock.h"
#include "services/device/wake_lock/wake_lock_for_testing.h"
namespace device {
bool WakeLockProvider::is_in_unittest_ = false;
// static
void WakeLockProvider::Create(
mojom::WakeLockProviderRequest request,
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
const WakeLockContextCallback& native_view_getter) {
mojo::MakeStrongBinding(base::MakeUnique<WakeLockProvider>(
std::move(file_task_runner), native_view_getter),
std::move(request));
}
WakeLockProvider::WakeLockProvider(
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner,
const WakeLockContextCallback& native_view_getter)
: file_task_runner_(std::move(file_task_runner)),
native_view_getter_(native_view_getter) {}
WakeLockProvider::~WakeLockProvider() {}
void WakeLockProvider::GetWakeLockContextForID(
int context_id,
mojo::InterfaceRequest<mojom::WakeLockContext> request) {
DCHECK(context_id >= 0);
mojo::MakeStrongBinding(
base::MakeUnique<WakeLockContext>(context_id, file_task_runner_,
native_view_getter_),
std::move(request));
}
void WakeLockProvider::GetWakeLockWithoutContext(
mojom::WakeLockType type,
mojom::WakeLockReason reason,
const std::string& description,
mojom::WakeLockRequest request) {
if (is_in_unittest_) {
// Create WakeLockForTesting.
new WakeLockForTesting(std::move(request), type, reason, description,
WakeLockContext::WakeLockInvalidContextId,
native_view_getter_, file_task_runner_);
} else {
// WakeLock owns itself.
new WakeLock(std::move(request), type, reason, description,
WakeLockContext::WakeLockInvalidContextId, native_view_getter_,
file_task_runner_);
}
}
} // namespace device