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

Side by Side Diff: extensions/browser/api/vpn_provider/vpn_service.cc

Issue 2344273002: Remove stl_util's STLDeleteContainerPairSecondPointers from extensions. (Closed)
Patch Set: devlin Created 4 years, 3 months 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
« no previous file with comments | « extensions/browser/api/vpn_provider/vpn_service.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/api/vpn_provider/vpn_service.h" 5 #include "extensions/browser/api/vpn_provider/vpn_service.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/bind_helpers.h" 12 #include "base/bind_helpers.h"
13 #include "base/guid.h" 13 #include "base/guid.h"
14 #include "base/location.h" 14 #include "base/location.h"
15 #include "base/logging.h" 15 #include "base/logging.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/single_thread_task_runner.h" 18 #include "base/single_thread_task_runner.h"
19 #include "base/stl_util.h"
20 #include "base/strings/string_number_conversions.h" 19 #include "base/strings/string_number_conversions.h"
21 #include "base/strings/string_util.h" 20 #include "base/strings/string_util.h"
22 #include "base/threading/thread_task_runner_handle.h" 21 #include "base/threading/thread_task_runner_handle.h"
23 #include "base/values.h" 22 #include "base/values.h"
24 #include "chromeos/dbus/shill_third_party_vpn_driver_client.h" 23 #include "chromeos/dbus/shill_third_party_vpn_driver_client.h"
25 #include "chromeos/dbus/shill_third_party_vpn_observer.h" 24 #include "chromeos/dbus/shill_third_party_vpn_observer.h"
26 #include "chromeos/network/network_configuration_handler.h" 25 #include "chromeos/network/network_configuration_handler.h"
27 #include "chromeos/network/network_profile.h" 26 #include "chromeos/network/network_profile.h"
28 #include "chromeos/network/network_profile_handler.h" 27 #include "chromeos/network/network_profile_handler.h"
29 #include "chromeos/network/network_state.h" 28 #include "chromeos/network/network_state.h"
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 network_configuration_handler_->AddObserver(this); 235 network_configuration_handler_->AddObserver(this);
237 base::ThreadTaskRunnerHandle::Get()->PostTask( 236 base::ThreadTaskRunnerHandle::Get()->PostTask(
238 FROM_HERE, 237 FROM_HERE,
239 base::Bind(&VpnService::NetworkListChanged, weak_factory_.GetWeakPtr())); 238 base::Bind(&VpnService::NetworkListChanged, weak_factory_.GetWeakPtr()));
240 } 239 }
241 240
242 VpnService::~VpnService() { 241 VpnService::~VpnService() {
243 network_configuration_handler_->RemoveObserver(this); 242 network_configuration_handler_->RemoveObserver(this);
244 network_state_handler_->RemoveObserver(this, FROM_HERE); 243 network_state_handler_->RemoveObserver(this, FROM_HERE);
245 extension_registry_->RemoveObserver(this); 244 extension_registry_->RemoveObserver(this);
246 base::STLDeleteContainerPairSecondPointers(key_to_configuration_map_.begin(),
247 key_to_configuration_map_.end());
248 } 245 }
249 246
250 void VpnService::SendShowAddDialogToExtension(const std::string& extension_id) { 247 void VpnService::SendShowAddDialogToExtension(const std::string& extension_id) {
251 SendSignalToExtension(extension_id, 248 SendSignalToExtension(extension_id,
252 extensions::events::VPN_PROVIDER_ON_UI_EVENT, 249 extensions::events::VPN_PROVIDER_ON_UI_EVENT,
253 api_vpn::OnUIEvent::kEventName, 250 api_vpn::OnUIEvent::kEventName,
254 api_vpn::OnUIEvent::Create( 251 api_vpn::OnUIEvent::Create(
255 api_vpn::UI_EVENT_SHOWADDDIALOG, std::string())); 252 api_vpn::UI_EVENT_SHOWADDDIALOG, std::string()));
256 } 253 }
257 254
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 const std::string& configuration_id, 438 const std::string& configuration_id,
442 const SuccessCallback& success, 439 const SuccessCallback& success,
443 const FailureCallback& failure) { 440 const FailureCallback& failure) {
444 // The ID is the configuration name for now. This may change in the future. 441 // The ID is the configuration name for now. This may change in the future.
445 const std::string key = GetKey(extension_id, configuration_id); 442 const std::string key = GetKey(extension_id, configuration_id);
446 if (!base::ContainsKey(key_to_configuration_map_, key)) { 443 if (!base::ContainsKey(key_to_configuration_map_, key)) {
447 failure.Run(std::string(), std::string("Unauthorized access.")); 444 failure.Run(std::string(), std::string("Unauthorized access."));
448 return; 445 return;
449 } 446 }
450 447
451 VpnConfiguration* configuration = key_to_configuration_map_[key]; 448 VpnConfiguration* configuration = key_to_configuration_map_[key].get();
452 const std::string service_path = configuration->service_path(); 449 const std::string service_path = configuration->service_path();
453 if (service_path.empty()) { 450 if (service_path.empty()) {
454 failure.Run(std::string(), std::string("Pending create.")); 451 failure.Run(std::string(), std::string("Pending create."));
455 return; 452 return;
456 } 453 }
457 if (active_configuration_ == configuration) { 454 if (active_configuration_ == configuration) {
458 configuration->OnPlatformMessage(api_vpn::PLATFORM_MESSAGE_DISCONNECTED); 455 configuration->OnPlatformMessage(api_vpn::PLATFORM_MESSAGE_DISCONNECTED);
459 } 456 }
460 DestroyConfigurationInternal(configuration); 457 DestroyConfigurationInternal(configuration);
461 458
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 bool VpnService::VerifyConfigIsConnectedForTesting( 519 bool VpnService::VerifyConfigIsConnectedForTesting(
523 const std::string& extension_id) { 520 const std::string& extension_id) {
524 return DoesActiveConfigurationExistAndIsAccessAuthorized(extension_id); 521 return DoesActiveConfigurationExistAndIsAccessAuthorized(extension_id);
525 } 522 }
526 523
527 void VpnService::DestroyConfigurationsForExtension( 524 void VpnService::DestroyConfigurationsForExtension(
528 const extensions::Extension* extension) { 525 const extensions::Extension* extension) {
529 std::vector<VpnConfiguration*> to_be_destroyed; 526 std::vector<VpnConfiguration*> to_be_destroyed;
530 for (const auto& iter : key_to_configuration_map_) { 527 for (const auto& iter : key_to_configuration_map_) {
531 if (iter.second->extension_id() == extension->id()) { 528 if (iter.second->extension_id() == extension->id()) {
532 to_be_destroyed.push_back(iter.second); 529 to_be_destroyed.push_back(iter.second.get());
533 } 530 }
534 } 531 }
535 532
536 for (auto* iter : to_be_destroyed) { 533 for (auto* iter : to_be_destroyed) {
537 DestroyConfiguration(extension->id(), // Extension ID 534 DestroyConfiguration(extension->id(), // Extension ID
538 iter->configuration_name(), // Configuration name 535 iter->configuration_name(), // Configuration name
539 base::Bind(base::DoNothing), 536 base::Bind(base::DoNothing),
540 base::Bind(DoNothingFailureCallback)); 537 base::Bind(DoNothingFailureCallback));
541 } 538 }
542 } 539 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 VpnService::VpnConfiguration* configuration) { 620 VpnService::VpnConfiguration* configuration) {
624 active_configuration_ = configuration; 621 active_configuration_ = configuration;
625 } 622 }
626 623
627 VpnService::VpnConfiguration* VpnService::CreateConfigurationInternal( 624 VpnService::VpnConfiguration* VpnService::CreateConfigurationInternal(
628 const std::string& extension_id, 625 const std::string& extension_id,
629 const std::string& configuration_name, 626 const std::string& configuration_name,
630 const std::string& key) { 627 const std::string& key) {
631 VpnConfiguration* configuration = new VpnConfiguration( 628 VpnConfiguration* configuration = new VpnConfiguration(
632 extension_id, configuration_name, key, weak_factory_.GetWeakPtr()); 629 extension_id, configuration_name, key, weak_factory_.GetWeakPtr());
633 // The object is owned by key_to_configuration_map_ henceforth. 630 key_to_configuration_map_[key] = base::WrapUnique(configuration);
634 key_to_configuration_map_[key] = configuration;
635 return configuration; 631 return configuration;
636 } 632 }
637 633
638 void VpnService::DestroyConfigurationInternal(VpnConfiguration* configuration) { 634 void VpnService::DestroyConfigurationInternal(VpnConfiguration* configuration) {
635 std::unique_ptr<VpnConfiguration> configuration_ptr =
636 std::move(key_to_configuration_map_[configuration->key()]);
639 key_to_configuration_map_.erase(configuration->key()); 637 key_to_configuration_map_.erase(configuration->key());
640 if (active_configuration_ == configuration) { 638 if (active_configuration_ == configuration) {
641 active_configuration_ = nullptr; 639 active_configuration_ = nullptr;
642 } 640 }
643 if (!configuration->service_path().empty()) { 641 if (!configuration->service_path().empty()) {
644 shill_client_->RemoveShillThirdPartyVpnObserver( 642 shill_client_->RemoveShillThirdPartyVpnObserver(
645 configuration->object_path()); 643 configuration->object_path());
646 service_path_to_configuration_map_.erase(configuration->service_path()); 644 service_path_to_configuration_map_.erase(configuration->service_path());
647 } 645 }
648 delete configuration;
649 } 646 }
650 647
651 bool VpnService::DoesActiveConfigurationExistAndIsAccessAuthorized( 648 bool VpnService::DoesActiveConfigurationExistAndIsAccessAuthorized(
652 const std::string& extension_id) { 649 const std::string& extension_id) {
653 return active_configuration_ && 650 return active_configuration_ &&
654 active_configuration_->extension_id() == extension_id; 651 active_configuration_->extension_id() == extension_id;
655 } 652 }
656 653
657 void VpnService::Bind( 654 void VpnService::Bind(
658 const std::string& extension_id, 655 const std::string& extension_id,
659 const std::string& configuration_id, 656 const std::string& configuration_id,
660 const std::string& configuration_name, 657 const std::string& configuration_name,
661 const SuccessCallback& success, 658 const SuccessCallback& success,
662 const FailureCallback& failure, 659 const FailureCallback& failure,
663 std::unique_ptr<content::PepperVpnProviderResourceHostProxy> 660 std::unique_ptr<content::PepperVpnProviderResourceHostProxy>
664 pepper_vpn_provider_proxy) { 661 pepper_vpn_provider_proxy) {
665 // The ID is the configuration name for now. This may change in the future. 662 // The ID is the configuration name for now. This may change in the future.
666 const std::string key = GetKey(extension_id, configuration_id); 663 const std::string key = GetKey(extension_id, configuration_id);
667 if (!base::ContainsKey(key_to_configuration_map_, key)) { 664 if (!base::ContainsKey(key_to_configuration_map_, key)) {
668 failure.Run(std::string(), 665 failure.Run(std::string(),
669 std::string("Unauthorized access. " 666 std::string("Unauthorized access. "
670 "The configuration does not exist.")); 667 "The configuration does not exist."));
671 return; 668 return;
672 } 669 }
673 670
674 VpnConfiguration* configuration = key_to_configuration_map_[key]; 671 VpnConfiguration* configuration = key_to_configuration_map_[key].get();
675 if (active_configuration_ != configuration) { 672 if (active_configuration_ != configuration) {
676 failure.Run(std::string(), std::string("Unauthorized access. " 673 failure.Run(std::string(), std::string("Unauthorized access. "
677 "The configuration is not active.")); 674 "The configuration is not active."));
678 return; 675 return;
679 } 676 }
680 677
681 if (configuration->extension_id() != extension_id || 678 if (configuration->extension_id() != extension_id ||
682 configuration->configuration_name() != configuration_name) { 679 configuration->configuration_name() != configuration_name) {
683 failure.Run(std::string(), 680 failure.Run(std::string(),
684 std::string("Unauthorized access. " 681 std::string("Unauthorized access. "
(...skipping 11 matching lines...) Expand all
696 configuration->set_pepper_proxy(std::move(pepper_vpn_provider_proxy)); 693 configuration->set_pepper_proxy(std::move(pepper_vpn_provider_proxy));
697 694
698 success.Run(); 695 success.Run();
699 } 696 }
700 697
701 std::unique_ptr<content::VpnServiceProxy> VpnService::GetVpnServiceProxy() { 698 std::unique_ptr<content::VpnServiceProxy> VpnService::GetVpnServiceProxy() {
702 return base::WrapUnique(new VpnServiceProxyImpl(weak_factory_.GetWeakPtr())); 699 return base::WrapUnique(new VpnServiceProxyImpl(weak_factory_.GetWeakPtr()));
703 } 700 }
704 701
705 } // namespace chromeos 702 } // namespace chromeos
OLDNEW
« no previous file with comments | « extensions/browser/api/vpn_provider/vpn_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698