| 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
|
|
|
|
|