OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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/chromeos/extensions/get_chromeos_info_extension_api.h" | |
6 | |
7 #include "base/values.h" | |
8 #include "chrome/browser/chromeos/cros/cros_library.h" | |
9 #include "chrome/browser/chromeos/cros/network_library.h" | |
10 #include "chrome/browser/chromeos/login/wizard_controller.h" | |
11 #include "chrome/browser/chromeos/system/statistics_provider.h" | |
12 | |
13 using chromeos::CrosLibrary; | |
14 using chromeos::NetworkLibrary; | |
15 | |
16 namespace { | |
17 | |
18 // Name of machine statistic property with HWID. | |
19 const char kHardwareClass[] = "hardware_class"; | |
20 | |
21 // Key which corresponds to the HWID setting. | |
22 const char kPropertyHWID[] = "hwid"; | |
23 | |
24 // Key which corresponds to the home provider property. | |
25 const char kPropertyHomeProvider[] = "homeProvider"; | |
26 | |
27 // Key which corresponds to the initial_locale property. | |
28 const char kPropertyInitialLocale[] = "initialLocale"; | |
29 | |
30 } // namespace | |
31 | |
32 GetChromeosInfoFunction::GetChromeosInfoFunction() { | |
33 } | |
34 | |
35 GetChromeosInfoFunction::~GetChromeosInfoFunction() { | |
36 } | |
37 | |
38 bool GetChromeosInfoFunction::RunImpl() { | |
39 ListValue* list = NULL; | |
40 EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &list)); | |
41 scoped_ptr<DictionaryValue> result(new DictionaryValue()); | |
42 for (size_t i = 0; i < list->GetSize(); ++i) { | |
43 std::string property_name; | |
44 EXTENSION_FUNCTION_VALIDATE(list->GetString(i, &property_name)); | |
45 std::string value; | |
46 if (GetValue(property_name, &value)) | |
47 result->Set(property_name, Value::CreateStringValue(value)); | |
48 } | |
49 result_.reset(result.release()); | |
50 SendResponse(true); | |
51 return true; | |
52 } | |
53 | |
54 bool GetChromeosInfoFunction::GetValue(const std::string& property_name, | |
55 std::string* value) { | |
56 value->clear(); | |
57 if (property_name == kPropertyHWID) { | |
58 chromeos::system::StatisticsProvider* provider = | |
59 chromeos::system::StatisticsProvider::GetInstance(); | |
60 provider->GetMachineStatistic(kHardwareClass, value); | |
61 } else if (property_name == kPropertyHomeProvider) { | |
62 NetworkLibrary* netlib = CrosLibrary::Get()->GetNetworkLibrary(); | |
63 (*value) = netlib->GetCellularHomeCarrierId(); | |
64 } else if (property_name == kPropertyInitialLocale) { | |
65 *value = chromeos::WizardController::GetInitialLocale(); | |
66 } else { | |
67 LOG(ERROR) << "Unknown property request: " << property_name; | |
68 return false; | |
69 } | |
70 return true; | |
71 } | |
OLD | NEW |