1// Copyright 2013 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 "chrome/browser/extensions/api/music_manager_private/music_manager_private_api.h"
6
7#include "chrome/browser/extensions/api/music_manager_private/device_id.h"
8
9using content::BrowserThread;
10
11namespace {
12
13const char kDeviceIdNotSupported[] =
14    "Device ID API is not supported on this platform.";
15
16}
17
18namespace extensions {
19namespace api {
20
21MusicManagerPrivateGetDeviceIdFunction::
22    MusicManagerPrivateGetDeviceIdFunction() {
23}
24
25MusicManagerPrivateGetDeviceIdFunction::
26    ~MusicManagerPrivateGetDeviceIdFunction() {
27}
28
29bool MusicManagerPrivateGetDeviceIdFunction::RunAsync() {
30  DCHECK_CURRENTLY_ON(BrowserThread::UI);
31  DeviceId::GetDeviceId(
32      this->extension_id(),
33      base::Bind(
34          &MusicManagerPrivateGetDeviceIdFunction::DeviceIdCallback,
35          this));
36  return true;  // Still processing!
37}
38
39void MusicManagerPrivateGetDeviceIdFunction::DeviceIdCallback(
40    const std::string& device_id) {
41  DCHECK_CURRENTLY_ON(BrowserThread::UI);
42  bool response;
43  if (device_id.empty()) {
44    SetError(kDeviceIdNotSupported);
45    response = false;
46  } else {
47    SetResult(new base::StringValue(device_id));
48    response = true;
49  }
50
51  SendResponse(response);
52}
53
54} // namespace api
55} // namespace extensions
56