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

Unified Diff: chrome/common/extensions/api/extension_api.cc

Issue 11571014: Lazy load chrome.* APIs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: apitest.js Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/api/extension_api.cc
diff --git a/chrome/common/extensions/api/extension_api.cc b/chrome/common/extensions/api/extension_api.cc
index 66f07d1d07c126ca57114b686c896020c134a9ef..e6e912b31dbd3762fcf2cbf5d1dd3ed805e67428 100644
--- a/chrome/common/extensions/api/extension_api.cc
+++ b/chrome/common/extensions/api/extension_api.cc
@@ -585,7 +585,7 @@ void RemoveDisallowedAPIs(const Extension& extension,
} // namespace
-scoped_ptr<std::set<std::string> > ExtensionAPI::GetAPIsForContext(
+std::set<std::string> ExtensionAPI::GetAPIsForContext(
Feature::Context context, const Extension* extension, const GURL& url) {
// We're forced to load all schemas now because we need to know the metadata
// about every API -- and the metadata is stored in the schemas themselves.
@@ -630,6 +630,13 @@ scoped_ptr<std::set<std::string> > ExtensionAPI::GetAPIsForContext(
// some unprivileged APIs may have unrealised dependencies. Too bad!
ResolveDependencies(&temp_result);
RemovePrivilegedAPIs(&temp_result);
+ // TODO(cduvall): In DevTools.js:71777, there is a check if chrome has
+ // a getter for devtools. This is true, and then
+ // chrome.devtools.inspectedWindow is used. If devtools is not
+ // available, it is true that chrome has a getter for devtools, but the
+ // getter will return undefined in content scripts. This makes sure
+ // chrome.devtools is available everywhere.
not at google - send to devlin 2013/02/13 01:45:49 ... but even for extensions that don't have the de
cduvall 2013/02/15 00:40:28 Took this out, because it works with a change in W
+ temp_result.insert("devtools");
}
break;
@@ -643,17 +650,28 @@ scoped_ptr<std::set<std::string> > ExtensionAPI::GetAPIsForContext(
// Filter out all non-API features and remove the feature type part of the
// name.
- scoped_ptr<std::set<std::string> > result(new std::set<std::string>());
+ std::set<std::string> result;
for (std::set<std::string>::iterator iter = temp_result.begin();
iter != temp_result.end(); ++iter) {
std::string feature_type;
std::string feature_name;
SplitDependencyName(*iter, &feature_type, &feature_name);
if (feature_type == "api")
- result->insert(feature_name);
+ result.insert(feature_name);
}
- return result.Pass();
+ return result;
+}
+
+std::set<std::string> ExtensionAPI::GetAllAPINames() {
+ std::set<std::string> result;
+ for (SchemaMap::iterator i = schemas_.begin(); i != schemas_.end(); ++i)
+ result.insert(i->first);
+ for (UnloadedSchemaMap::iterator i = unloaded_schemas_.begin();
+ i != unloaded_schemas_.end(); ++i) {
+ result.insert(i->first);
+ }
+ return result;
}
Feature* ExtensionAPI::GetFeature(const std::string& full_name) {

Powered by Google App Engine
This is Rietveld 408576698