| 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 2195fe6a2740a74d7c314e9933343203f2c188d5..7af49bd8ab2e09fe566580e2dec68b9d91ad378a 100644
|
| --- a/chrome/browser/ui/app_list/app_list_view_delegate.cc
|
| +++ b/chrome/browser/ui/app_list/app_list_view_delegate.cc
|
| @@ -7,6 +7,7 @@
|
| #include <vector>
|
|
|
| #include "base/callback.h"
|
| +#include "base/command_line.h"
|
| #include "base/files/file_path.h"
|
| #include "base/metrics/user_metrics.h"
|
| #include "base/stl_util.h"
|
| @@ -27,19 +28,23 @@
|
| #include "chrome/browser/ui/host_desktop.h"
|
| #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
|
| #include "chrome/browser/web_applications/web_app.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "components/signin/core/browser/signin_manager.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/page_navigator.h"
|
| #include "content/public/browser/user_metrics.h"
|
| +#include "content/public/browser/web_contents.h"
|
| #include "extensions/browser/extension_registry.h"
|
| +#include "extensions/common/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"
|
| #include "ui/app_list/search_box_model.h"
|
| #include "ui/app_list/speech_ui_model.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/views/controls/webview/webview.h"
|
|
|
| #if defined(TOOLKIT_VIEWS)
|
| #include "ui/views/controls/webview/webview.h"
|
| @@ -144,6 +149,28 @@ AppListViewDelegate::AppListViewDelegate(Profile* profile,
|
| OnProfileChanged(); // sets model_
|
| 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 {
|
| + content::WebContents::CreateParams params(profile_);
|
| + custom_page_web_contents_.reset(content::WebContents::Create(params));
|
| + custom_page_web_contents_->GetController().LoadURL(
|
| + custom_launcher_page_url,
|
| + content::Referrer(),
|
| + content::PAGE_TRANSITION_AUTO_TOPLEVEL,
|
| + std::string());
|
| + }
|
| + }
|
| }
|
|
|
| AppListViewDelegate::~AppListViewDelegate() {
|
| @@ -451,6 +478,18 @@ views::View* AppListViewDelegate::CreateStartPageWebView(
|
| web_view->SetWebContents(web_contents);
|
| return web_view;
|
| }
|
| +
|
| +views::View* AppListViewDelegate::CreateCustomPageWebView(
|
| + const gfx::Size& size) {
|
| + if (!custom_page_web_contents_)
|
| + return NULL;
|
| +
|
| + views::WebView* web_view = new views::WebView(
|
| + custom_page_web_contents_->GetBrowserContext());
|
| + web_view->SetPreferredSize(size);
|
| + web_view->SetWebContents(custom_page_web_contents_.get());
|
| + return web_view;
|
| +}
|
| #endif
|
|
|
| bool AppListViewDelegate::IsSpeechRecognitionEnabled() {
|
|
|