Index: chrome/common/extensions/features/complex_feature.cc |
diff --git a/chrome/common/extensions/features/complex_feature.cc b/chrome/common/extensions/features/complex_feature.cc |
deleted file mode 100644 |
index 5a7791ef6aff12dd15c6cc3197710aab2386c503..0000000000000000000000000000000000000000 |
--- a/chrome/common/extensions/features/complex_feature.cc |
+++ /dev/null |
@@ -1,123 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/common/extensions/features/complex_feature.h" |
- |
-namespace extensions { |
- |
-ComplexFeature::ComplexFeature(scoped_ptr<FeatureList> features) { |
- DCHECK_GT(features->size(), 0UL); |
- features_.swap(*features); |
- |
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) |
- // Verify GetContexts, IsInternal, & IsBlockedInServiceWorker are consistent |
- // across all features. |
- std::set<Feature::Context>* first_contexts = features_[0]->GetContexts(); |
- bool first_is_internal = features_[0]->IsInternal(); |
- bool first_blocked_in_service_worker = |
- features_[0]->IsBlockedInServiceWorker(); |
- for (FeatureList::const_iterator it = features_.begin() + 1; |
- it != features_.end(); |
- ++it) { |
- DCHECK(*first_contexts == *(*it)->GetContexts()) |
- << "Complex feature must have consistent values of " |
- "contexts across all sub features."; |
- DCHECK(first_is_internal == (*it)->IsInternal()) |
- << "Complex feature must have consistent values of " |
- "internal across all sub features."; |
- DCHECK(first_blocked_in_service_worker == (*it)->IsBlockedInServiceWorker()) |
- << "Complex feature must have consistent values of " |
- "blocked_in_service_worker across all sub features."; |
- } |
-#endif |
-} |
- |
-ComplexFeature::~ComplexFeature() { |
-} |
- |
-Feature::Availability ComplexFeature::IsAvailableToManifest( |
- const std::string& extension_id, Manifest::Type type, Location location, |
- int manifest_version, Platform platform) const { |
- Feature::Availability first_availability = |
- features_[0]->IsAvailableToManifest( |
- extension_id, type, location, manifest_version, platform); |
- if (first_availability.is_available()) |
- return first_availability; |
- |
- for (FeatureList::const_iterator it = features_.begin() + 1; |
- it != features_.end(); ++it) { |
- Availability availability = (*it)->IsAvailableToManifest( |
- extension_id, type, location, manifest_version, platform); |
- if (availability.is_available()) |
- return availability; |
- } |
- // If none of the SimpleFeatures are available, we return the availability |
- // info of the first SimpleFeature that was not available. |
- return first_availability; |
-} |
- |
-Feature::Availability ComplexFeature::IsAvailableToContext( |
- const Extension* extension, |
- Context context, |
- const GURL& url, |
- Platform platform) const { |
- Feature::Availability first_availability = |
- features_[0]->IsAvailableToContext(extension, context, url, platform); |
- if (first_availability.is_available()) |
- return first_availability; |
- |
- for (FeatureList::const_iterator it = features_.begin() + 1; |
- it != features_.end(); ++it) { |
- Availability availability = |
- (*it)->IsAvailableToContext(extension, context, url, platform); |
- if (availability.is_available()) |
- return availability; |
- } |
- // If none of the SimpleFeatures are available, we return the availability |
- // info of the first SimpleFeature that was not available. |
- return first_availability; |
-} |
- |
-bool ComplexFeature::IsIdInWhitelist(const std::string& extension_id) const { |
- for (FeatureList::const_iterator it = features_.begin(); |
- it != features_.end(); |
- ++it) { |
- if ((*it)->IsIdInWhitelist(extension_id)) |
- return true; |
- } |
- return false; |
-} |
- |
-bool ComplexFeature::IsBlockedInServiceWorker() const { |
- // Constructor verifies that composed features are consistent, thus we can |
- // return just the first feature's value. |
- return features_[0]->IsBlockedInServiceWorker(); |
-} |
- |
-std::set<Feature::Context>* ComplexFeature::GetContexts() { |
- // TODO(justinlin): Current use cases for ComplexFeatures are simple (e.g. |
- // allow API in dev channel for everyone but stable channel for a whitelist), |
- // but if they get more complicated, we need to return some meaningful context |
- // set. Either that or remove this method from the Feature interface. |
- return features_[0]->GetContexts(); |
-} |
- |
-bool ComplexFeature::IsInternal() const { |
- // TODO(justinlin): Same as the above TODO. |
- return features_[0]->IsInternal(); |
-} |
- |
-std::string ComplexFeature::GetAvailabilityMessage(AvailabilityResult result, |
- Manifest::Type type, |
- const GURL& url, |
- Context context) const { |
- if (result == IS_AVAILABLE) |
- return std::string(); |
- |
- // TODO(justinlin): Form some kind of combined availabilities/messages from |
- // SimpleFeatures. |
- return features_[0]->GetAvailabilityMessage(result, type, url, context); |
-} |
- |
-} // namespace extensions |