| Index: chrome/browser/extensions/extension_info_private_api_chromeos.cc
|
| diff --git a/chrome/browser/extensions/extension_info_private_api_chromeos.cc b/chrome/browser/extensions/extension_info_private_api_chromeos.cc
|
| index f55ce9a96b2fff0fc50cdb19a42eb1286d334860..f5d441def5fd1470e584fbd86c60e2e994c2a70e 100644
|
| --- a/chrome/browser/extensions/extension_info_private_api_chromeos.cc
|
| +++ b/chrome/browser/extensions/extension_info_private_api_chromeos.cc
|
| @@ -4,16 +4,10 @@
|
|
|
| #include "extension_info_private_api_chromeos.h"
|
|
|
| -#include <map>
|
| -#include "base/threading/non_thread_safe.h"
|
| -#include "base/lazy_instance.h"
|
| -#include "base/logging.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/chromeos/cros/cros_library.h"
|
| #include "chrome/browser/chromeos/cros/network_library.h"
|
| -#include "chrome/browser/chromeos/customization_document.h"
|
| -#include "chrome/common/extensions/extension_error_utils.h"
|
| -#include "content/browser/browser_thread.h"
|
| +#include "chrome/browser/chromeos/system_access.h"
|
|
|
| using chromeos::CrosLibrary;
|
| using chromeos::NetworkLibrary;
|
| @@ -26,86 +20,37 @@ const char kPropertyHWID[] = "hwid";
|
| // Key which corresponds to the home provider property.
|
| const char kPropertyHomeProvider[] = "homeProvider";
|
|
|
| -// Path to OEM partner startup customization manifest.
|
| -const char kStartupCustomizationManifestPath[] =
|
| - "/opt/oem/etc/startup_manifest.json";
|
| -
|
| -// Keeps cached values to avoid unnecessary file operations. Should only be
|
| -// used from the UI thread.
|
| -class CachedProperties : base::NonThreadSafe {
|
| - public:
|
| - ~CachedProperties();
|
| - // Gets value for the property with the given name. Return whether value has
|
| - // been found.
|
| - bool GetValue(const std::string& property_name, std::string* value);
|
| -
|
| - // Updates cached properties with the given item.
|
| - void Update(const std::pair<std::string, std::string>& item);
|
| -
|
| - private:
|
| - typedef std::map<std::string, std::string> PropertyMap;
|
| - PropertyMap cache_;
|
| -};
|
| -
|
| -CachedProperties::~CachedProperties() {
|
| - // It is safe to delete this class on any thread since class is used
|
| - // through LazyInstance.
|
| - DetachFromThread();
|
| -}
|
| -
|
| -bool CachedProperties::GetValue(const std::string& property_name,
|
| - std::string* value) {
|
| - DCHECK(CalledOnValidThread());
|
| - PropertyMap::iterator iter = cache_.find(property_name);
|
| - if (iter != cache_.end()) {
|
| - (*value) = iter->second;
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| +} // namespace
|
|
|
| -// Updates cached properties with the given value of the property.
|
| -void CachedProperties::Update(
|
| - const std::pair<std::string, std::string>& item) {
|
| - DCHECK(CalledOnValidThread());
|
| - cache_.insert(item);
|
| +GetChromeosInfoFunction::GetChromeosInfoFunction() {
|
| }
|
|
|
| -// Provides customization properties. Should be used only on the FILE thread.
|
| -class CustomizationData : base::NonThreadSafe {
|
| - public:
|
| - CustomizationData();
|
| - ~CustomizationData();
|
| -
|
| - // Gets value for the property with the given name. Return whether value has
|
| - // been found.
|
| - bool GetValue(const std::string& property_name, std::string* value);
|
| -
|
| - private:
|
| - // Keeps customization document from which properties are extracted.
|
| - chromeos::StartupCustomizationDocument document_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(CustomizationData);
|
| -};
|
| -
|
| -CustomizationData::CustomizationData() {
|
| - DCHECK(CalledOnValidThread());
|
| - document_.LoadManifestFromFile(FilePath(kStartupCustomizationManifestPath));
|
| +GetChromeosInfoFunction::~GetChromeosInfoFunction() {
|
| }
|
|
|
| -CustomizationData::~CustomizationData() {
|
| - // It is safe to delete this class on any thread since class is used
|
| - // through LazyInstance.
|
| - DetachFromThread();
|
| +bool GetChromeosInfoFunction::RunImpl() {
|
| + ListValue* list = NULL;
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &list));
|
| + scoped_ptr<DictionaryValue> result(new DictionaryValue());
|
| + for (size_t i = 0; i < list->GetSize(); ++i) {
|
| + std::string property_name;
|
| + EXTENSION_FUNCTION_VALIDATE(list->GetString(i, &property_name));
|
| + std::string value;
|
| + if (GetValue(property_name, &value))
|
| + result->Set(property_name, Value::CreateStringValue(value));
|
| + }
|
| + result_.reset(result.release());
|
| + SendResponse(true);
|
| + return true;
|
| }
|
|
|
| -bool CustomizationData::GetValue(const std::string& property_name,
|
| - std::string* value) {
|
| - DCHECK(CalledOnValidThread());
|
| +bool GetChromeosInfoFunction::GetValue(const std::string& property_name,
|
| + std::string* value) {
|
| + value->clear();
|
| if (property_name == kPropertyHWID) {
|
| - (*value) = document_.GetHWID();
|
| + chromeos::SystemAccess* system = chromeos::SystemAccess::GetInstance();
|
| + system->GetMachineStatistic(kPropertyHWID, value);
|
| } else if (property_name == kPropertyHomeProvider) {
|
| - (*value) = "";
|
| if (CrosLibrary::Get()->EnsureLoaded()) {
|
| NetworkLibrary* netlib = CrosLibrary::Get()->GetNetworkLibrary();
|
| const chromeos::NetworkDevice* device = netlib->FindCellularDevice();
|
| @@ -125,73 +70,3 @@ bool CustomizationData::GetValue(const std::string& property_name,
|
| }
|
| return true;
|
| }
|
| -
|
| -// Shared instances.
|
| -base::LazyInstance<CachedProperties> g_cached_properties(
|
| - base::LINKER_INITIALIZED);
|
| -base::LazyInstance<CustomizationData> g_customization(base::LINKER_INITIALIZED);
|
| -
|
| -} // namespace
|
| -
|
| -GetChromeosInfoFunction::GetChromeosInfoFunction()
|
| - : result_dictionary_(new DictionaryValue) {
|
| -}
|
| -
|
| -GetChromeosInfoFunction::~GetChromeosInfoFunction() {
|
| -}
|
| -
|
| -bool GetChromeosInfoFunction::RunImpl() {
|
| - ListValue* list = NULL;
|
| - EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &list));
|
| - for (size_t i = 0; i < list->GetSize(); ++i) {
|
| - std::string property_name;
|
| - EXTENSION_FUNCTION_VALIDATE(list->GetString(i, &property_name));
|
| - std::string value;
|
| - if (g_cached_properties.Get().GetValue(property_name, &value)) {
|
| - result_dictionary_->Set(property_name, Value::CreateStringValue(value));
|
| - } else {
|
| - properties_.push_back(property_name);
|
| - }
|
| - }
|
| -
|
| - if (!properties_.empty()) {
|
| - // This will calls us back on UI thread.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE,
|
| - FROM_HERE,
|
| - NewRunnableMethod(this,
|
| - &GetChromeosInfoFunction::LoadValues));
|
| - } else {
|
| - // Early answer is ready.
|
| - result_.reset(result_dictionary_.release());
|
| - SendResponse(true);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void GetChromeosInfoFunction::RespondOnUIThread() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - for (size_t i = 0; i < new_results_.size(); ++i) {
|
| - result_dictionary_->Set(new_results_[i].first,
|
| - Value::CreateStringValue(new_results_[i].second));
|
| - g_cached_properties.Get().Update(new_results_[i]);
|
| - }
|
| - result_.reset(result_dictionary_.release());
|
| - SendResponse(true);
|
| -}
|
| -
|
| -void GetChromeosInfoFunction::LoadValues() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| - new_results_.clear();
|
| - for (size_t i = 0; i < properties_.size(); ++i) {
|
| - std::string value;
|
| - if (g_customization.Get().GetValue(properties_[i], &value))
|
| - new_results_.push_back(std::make_pair(properties_[i], value));
|
| - }
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI,
|
| - FROM_HERE,
|
| - NewRunnableMethod(
|
| - this,
|
| - &GetChromeosInfoFunction::RespondOnUIThread));
|
| -}
|
|
|