Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Side by Side Diff: ash/common/system/chromeos/network/vpn_delegate.cc

Issue 2513673004: Reland: chromeos: Convert ash VPNDelegate interface to mojo (Closed)
Patch Set: fix manifest for reland Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 "ash/common/system/chromeos/network/vpn_delegate.h"
6
7 #include "base/logging.h"
8
9 namespace ash {
10
11 VPNProvider::VPNProvider() : third_party(false) {}
12
13 VPNProvider::VPNProvider(const std::string& extension_id,
14 const std::string& third_party_provider_name)
15 : third_party(true),
16 extension_id(extension_id),
17 third_party_provider_name(third_party_provider_name) {
18 DCHECK(!extension_id.empty());
19 DCHECK(!third_party_provider_name.empty());
20 }
21
22 bool VPNProvider::operator==(const VPNProvider& other) const {
23 return third_party == other.third_party &&
24 extension_id == other.extension_id &&
25 third_party_provider_name == other.third_party_provider_name;
26 }
27
28 VPNDelegate::Observer::~Observer() {}
29
30 VPNDelegate::VPNDelegate() {
31 AddBuiltInProvider();
32 }
33
34 VPNDelegate::~VPNDelegate() {}
35
36 bool VPNDelegate::HaveThirdPartyVPNProviders() const {
37 for (const VPNProvider& provider : vpn_providers_) {
38 if (provider.third_party)
39 return true;
40 }
41 return false;
42 }
43
44 void VPNDelegate::AddObserver(Observer* observer) {
45 observer_list_.AddObserver(observer);
46 }
47
48 void VPNDelegate::RemoveObserver(Observer* observer) {
49 observer_list_.RemoveObserver(observer);
50 }
51
52 void VPNDelegate::SetThirdPartyVpnProviders(
53 const std::vector<VPNProvider>& third_party_providers) {
54 vpn_providers_.clear();
55 vpn_providers_.reserve(third_party_providers.size() + 1);
56 AddBuiltInProvider();
57 // Append the extension-backed providers.
58 vpn_providers_.insert(vpn_providers_.end(), third_party_providers.begin(),
59 third_party_providers.end());
60 NotifyObservers();
61 }
62
63 void VPNDelegate::NotifyObservers() {
64 for (auto& observer : observer_list_)
65 observer.OnVPNProvidersChanged();
66 }
67
68 void VPNDelegate::AddBuiltInProvider() {
69 // The VPNProvider() constructor generates the built-in provider and has no
70 // extension ID.
71 vpn_providers_.push_back(VPNProvider());
72 }
73
74 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/system/chromeos/network/vpn_delegate.h ('k') | ash/common/system/chromeos/network/vpn_delegate_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698