default_profile.cc revision e692740c0623d4cb5d92d36214982ee45a03a5db
1// Copyright (c) 2012 The Chromium OS 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 "shill/default_profile.h" 6 7#include <vector> 8 9#include <base/file_path.h> 10#include <base/stringprintf.h> 11#include <chromeos/dbus/service_constants.h> 12 13#include "shill/adaptor_interfaces.h" 14#include "shill/control_interface.h" 15#include "shill/manager.h" 16#include "shill/portal_detector.h" 17#include "shill/store_interface.h" 18 19using std::vector; 20 21namespace shill { 22// static 23const char DefaultProfile::kDefaultId[] = "default"; 24// static 25const char DefaultProfile::kStorageId[] = "global"; 26// static 27const char DefaultProfile::kStorageCheckPortalList[] = "CheckPortalList"; 28// static 29const char DefaultProfile::kStorageHostName[] = "HostName"; 30// static 31const char DefaultProfile::kStorageName[] = "Name"; 32// static 33const char DefaultProfile::kStorageOfflineMode[] = "OfflineMode"; 34// static 35const char DefaultProfile::kStoragePortalURL[] = "PortalURL"; 36 37DefaultProfile::DefaultProfile(ControlInterface *control, 38 Manager *manager, 39 const FilePath &storage_path, 40 const Manager::Properties &manager_props) 41 : Profile(control, manager, Identifier(kDefaultId), "", true), 42 storage_path_(storage_path), 43 props_(manager_props) { 44 PropertyStore *store = this->mutable_store(); 45 store->RegisterConstString(flimflam::kCheckPortalListProperty, 46 &manager_props.check_portal_list); 47 store->RegisterConstString(flimflam::kCountryProperty, 48 &manager_props.country); 49 store->RegisterConstBool(flimflam::kOfflineModeProperty, 50 &manager_props.offline_mode); 51 store->RegisterConstString(flimflam::kPortalURLProperty, 52 &manager_props.portal_url); 53} 54 55DefaultProfile::~DefaultProfile() {} 56 57bool DefaultProfile::LoadManagerProperties(Manager::Properties *manager_props) { 58 storage()->GetString(kStorageId, kStorageHostName, &manager_props->host_name); 59 storage()->GetBool(kStorageId, kStorageOfflineMode, 60 &manager_props->offline_mode); 61 storage()->GetString(kStorageId, 62 kStorageCheckPortalList, 63 &manager_props->check_portal_list); 64 if (!storage()->GetString(kStorageId, kStoragePortalURL, 65 &manager_props->portal_url)) { 66 manager_props->portal_url = PortalDetector::kDefaultURL; 67 } 68 return true; 69} 70 71bool DefaultProfile::Save() { 72 storage()->SetString(kStorageId, kStorageHostName, props_.host_name); 73 storage()->SetString(kStorageId, kStorageName, GetFriendlyName()); 74 storage()->SetBool(kStorageId, kStorageOfflineMode, props_.offline_mode); 75 storage()->SetString(kStorageId, 76 kStorageCheckPortalList, 77 props_.check_portal_list); 78 storage()->SetString(kStorageId, 79 kStoragePortalURL, 80 props_.portal_url); 81 vector<DeviceRefPtr>::iterator it; 82 for (it = manager()->devices_begin(); it != manager()->devices_end(); ++it) { 83 if (!(*it)->Save(storage())) { 84 LOG(ERROR) << "Could not save " << (*it)->UniqueName(); 85 return false; 86 } 87 } 88 return Profile::Save(); 89} 90 91bool DefaultProfile::GetStoragePath(FilePath *path) { 92 *path = storage_path_.Append(base::StringPrintf("%s.profile", kDefaultId)); 93 return true; 94} 95 96} // namespace shill 97