Chromium Code Reviews| Index: chrome/browser/extensions/api/cast_devices_private/cast_devices_private_api.cc |
| diff --git a/chrome/browser/extensions/api/cast_devices_private/cast_devices_private_api.cc b/chrome/browser/extensions/api/cast_devices_private/cast_devices_private_api.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2d8db395c4e2e4fd349413121cd42ec7d004682a |
| --- /dev/null |
| +++ b/chrome/browser/extensions/api/cast_devices_private/cast_devices_private_api.cc |
| @@ -0,0 +1,99 @@ |
| +// Copyright 2015 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 "chrome/browser/extensions/api/cast_devices_private/cast_devices_private_api.h" |
| + |
| +#include "base/lazy_instance.h" |
| +#include "base/strings/utf_string_conversions.h" |
| +#include "chrome/common/extensions/api/cast_devices_private.h" |
| + |
| +namespace extensions { |
| + |
| +namespace { |
| + |
| +ash::CastConfigDelegate::Receiver ConvertType( |
|
achuithb
2015/08/18 06:19:30
Rename to ConvertReceiverType?
I don't think ther
jdufault
2015/08/18 19:53:00
Done.
|
| + const api::cast_devices_private::Receiver& receiver) { |
| + ash::CastConfigDelegate::Receiver result; |
| + result.id = receiver.id; |
| + result.name = base::UTF8ToUTF16(receiver.name); |
| + return result; |
| +} |
| + |
| +ash::CastConfigDelegate::Activity ConvertType( |
|
achuithb
2015/08/18 06:19:30
Rename to ConvertActivityType?
jdufault
2015/08/18 19:53:01
Done.
|
| + const api::cast_devices_private::Activity& activity) { |
| + ash::CastConfigDelegate::Activity result; |
| + result.id = activity.id; |
| + result.title = base::UTF8ToUTF16(activity.title); |
| + result.tab_id = activity.tab_id; |
| + return result; |
| +} |
| + |
| +ash::CastConfigDelegate::ReceiverAndActivity ConvertType( |
|
achuithb
2015/08/18 06:19:30
Rename to ConvertReceiverAndActivityType?
jdufault
2015/08/18 19:53:00
Done.
|
| + const api::cast_devices_private::Receiver& receiver, |
| + const api::cast_devices_private::Activity* activity) { |
| + ash::CastConfigDelegate::ReceiverAndActivity result; |
| + result.receiver = ConvertType(receiver); |
| + if (activity) |
| + result.activity = ConvertType(*activity); |
| + return result; |
| +} |
| + |
| +} // namespace |
| + |
| +static base::LazyInstance< |
| + BrowserContextKeyedAPIFactory<CastDeviceUpdateListeners>> g_factory = |
| + LAZY_INSTANCE_INITIALIZER; |
| + |
| +// static |
| +BrowserContextKeyedAPIFactory<CastDeviceUpdateListeners>* |
| +CastDeviceUpdateListeners::GetFactoryInstance() { |
| + return g_factory.Pointer(); |
| +} |
| + |
| +// static |
| +CastDeviceUpdateListeners* CastDeviceUpdateListeners::Get( |
| + content::BrowserContext* context) { |
| + return BrowserContextKeyedAPIFactory<CastDeviceUpdateListeners>::Get(context); |
| +} |
| + |
| +CastDeviceUpdateListeners::CastDeviceUpdateListeners( |
| + content::BrowserContext* context) {} |
| +CastDeviceUpdateListeners::~CastDeviceUpdateListeners() {} |
|
achuithb
2015/08/18 06:19:31
newline before this line?
jdufault
2015/08/18 19:53:00
Done.
|
| + |
| +ash::CastConfigDelegate::DeviceUpdateSubscription |
| +CastDeviceUpdateListeners::RegisterCallback( |
| + const ash::CastConfigDelegate::ReceiversAndActivitesCallback& callback) { |
| + return callback_list_.Add(callback); |
| +} |
| + |
| +void CastDeviceUpdateListeners::NotifyCallbacks( |
| + const std::vector<ash::CastConfigDelegate::ReceiverAndActivity>& devices) { |
| + callback_list_.Notify(devices); |
| +} |
| + |
| +CastDevicesPrivateUpdateDevicesFunction:: |
| + CastDevicesPrivateUpdateDevicesFunction() {} |
| + |
| +CastDevicesPrivateUpdateDevicesFunction:: |
| + ~CastDevicesPrivateUpdateDevicesFunction() {} |
| + |
| +ExtensionFunction::ResponseAction |
| + CastDevicesPrivateUpdateDevicesFunction::Run() { |
|
Ken Rockot(use gerrit already)
2015/08/15 00:07:45
nit: in this case (return type on its own line) pr
jdufault
2015/08/18 19:53:00
Done.
|
| + auto params = |
| + api::cast_devices_private::UpdateDevices::Params::Create(*args_); |
| + |
| + std::vector<ash::CastConfigDelegate::ReceiverAndActivity> devices; |
| + for (linked_ptr<api::cast_devices_private::ReceiverActivity> device : |
| + params->devices) { |
| + devices.push_back(ConvertType(device->receiver, device->activity.get())); |
| + } |
| + |
| + CastDeviceUpdateListeners* storage = |
|
achuithb
2015/08/18 06:19:30
auto is fine here?
jdufault
2015/08/18 19:53:00
Done.
|
| + CastDeviceUpdateListeners::Get(browser_context()); |
| + storage->NotifyCallbacks(devices); |
| + |
| + return RespondNow(NoArguments()); |
| +} |
| + |
| +} // namespace extensions |