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

Unified Diff: chrome/browser/ui/app_list/app_list_view_delegate.cc

Issue 475543004: Added 'launcher_page' field to extension manifest.json format. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Formatting. Created 6 years, 4 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/browser/ui/app_list/app_list_view_delegate.cc
diff --git a/chrome/browser/ui/app_list/app_list_view_delegate.cc b/chrome/browser/ui/app_list/app_list_view_delegate.cc
index 7e7a94b65efe7c864bc1d6c9f2d30816f95e35f6..be225dea64b5c34119d9d4d0822c48a950b9a963 100644
--- a/chrome/browser/ui/app_list/app_list_view_delegate.cc
+++ b/chrome/browser/ui/app_list/app_list_view_delegate.cc
@@ -40,6 +40,9 @@
#include "content/public/browser/web_contents.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/common/constants.h"
+#include "extensions/common/extension_set.h"
+#include "extensions/common/manifest.h"
+#include "extensions/common/manifest_constants.h"
#include "grit/theme_resources.h"
#include "ui/app_list/app_list_switches.h"
#include "ui/app_list/app_list_view_delegate_observer.h"
@@ -106,7 +109,8 @@ void PopulateUsers(const ProfileInfoCache& profile_info,
// Gets a list of URLs of the custom launcher pages to show in the launcher.
// Returns a URL for each installed launcher page. If --custom-launcher-page is
// specified and valid, also includes that URL.
-void GetCustomLauncherPageUrls(std::vector<GURL>* urls) {
+void GetCustomLauncherPageUrls(content::BrowserContext* browser_context,
+ std::vector<GURL>* urls) {
// First, check the command line.
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
if (app_list::switches::IsExperimentalAppListEnabled() &&
@@ -117,13 +121,35 @@ void GetCustomLauncherPageUrls(std::vector<GURL>* urls) {
if (custom_launcher_page_url.SchemeIs(extensions::kExtensionScheme)) {
urls->push_back(custom_launcher_page_url);
} else {
+ // TODO(mgiuca): Add a proper manifest parser to catch this error properly
+ // and display it on the extensions page.
LOG(ERROR) << "Invalid custom launcher page URL: "
<< custom_launcher_page_url.possibly_invalid_spec();
}
}
- // TODO(mgiuca): Search the list of installed extensions and add any with a
- // 'launcher_page' attribute in its manifest.
+ // Search the list of installed extensions for ones with 'launcher_page'.
+ extensions::ExtensionRegistry* extension_registry =
+ extensions::ExtensionRegistry::Get(browser_context);
+ const extensions::ExtensionSet& enabled_extensions =
+ extension_registry->enabled_extensions();
+ for (extensions::ExtensionSet::const_iterator it = enabled_extensions.begin();
+ it != enabled_extensions.end();
+ ++it) {
+ const extensions::Extension* extension = it->get();
+ const extensions::Manifest* manifest = extension->manifest();
+ if (!manifest->HasKey(extensions::manifest_keys::kLauncherPage))
+ continue;
+ std::string launcher_page_page;
+ if (!manifest->GetString(extensions::manifest_keys::kLauncherPagePage,
+ &launcher_page_page)) {
+ LOG(ERROR) << "Extension " << extension->id() << ": "
+ << extensions::manifest_keys::kLauncherPage
+ << " has no 'page' attribute; will be ignored.";
+ continue;
+ }
+ urls->push_back(extension->GetResourceURL(launcher_page_page));
+ }
}
} // namespace
@@ -173,7 +199,7 @@ AppListViewDelegate::AppListViewDelegate(Profile* profile,
// Set up the custom launcher pages.
std::vector<GURL> custom_launcher_page_urls;
- GetCustomLauncherPageUrls(&custom_launcher_page_urls);
+ GetCustomLauncherPageUrls(profile, &custom_launcher_page_urls);
for (std::vector<GURL>::const_iterator it = custom_launcher_page_urls.begin();
it != custom_launcher_page_urls.end();
++it) {
« no previous file with comments | « chrome/browser/apps/custom_launcher_page_browsertest_views.cc ('k') | chrome/common/extensions/api/_manifest_features.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698