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

Side by Side Diff: extensions/common/features/simple_feature.cc

Issue 789383002: Add the basic infrastructure for the Behavior feature type: BehaviorFeature and (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@flag-features
Patch Set: rebase Created 6 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
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/common/features/simple_feature.h" 5 #include "extensions/common/features/simple_feature.h"
6 6
7 #include <map> 7 #include <map>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 extension_types["shared_module"] = Manifest::TYPE_SHARED_MODULE; 52 extension_types["shared_module"] = Manifest::TYPE_SHARED_MODULE;
53 53
54 contexts["blessed_extension"] = Feature::BLESSED_EXTENSION_CONTEXT; 54 contexts["blessed_extension"] = Feature::BLESSED_EXTENSION_CONTEXT;
55 contexts["unblessed_extension"] = Feature::UNBLESSED_EXTENSION_CONTEXT; 55 contexts["unblessed_extension"] = Feature::UNBLESSED_EXTENSION_CONTEXT;
56 contexts["content_script"] = Feature::CONTENT_SCRIPT_CONTEXT; 56 contexts["content_script"] = Feature::CONTENT_SCRIPT_CONTEXT;
57 contexts["web_page"] = Feature::WEB_PAGE_CONTEXT; 57 contexts["web_page"] = Feature::WEB_PAGE_CONTEXT;
58 contexts["blessed_web_page"] = Feature::BLESSED_WEB_PAGE_CONTEXT; 58 contexts["blessed_web_page"] = Feature::BLESSED_WEB_PAGE_CONTEXT;
59 contexts["webui"] = Feature::WEBUI_CONTEXT; 59 contexts["webui"] = Feature::WEBUI_CONTEXT;
60 60
61 locations["component"] = SimpleFeature::COMPONENT_LOCATION; 61 locations["component"] = SimpleFeature::COMPONENT_LOCATION;
62 locations["external_component"] =
63 SimpleFeature::EXTERNAL_COMPONENT_LOCATION;
62 locations["policy"] = SimpleFeature::POLICY_LOCATION; 64 locations["policy"] = SimpleFeature::POLICY_LOCATION;
63 65
64 platforms["chromeos"] = Feature::CHROMEOS_PLATFORM; 66 platforms["chromeos"] = Feature::CHROMEOS_PLATFORM;
65 platforms["linux"] = Feature::LINUX_PLATFORM; 67 platforms["linux"] = Feature::LINUX_PLATFORM;
66 platforms["mac"] = Feature::MACOSX_PLATFORM; 68 platforms["mac"] = Feature::MACOSX_PLATFORM;
67 platforms["win"] = Feature::WIN_PLATFORM; 69 platforms["win"] = Feature::WIN_PLATFORM;
68 } 70 }
69 71
70 std::map<std::string, Manifest::Type> extension_types; 72 std::map<std::string, Manifest::Type> extension_types;
71 std::map<std::string, Feature::Context> contexts; 73 std::map<std::string, Feature::Context> contexts;
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 565
564 return false; 566 return false;
565 } 567 }
566 568
567 bool SimpleFeature::MatchesManifestLocation( 569 bool SimpleFeature::MatchesManifestLocation(
568 Manifest::Location manifest_location) const { 570 Manifest::Location manifest_location) const {
569 switch (location_) { 571 switch (location_) {
570 case SimpleFeature::UNSPECIFIED_LOCATION: 572 case SimpleFeature::UNSPECIFIED_LOCATION:
571 return true; 573 return true;
572 case SimpleFeature::COMPONENT_LOCATION: 574 case SimpleFeature::COMPONENT_LOCATION:
573 // TODO(kalman/asargent): Should this include EXTERNAL_COMPONENT too?
574 return manifest_location == Manifest::COMPONENT; 575 return manifest_location == Manifest::COMPONENT;
576 case SimpleFeature::EXTERNAL_COMPONENT_LOCATION:
577 return manifest_location == Manifest::EXTERNAL_COMPONENT;
575 case SimpleFeature::POLICY_LOCATION: 578 case SimpleFeature::POLICY_LOCATION:
576 return manifest_location == Manifest::EXTERNAL_POLICY || 579 return manifest_location == Manifest::EXTERNAL_POLICY ||
577 manifest_location == Manifest::EXTERNAL_POLICY_DOWNLOAD; 580 manifest_location == Manifest::EXTERNAL_POLICY_DOWNLOAD;
578 } 581 }
579 NOTREACHED(); 582 NOTREACHED();
580 return false; 583 return false;
581 } 584 }
582 585
583 Feature::Availability SimpleFeature::CheckDependencies( 586 Feature::Availability SimpleFeature::CheckDependencies(
584 const base::Callback<Availability(const Feature*)>& checker) const { 587 const base::Callback<Availability(const Feature*)>& checker) const {
585 for (std::set<std::string>::const_iterator it = dependencies_.begin(); 588 for (std::set<std::string>::const_iterator it = dependencies_.begin();
586 it != dependencies_.end(); 589 it != dependencies_.end();
587 ++it) { 590 ++it) {
588 Feature* dependency = 591 Feature* dependency =
589 ExtensionAPI::GetSharedInstance()->GetFeatureDependency(*it); 592 ExtensionAPI::GetSharedInstance()->GetFeatureDependency(*it);
590 if (!dependency) 593 if (!dependency)
591 return CreateAvailability(NOT_PRESENT); 594 return CreateAvailability(NOT_PRESENT);
592 Availability dependency_availability = checker.Run(dependency); 595 Availability dependency_availability = checker.Run(dependency);
593 if (!dependency_availability.is_available()) 596 if (!dependency_availability.is_available())
594 return dependency_availability; 597 return dependency_availability;
595 } 598 }
596 return CreateAvailability(IS_AVAILABLE); 599 return CreateAvailability(IS_AVAILABLE);
597 } 600 }
598 601
599 } // namespace extensions 602 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/features/simple_feature.h ('k') | extensions/common/features/simple_feature_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698