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

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

Issue 441873004: App list: Infrastructure now supports multiple custom launcher pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo. 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
« no previous file with comments | « chrome/browser/ui/app_list/app_list_view_delegate.h ('k') | ui/app_list/app_list_view_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 25180a0c68ca0417c0f481618745974ab0a27048..7e7a94b65efe7c864bc1d6c9f2d30816f95e35f6 100644
--- a/chrome/browser/ui/app_list/app_list_view_delegate.cc
+++ b/chrome/browser/ui/app_list/app_list_view_delegate.cc
@@ -103,6 +103,29 @@ 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) {
+ // First, check the command line.
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ if (app_list::switches::IsExperimentalAppListEnabled() &&
+ command_line->HasSwitch(switches::kCustomLauncherPage)) {
+ GURL custom_launcher_page_url(
+ command_line->GetSwitchValueASCII(switches::kCustomLauncherPage));
+
+ if (custom_launcher_page_url.SchemeIs(extensions::kExtensionScheme)) {
+ urls->push_back(custom_launcher_page_url);
+ } else {
+ 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.
+}
+
} // namespace
AppListViewDelegate::AppListViewDelegate(Profile* profile,
@@ -148,23 +171,18 @@ AppListViewDelegate::AppListViewDelegate(Profile* profile,
if (service)
service->AddObserver(this);
- // Set up the custom launcher page. There is currently only a single custom
- // page allowed, which is specified as a command-line flag. In the future,
- // arbitrary extensions may be able to specify their own custom pages.
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
- if (app_list::switches::IsExperimentalAppListEnabled() &&
- command_line->HasSwitch(switches::kCustomLauncherPage)) {
- GURL custom_launcher_page_url(
- command_line->GetSwitchValueASCII(switches::kCustomLauncherPage));
- if (!custom_launcher_page_url.SchemeIs(extensions::kExtensionScheme)) {
- LOG(ERROR) << "Invalid custom launcher page URL: "
- << custom_launcher_page_url.possibly_invalid_spec();
- } else {
- std::string extension_id = custom_launcher_page_url.host();
- custom_page_contents_.reset(new apps::CustomLauncherPageContents(
- scoped_ptr<apps::AppDelegate>(new ChromeAppDelegate), extension_id));
- custom_page_contents_->Initialize(profile, custom_launcher_page_url);
- }
+ // Set up the custom launcher pages.
+ std::vector<GURL> custom_launcher_page_urls;
+ GetCustomLauncherPageUrls(&custom_launcher_page_urls);
+ for (std::vector<GURL>::const_iterator it = custom_launcher_page_urls.begin();
+ it != custom_launcher_page_urls.end();
+ ++it) {
+ std::string extension_id = it->host();
+ apps::CustomLauncherPageContents* page_contents =
+ new apps::CustomLauncherPageContents(
+ scoped_ptr<apps::AppDelegate>(new ChromeAppDelegate), extension_id);
+ page_contents->Initialize(profile, *it);
+ custom_page_contents_.push_back(page_contents);
}
}
@@ -475,19 +493,25 @@ views::View* AppListViewDelegate::CreateStartPageWebView(
return web_view;
}
-views::View* AppListViewDelegate::CreateCustomPageWebView(
+std::vector<views::View*> AppListViewDelegate::CreateCustomPageWebViews(
const gfx::Size& size) {
- if (!custom_page_contents_)
- return NULL;
+ std::vector<views::View*> web_views;
+
+ for (ScopedVector<apps::CustomLauncherPageContents>::const_iterator it =
+ custom_page_contents_.begin();
+ it != custom_page_contents_.end();
+ ++it) {
+ content::WebContents* web_contents = (*it)->web_contents();
+ // TODO(mgiuca): DCHECK_EQ(profile_, web_contents->GetBrowserContext())
+ // after http://crbug.com/392763 resolved.
+ views::WebView* web_view =
+ new views::WebView(web_contents->GetBrowserContext());
+ web_view->SetPreferredSize(size);
+ web_view->SetWebContents(web_contents);
+ web_views.push_back(web_view);
+ }
- content::WebContents* web_contents = custom_page_contents_->web_contents();
- // TODO(mgiuca): DCHECK_EQ(profile_, web_contents->GetBrowserContext()) after
- // http://crbug.com/392763 resolved.
- views::WebView* web_view =
- new views::WebView(web_contents->GetBrowserContext());
- web_view->SetPreferredSize(size);
- web_view->SetWebContents(web_contents);
- return web_view;
+ return web_views;
}
#endif
« no previous file with comments | « chrome/browser/ui/app_list/app_list_view_delegate.h ('k') | ui/app_list/app_list_view_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698