1// 2// Copyright (C) 2012 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17#ifndef SHILL_DEFAULT_PROFILE_H_ 18#define SHILL_DEFAULT_PROFILE_H_ 19 20#include <random> 21#include <string> 22#include <vector> 23 24#include <gtest/gtest_prod.h> // for FRIEND_TEST 25 26#include "shill/event_dispatcher.h" 27#include "shill/manager.h" 28#include "shill/profile.h" 29#include "shill/property_store.h" 30#include "shill/refptr_types.h" 31 32namespace shill { 33 34class ControlInterface; 35#if !defined(DISABLE_WIFI) 36class WiFiProvider; 37#endif // DISABLE_WIFI 38 39class DefaultProfile : public Profile { 40 public: 41 static const char kDefaultId[]; 42 43 DefaultProfile(ControlInterface* control, 44 Metrics* metrics, 45 Manager* manager, 46 const base::FilePath& storage_directory, 47 const std::string& profile_id, 48 const Manager::Properties& manager_props); 49 ~DefaultProfile() override; 50 51 // Loads global configuration into manager properties. This should 52 // only be called by the Manager. 53 virtual void LoadManagerProperties(Manager::Properties* manager_props, 54 DhcpProperties* dhcp_properties); 55 56 // Override the Profile superclass implementation to accept all Ethernet 57 // services, since these should have an affinity for the default profile. 58 bool ConfigureService(const ServiceRefPtr& service) override; 59 60 // Persists profile information, as well as that of discovered devices 61 // and bound services, to disk. 62 // Returns true on success, false on failure. 63 bool Save() override; 64 65 // Inherited from Profile. 66 bool UpdateDevice(const DeviceRefPtr& device) override; 67 68#if !defined(DISABLE_WIFI) 69 // Inherited from Profile. 70 bool UpdateWiFiProvider(const WiFiProvider& wifi_provider) override; 71#endif // DISABLE_WIFI 72 73 bool IsDefault() const override { return true; } 74 75 private: 76 friend class DefaultProfileTest; 77 FRIEND_TEST(DefaultProfileTest, GetStoragePath); 78 FRIEND_TEST(DefaultProfileTest, LoadManagerDefaultProperties); 79 FRIEND_TEST(DefaultProfileTest, LoadManagerProperties); 80 FRIEND_TEST(DefaultProfileTest, Save); 81 82 static const char kStorageId[]; 83 static const char kStorageArpGateway[]; 84 static const char kStorageCheckPortalList[]; 85 static const char kStorageConnectionIdSalt[]; 86 static const char kStorageHostName[]; 87 static const char kStorageIgnoredDNSSearchPaths[]; 88 static const char kStorageLinkMonitorTechnologies[]; 89 static const char kStorageName[]; 90 static const char kStorageNoAutoConnectTechnologies[]; 91 static const char kStorageOfflineMode[]; 92 static const char kStoragePortalCheckInterval[]; 93 static const char kStoragePortalURL[]; 94 static const char kStorageProhibitedTechnologies[]; 95 96 const std::string profile_id_; 97 const Manager::Properties& props_; 98 std::default_random_engine random_engine_; 99 100 DISALLOW_COPY_AND_ASSIGN(DefaultProfile); 101}; 102 103} // namespace shill 104 105#endif // SHILL_DEFAULT_PROFILE_H_ 106