Commit b9a19eba authored by mukai's avatar mukai Committed by Commit bot

Introduce OpenURL to AppListControllerDelegate.

This does not change the current behavior, it simply opens a tab
by using chrome::Navigate().

However https://codereview.chromium.org/640103002/ will introduces
app-list search to Athena, then the direct use of chrome::Navigate()
is problematic. Athena will handle this method.

BUG=380875
R=xiyuan@chromium.org
TEST=no functional changes

Review URL: https://codereview.chromium.org/644863002

Cr-Commit-Position: refs/heads/master@{#299049}
parent 63edd524
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include <string> #include <string>
#include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_constants.h"
#include "ui/base/page_transition_types.h"
#include "ui/base/window_open_disposition.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
class Profile; class Profile;
...@@ -100,6 +102,12 @@ class AppListControllerDelegate { ...@@ -100,6 +102,12 @@ class AppListControllerDelegate {
// |incognito| is true to create an incognito window. // |incognito| is true to create an incognito window.
virtual void CreateNewWindow(Profile* profile, bool incognito) = 0; virtual void CreateNewWindow(Profile* profile, bool incognito) = 0;
// Opens the URL.
virtual void OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition disposition) = 0;
// Show the app's most recent window, or launch it if it is not running. // Show the app's most recent window, or launch it if it is not running.
virtual void ActivateApp(Profile* profile, virtual void ActivateApp(Profile* profile,
const extensions::Extension* extension, const extensions::Extension* extension,
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "chrome/browser/ui/app_list/app_list_service_impl.h" #include "chrome/browser/ui/app_list/app_list_service_impl.h"
#include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/extensions/application_launch.h"
#include "chrome/common/extensions/manifest_handlers/app_launch_info.h" #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
#include "extensions/browser/extension_system.h" #include "extensions/browser/extension_system.h"
...@@ -86,6 +87,15 @@ void AppListControllerDelegateImpl::CreateNewWindow(Profile* profile, ...@@ -86,6 +87,15 @@ void AppListControllerDelegateImpl::CreateNewWindow(Profile* profile,
chrome::NewEmptyWindow(window_profile, chrome::HOST_DESKTOP_TYPE_NATIVE); chrome::NewEmptyWindow(window_profile, chrome::HOST_DESKTOP_TYPE_NATIVE);
} }
void AppListControllerDelegateImpl::OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition disposition) {
chrome::NavigateParams params(profile, url, transition);
params.disposition = disposition;
chrome::Navigate(&params);
}
void AppListControllerDelegateImpl::ActivateApp( void AppListControllerDelegateImpl::ActivateApp(
Profile* profile, Profile* profile,
const extensions::Extension* extension, const extensions::Extension* extension,
......
...@@ -39,6 +39,10 @@ class AppListControllerDelegateImpl : public AppListControllerDelegate { ...@@ -39,6 +39,10 @@ class AppListControllerDelegateImpl : public AppListControllerDelegate {
virtual void DoCreateShortcutsFlow(Profile* profile, virtual void DoCreateShortcutsFlow(Profile* profile,
const std::string& extension_id) override; const std::string& extension_id) override;
virtual void CreateNewWindow(Profile* profile, bool incognito) override; virtual void CreateNewWindow(Profile* profile, bool incognito) override;
virtual void OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition disposition) override;
virtual void ActivateApp(Profile* profile, virtual void ActivateApp(Profile* profile,
const extensions::Extension* extension, const extensions::Extension* extension,
AppListSource source, AppListSource source,
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/install_tracker.h" #include "chrome/browser/extensions/install_tracker.h"
#include "chrome/browser/extensions/install_tracker_factory.h" #include "chrome/browser/extensions/install_tracker_factory.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate_impl.h"
#include "chrome/browser/ui/app_list/app_list_test_util.h" #include "chrome/browser/ui/app_list/app_list_test_util.h"
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
#include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_constants.h"
#include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
...@@ -64,40 +64,6 @@ scoped_refptr<extensions::Extension> MakeApp(const std::string& name, ...@@ -64,40 +64,6 @@ scoped_refptr<extensions::Extension> MakeApp(const std::string& name,
return app; return app;
} }
class TestAppListControllerDelegate : public AppListControllerDelegate {
public:
virtual ~TestAppListControllerDelegate() {}
virtual void DismissView() override {}
virtual gfx::NativeWindow GetAppListWindow() override { return NULL; }
virtual gfx::ImageSkia GetWindowIcon() override { return gfx::ImageSkia(); }
virtual bool IsAppPinned(const std::string& extension_id) override {
return false;
}
virtual void PinApp(const std::string& extension_id) override {}
virtual void UnpinApp(const std::string& extension_id) override {}
virtual Pinnable GetPinnable() override { return NO_PIN; }
virtual bool CanDoCreateShortcutsFlow() override { return false; }
virtual void DoCreateShortcutsFlow(Profile* profile,
const std::string& extension_id) override {
}
virtual bool CanDoShowAppInfoFlow() override { return false; }
virtual void DoShowAppInfoFlow(Profile* profile,
const std::string& extension_id) override {
};
virtual void CreateNewWindow(Profile* profile, bool incognito) override {}
virtual void ActivateApp(Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) override {}
virtual void LaunchApp(Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) override {}
virtual void ShowForProfileByPath(
const base::FilePath& profile_path) override {}
virtual bool ShouldShowUserIcon() override { return false; }
};
const char kDefaultApps[] = "Packaged App 1,Packaged App 2,Hosted App"; const char kDefaultApps[] = "Packaged App 1,Packaged App 2,Hosted App";
const size_t kDefaultAppCount = 3u; const size_t kDefaultAppCount = 3u;
...@@ -124,7 +90,7 @@ class ExtensionAppModelBuilderTest : public AppListTestBase { ...@@ -124,7 +90,7 @@ class ExtensionAppModelBuilderTest : public AppListTestBase {
ResetBuilder(); // Destroy any existing builder in the correct order. ResetBuilder(); // Destroy any existing builder in the correct order.
model_.reset(new app_list::AppListModel); model_.reset(new app_list::AppListModel);
controller_.reset(new TestAppListControllerDelegate); controller_.reset(new test::TestAppListControllerDelegate);
builder_.reset(new ExtensionAppModelBuilder(controller_.get())); builder_.reset(new ExtensionAppModelBuilder(controller_.get()));
builder_->InitializeWithProfile(profile_.get(), model_.get()); builder_->InitializeWithProfile(profile_.get(), model_.get());
} }
...@@ -136,7 +102,7 @@ class ExtensionAppModelBuilderTest : public AppListTestBase { ...@@ -136,7 +102,7 @@ class ExtensionAppModelBuilderTest : public AppListTestBase {
} }
scoped_ptr<app_list::AppListModel> model_; scoped_ptr<app_list::AppListModel> model_;
scoped_ptr<TestAppListControllerDelegate> controller_; scoped_ptr<test::TestAppListControllerDelegate> controller_;
scoped_ptr<ExtensionAppModelBuilder> builder_; scoped_ptr<ExtensionAppModelBuilder> builder_;
base::ScopedTempDir second_profile_temp_dir_; base::ScopedTempDir second_profile_temp_dir_;
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
#include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h" #include "chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/search/search_util.h" #include "chrome/browser/ui/app_list/search/search_util.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "components/bookmarks/browser/bookmark_model.h" #include "components/bookmarks/browser/bookmark_model.h"
#include "components/metrics/proto/omnibox_event.pb.h" #include "components/metrics/proto/omnibox_event.pb.h"
#include "components/omnibox/autocomplete_input.h" #include "components/omnibox/autocomplete_input.h"
...@@ -69,9 +69,11 @@ void ACMatchClassificationsToTags( ...@@ -69,9 +69,11 @@ void ACMatchClassificationsToTags(
class OmniboxResult : public SearchResult { class OmniboxResult : public SearchResult {
public: public:
OmniboxResult(Profile* profile, OmniboxResult(Profile* profile,
AppListControllerDelegate* list_controller,
AutocompleteController* autocomplete_controller, AutocompleteController* autocomplete_controller,
const AutocompleteMatch& match) const AutocompleteMatch& match)
: profile_(profile), : profile_(profile),
list_controller_(list_controller),
autocomplete_controller_(autocomplete_controller), autocomplete_controller_(autocomplete_controller),
match_(match) { match_(match) {
if (match_.search_terms_args) { if (match_.search_terms_args) {
...@@ -94,16 +96,15 @@ class OmniboxResult : public SearchResult { ...@@ -94,16 +96,15 @@ class OmniboxResult : public SearchResult {
// SearchResult overrides: // SearchResult overrides:
virtual void Open(int event_flags) override { virtual void Open(int event_flags) override {
RecordHistogram(OMNIBOX_SEARCH_RESULT); RecordHistogram(OMNIBOX_SEARCH_RESULT);
chrome::NavigateParams params(profile_, list_controller_->OpenURL(profile_,
match_.destination_url, match_.destination_url,
match_.transition); match_.transition,
params.disposition = ui::DispositionFromEventFlags(event_flags); ui::DispositionFromEventFlags(event_flags));
chrome::Navigate(&params);
} }
virtual scoped_ptr<SearchResult> Duplicate() override { virtual scoped_ptr<SearchResult> Duplicate() override {
return scoped_ptr<SearchResult>( return scoped_ptr<SearchResult>(new OmniboxResult(
new OmniboxResult(profile_, autocomplete_controller_, match_)); profile_, list_controller_, autocomplete_controller_, match_));
} }
private: private:
...@@ -135,6 +136,7 @@ class OmniboxResult : public SearchResult { ...@@ -135,6 +136,7 @@ class OmniboxResult : public SearchResult {
} }
Profile* profile_; Profile* profile_;
AppListControllerDelegate* list_controller_;
AutocompleteController* autocomplete_controller_; AutocompleteController* autocomplete_controller_;
AutocompleteMatch match_; AutocompleteMatch match_;
...@@ -143,8 +145,10 @@ class OmniboxResult : public SearchResult { ...@@ -143,8 +145,10 @@ class OmniboxResult : public SearchResult {
} // namespace } // namespace
OmniboxProvider::OmniboxProvider(Profile* profile) OmniboxProvider::OmniboxProvider(Profile* profile,
AppListControllerDelegate* list_controller)
: profile_(profile), : profile_(profile),
list_controller_(list_controller),
controller_(new AutocompleteController( controller_(new AutocompleteController(
profile, profile,
TemplateURLServiceFactory::GetForProfile(profile), TemplateURLServiceFactory::GetForProfile(profile),
...@@ -175,7 +179,7 @@ void OmniboxProvider::PopulateFromACResult(const AutocompleteResult& result) { ...@@ -175,7 +179,7 @@ void OmniboxProvider::PopulateFromACResult(const AutocompleteResult& result) {
continue; continue;
Add(scoped_ptr<SearchResult>( Add(scoped_ptr<SearchResult>(
new OmniboxResult(profile_, controller_.get(), *it))); new OmniboxResult(profile_, list_controller_, controller_.get(), *it)));
} }
} }
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "chrome/browser/autocomplete/autocomplete_controller_delegate.h" #include "chrome/browser/autocomplete/autocomplete_controller_delegate.h"
#include "ui/app_list/search_provider.h" #include "ui/app_list/search_provider.h"
class AppListControllerDelegate;
class AutocompleteController; class AutocompleteController;
class AutocompleteResult; class AutocompleteResult;
class Profile; class Profile;
...@@ -20,7 +21,8 @@ namespace app_list { ...@@ -20,7 +21,8 @@ namespace app_list {
class OmniboxProvider : public SearchProvider, class OmniboxProvider : public SearchProvider,
public AutocompleteControllerDelegate { public AutocompleteControllerDelegate {
public: public:
explicit OmniboxProvider(Profile* profile); explicit OmniboxProvider(Profile* profile,
AppListControllerDelegate* list_controller);
virtual ~OmniboxProvider(); virtual ~OmniboxProvider();
// SearchProvider overrides: // SearchProvider overrides:
...@@ -35,6 +37,7 @@ class OmniboxProvider : public SearchProvider, ...@@ -35,6 +37,7 @@ class OmniboxProvider : public SearchProvider,
virtual void OnResultChanged(bool default_match_changed) override; virtual void OnResultChanged(bool default_match_changed) override;
Profile* profile_; Profile* profile_;
AppListControllerDelegate* list_controller_;
// The omnibox AutocompleteController that collects/sorts/dup- // The omnibox AutocompleteController that collects/sorts/dup-
// eliminates the results as they come in. // eliminates the results as they come in.
......
...@@ -42,11 +42,13 @@ const char kPeopleSearchOAuth2Scope[] = ...@@ -42,11 +42,13 @@ const char kPeopleSearchOAuth2Scope[] =
} // namespace } // namespace
PeopleProvider::PeopleProvider(Profile* profile) PeopleProvider::PeopleProvider(Profile* profile,
: WebserviceSearchProvider(profile), AppListControllerDelegate* controller)
OAuth2TokenService::Consumer("people_provider"), : WebserviceSearchProvider(profile),
people_search_url_(kPeopleSearchUrl), OAuth2TokenService::Consumer("people_provider"),
skip_request_token_for_test_(false) { controller_(controller),
people_search_url_(kPeopleSearchUrl),
skip_request_token_for_test_(false) {
oauth2_scope_.insert(kPeopleSearchOAuth2Scope); oauth2_scope_.insert(kPeopleSearchOAuth2Scope);
} }
...@@ -192,7 +194,7 @@ scoped_ptr<SearchResult> PeopleProvider::CreateResult( ...@@ -192,7 +194,7 @@ scoped_ptr<SearchResult> PeopleProvider::CreateResult(
if (!person) if (!person)
return result.Pass(); return result.Pass();
result.reset(new PeopleResult(profile_, person.Pass())); result.reset(new PeopleResult(profile_, controller_, person.Pass()));
return result.Pass(); return result.Pass();
} }
......
...@@ -33,7 +33,7 @@ class SearchResult; ...@@ -33,7 +33,7 @@ class SearchResult;
class PeopleProvider : public WebserviceSearchProvider, class PeopleProvider : public WebserviceSearchProvider,
public OAuth2TokenService::Consumer { public OAuth2TokenService::Consumer {
public: public:
explicit PeopleProvider(Profile* profile); PeopleProvider(Profile* profile, AppListControllerDelegate* controller);
virtual ~PeopleProvider(); virtual ~PeopleProvider();
// SearchProvider overrides: // SearchProvider overrides:
...@@ -73,6 +73,7 @@ class PeopleProvider : public WebserviceSearchProvider, ...@@ -73,6 +73,7 @@ class PeopleProvider : public WebserviceSearchProvider,
void SetupForTest(const base::Closure& people_search_fetched_callback, void SetupForTest(const base::Closure& people_search_fetched_callback,
const GURL& people_search_url); const GURL& people_search_url);
AppListControllerDelegate* controller_;
scoped_ptr<JSONResponseFetcher> people_search_; scoped_ptr<JSONResponseFetcher> people_search_;
base::Closure people_search_fetched_callback_; base::Closure people_search_fetched_callback_;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/app_list/search/people/people_provider.h" #include "chrome/browser/ui/app_list/search/people/people_provider.h"
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/in_process_browser_test.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
...@@ -174,7 +175,7 @@ class PeopleProviderTest : public InProcessBrowserTest { ...@@ -174,7 +175,7 @@ class PeopleProviderTest : public InProcessBrowserTest {
base::Unretained(this))); base::Unretained(this)));
people_provider_.reset(new PeopleProvider( people_provider_.reset(new PeopleProvider(
ProfileManager::GetActiveUserProfile())); ProfileManager::GetActiveUserProfile(), &test_controller_));
people_provider_->SetupForTest( people_provider_->SetupForTest(
base::Bind(&PeopleProviderTest::OnSearchResultsFetched, base::Bind(&PeopleProviderTest::OnSearchResultsFetched,
...@@ -242,6 +243,7 @@ class PeopleProviderTest : public InProcessBrowserTest { ...@@ -242,6 +243,7 @@ class PeopleProviderTest : public InProcessBrowserTest {
std::string mock_server_response_; std::string mock_server_response_;
scoped_ptr<PeopleProvider> people_provider_; scoped_ptr<PeopleProvider> people_provider_;
::test::TestAppListControllerDelegate test_controller_;
DISALLOW_COPY_AND_ASSIGN(PeopleProviderTest); DISALLOW_COPY_AND_ASSIGN(PeopleProviderTest);
}; };
......
...@@ -12,10 +12,10 @@ ...@@ -12,10 +12,10 @@
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h" #include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/search/common/url_icon_source.h" #include "chrome/browser/ui/app_list/search/common/url_icon_source.h"
#include "chrome/browser/ui/app_list/search/people/person.h" #include "chrome/browser/ui/app_list/search/people/person.h"
#include "chrome/browser/ui/app_list/search/search_util.h" #include "chrome/browser/ui/app_list/search/search_util.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/common/extensions/api/hangouts_private.h" #include "chrome/common/extensions/api/hangouts_private.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h" #include "components/signin/core/browser/profile_oauth2_token_service.h"
...@@ -61,8 +61,13 @@ GURL GetImageUrl(const GURL& url) { ...@@ -61,8 +61,13 @@ GURL GetImageUrl(const GURL& url) {
namespace app_list { namespace app_list {
PeopleResult::PeopleResult(Profile* profile, scoped_ptr<Person> person) PeopleResult::PeopleResult(Profile* profile,
: profile_(profile), person_(person.Pass()), weak_factory_(this) { AppListControllerDelegate* controller,
scoped_ptr<Person> person)
: profile_(profile),
controller_(controller),
person_(person.Pass()),
weak_factory_(this) {
set_id(person_->id); set_id(person_->id);
set_title(base::UTF8ToUTF16(person_->display_name)); set_title(base::UTF8ToUTF16(person_->display_name));
set_relevance(person_->interaction_rank); set_relevance(person_->interaction_rank);
...@@ -114,7 +119,7 @@ void PeopleResult::InvokeAction(int action_index, int event_flags) { ...@@ -114,7 +119,7 @@ void PeopleResult::InvokeAction(int action_index, int event_flags) {
scoped_ptr<SearchResult> PeopleResult::Duplicate() { scoped_ptr<SearchResult> PeopleResult::Duplicate() {
return scoped_ptr<SearchResult>( return scoped_ptr<SearchResult>(
new PeopleResult(profile_, person_->Duplicate().Pass())); new PeopleResult(profile_, controller_, person_->Duplicate().Pass()));
} }
void PeopleResult::OnIconLoaded() { void PeopleResult::OnIconLoaded() {
...@@ -175,12 +180,10 @@ void PeopleResult::OpenChat() { ...@@ -175,12 +180,10 @@ void PeopleResult::OpenChat() {
} }
void PeopleResult::SendEmail() { void PeopleResult::SendEmail() {
chrome::NavigateParams params(profile_, controller_->OpenURL(profile_,
GURL(kEmailUrlPrefix + person_->email), GURL(kEmailUrlPrefix + person_->email),
ui::PAGE_TRANSITION_LINK); ui::PAGE_TRANSITION_LINK,
// If no window exists, this will open a new window this one tab. NEW_FOREGROUND_TAB);
params.disposition = NEW_FOREGROUND_TAB;
chrome::Navigate(&params);
content::RecordAction(base::UserMetricsAction("PeopleSearch_SendEmail")); content::RecordAction(base::UserMetricsAction("PeopleSearch_SendEmail"));
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "ui/app_list/search_result.h" #include "ui/app_list/search_result.h"
#include "url/gurl.h" #include "url/gurl.h"
class AppListControllerDelegate;
class Profile; class Profile;
namespace app_list { namespace app_list {
...@@ -20,7 +21,9 @@ struct Person; ...@@ -20,7 +21,9 @@ struct Person;
class PeopleResult : public SearchResult { class PeopleResult : public SearchResult {
public: public:
PeopleResult(Profile* profile, scoped_ptr<Person> person); PeopleResult(Profile* profile,
AppListControllerDelegate* controller,
scoped_ptr<Person> person);
virtual ~PeopleResult(); virtual ~PeopleResult();
// SearchResult overrides: // SearchResult overrides:
...@@ -42,6 +45,7 @@ class PeopleResult : public SearchResult { ...@@ -42,6 +45,7 @@ class PeopleResult : public SearchResult {
void RefreshHangoutsExtensionId(); void RefreshHangoutsExtensionId();
Profile* profile_; Profile* profile_;
AppListControllerDelegate* controller_;
scoped_ptr<Person> person_; scoped_ptr<Person> person_;
gfx::ImageSkia image_; gfx::ImageSkia image_;
......
...@@ -25,16 +25,20 @@ scoped_ptr<SearchController> CreateSearchController( ...@@ -25,16 +25,20 @@ scoped_ptr<SearchController> CreateSearchController(
scoped_ptr<SearchController> controller(new SearchController( scoped_ptr<SearchController> controller(new SearchController(
search_box, results, HistoryFactory::GetForBrowserContext(profile))); search_box, results, HistoryFactory::GetForBrowserContext(profile)));
controller->AddProvider(Mixer::MAIN_GROUP, scoped_ptr<SearchProvider>( controller->AddProvider(Mixer::MAIN_GROUP,
new AppSearchProvider(profile, list_controller)).Pass()); scoped_ptr<SearchProvider>(
controller->AddProvider(Mixer::OMNIBOX_GROUP, scoped_ptr<SearchProvider>( new AppSearchProvider(profile, list_controller)));
new OmniboxProvider(profile)).Pass()); controller->AddProvider(Mixer::OMNIBOX_GROUP,
controller->AddProvider(Mixer::WEBSTORE_GROUP, scoped_ptr<SearchProvider>( scoped_ptr<SearchProvider>(
new WebstoreProvider(profile, list_controller)).Pass()); new OmniboxProvider(profile, list_controller)));
controller->AddProvider(Mixer::WEBSTORE_GROUP,
scoped_ptr<SearchProvider>(
new WebstoreProvider(profile, list_controller)));
if (!CommandLine::ForCurrentProcess()->HasSwitch( if (!CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisablePeopleSearch)) { switches::kDisablePeopleSearch)) {
controller->AddProvider(Mixer::PEOPLE_GROUP, scoped_ptr<SearchProvider>( controller->AddProvider(Mixer::PEOPLE_GROUP,
new PeopleProvider(profile)).Pass()); scoped_ptr<SearchProvider>(
new PeopleProvider(profile, list_controller)));
} }
return controller.Pass(); return controller.Pass();
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/search/search_util.h" #include "chrome/browser/ui/app_list/search/search_util.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_constants.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "extensions/common/extension_urls.h" #include "extensions/common/extension_urls.h"
...@@ -18,9 +18,12 @@ ...@@ -18,9 +18,12 @@
namespace app_list { namespace app_list {
SearchWebstoreResult::SearchWebstoreResult(Profile* profile, SearchWebstoreResult::SearchWebstoreResult(
const std::string& query) Profile* profile,
AppListControllerDelegate* controller,
const std::string& query)
: profile_(profile), : profile_(profile),
controller_(controller),
query_(query), query_(query),
launch_url_(extension_urls::GetWebstoreSearchPageUrl(query)) { launch_url_(extension_urls::GetWebstoreSearchPageUrl(query)) {
set_id(launch_url_.spec()); set_id(launch_url_.spec());
...@@ -49,15 +52,15 @@ void SearchWebstoreResult::Open(int event_flags) { ...@@ -49,15 +52,15 @@ void SearchWebstoreResult::Open(int event_flags) {
extension_urls::kWebstoreSourceField, extension_urls::kWebstoreSourceField,
extension_urls::kLaunchSourceAppListSearch); extension_urls::kLaunchSourceAppListSearch);
chrome::NavigateParams params(profile_, controller_->OpenURL(profile_,
store_url, store_url,
ui::PAGE_TRANSITION_LINK); ui::PAGE_TRANSITION_LINK,
params.disposition = ui::DispositionFromEventFlags(event_flags); ui::DispositionFromEventFlags(event_flags));
chrome::Navigate(&params);
} }
scoped_ptr<SearchResult> SearchWebstoreResult::Duplicate() { scoped_ptr<SearchResult> SearchWebstoreResult::Duplicate() {
return scoped_ptr<SearchResult>(new SearchWebstoreResult(profile_, query_)); return scoped_ptr<SearchResult>(
new SearchWebstoreResult(profile_, controller_, query_));
} }
} // namespace app_list } // namespace app_list
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "ui/app_list/search_result.h" #include "ui/app_list/search_result.h"
#include "url/gurl.h" #include "url/gurl.h"
class AppListControllerDelegate;
class Profile; class Profile;
namespace app_list { namespace app_list {
...@@ -18,7 +19,9 @@ namespace app_list { ...@@ -18,7 +19,9 @@ namespace app_list {
// A "search in webstore" result. // A "search in webstore" result.
class SearchWebstoreResult : public SearchResult { class SearchWebstoreResult : public SearchResult {
public: public:
SearchWebstoreResult(Profile* profile, const std::string& query); SearchWebstoreResult(Profile* profile,
AppListControllerDelegate* controller,
const std::string& query);
virtual ~SearchWebstoreResult(); virtual ~SearchWebstoreResult();
// SearchResult overrides: // SearchResult overrides:
...@@ -27,6 +30,7 @@ class SearchWebstoreResult : public SearchResult { ...@@ -27,6 +30,7 @@ class SearchWebstoreResult : public SearchResult {
private: private:
Profile* profile_; Profile* profile_;
AppListControllerDelegate* controller_;
const std::string query_; const std::string query_;
GURL launch_url_; GURL launch_url_;
......
...@@ -88,7 +88,8 @@ void WebstoreProvider::Start(const base::string16& query) { ...@@ -88,7 +88,8 @@ void WebstoreProvider::Start(const base::string16& query) {
// Add a placeholder result which when clicked will run the user's query in a // Add a placeholder result which when clicked will run the user's query in a
// browser. This placeholder is removed when the search results arrive. // browser. This placeholder is removed when the search results arrive.
Add(scoped_ptr<SearchResult>(new SearchWebstoreResult(profile_, query_))); Add(scoped_ptr<SearchResult>(
new SearchWebstoreResult(profile_, controller_, query_)));
} }
void WebstoreProvider::Stop() { void WebstoreProvider::Stop() {
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "chrome/browser/ui/app_list/search/common/url_icon_source.h" #include "chrome/browser/ui/app_list/search/common/url_icon_source.h"
#include "chrome/browser/ui/app_list/search/search_util.h" #include "chrome/browser/ui/app_list/search/search_util.h"
#include "chrome/browser/ui/app_list/search/webstore/webstore_installer.h" #include "chrome/browser/ui/app_list/search/webstore/webstore_installer.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/extensions/application_launch.h" #include "chrome/browser/ui/extensions/application_launch.h"
#include "chrome/grit/chromium_strings.h" #include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
...@@ -112,11 +111,10 @@ void WebstoreResult::Open(int event_flags) { ...@@ -112,11 +111,10 @@ void WebstoreResult::Open(int event_flags) {
extension_urls::kWebstoreSourceField, extension_urls::kWebstoreSourceField,
extension_urls::kLaunchSourceAppListSearch); extension_urls::kLaunchSourceAppListSearch);
chrome::NavigateParams params(profile_, controller_->OpenURL(profile_,
store_url, store_url,
ui::PAGE_TRANSITION_LINK); ui::PAGE_TRANSITION_LINK,
params.disposition = ui::DispositionFromEventFlags(event_flags); ui::DispositionFromEventFlags(event_flags));
chrome::Navigate(&params);
} }
void WebstoreResult::InvokeAction(int action_index, int event_flags) { void WebstoreResult::InvokeAction(int action_index, int event_flags) {
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/app_list/test/test_app_list_controller_delegate.h"
#include "ui/gfx/image/image_skia.h"
namespace test {
TestAppListControllerDelegate::TestAppListControllerDelegate() {
}
TestAppListControllerDelegate::~TestAppListControllerDelegate() {
}
void TestAppListControllerDelegate::DismissView() {
}
gfx::NativeWindow TestAppListControllerDelegate::GetAppListWindow() {
return NULL;
}
gfx::ImageSkia TestAppListControllerDelegate::GetWindowIcon() {
return gfx::ImageSkia();
}
bool TestAppListControllerDelegate::IsAppPinned(
const std::string& extension_id) {
return false;
}
void TestAppListControllerDelegate::PinApp(const std::string& extension_id) {
}
void TestAppListControllerDelegate::UnpinApp(const std::string& extension_id) {
}
AppListControllerDelegate::Pinnable
TestAppListControllerDelegate::GetPinnable() {
return NO_PIN;
}
bool TestAppListControllerDelegate::CanDoCreateShortcutsFlow() {
return false;
}
void TestAppListControllerDelegate::DoCreateShortcutsFlow(
Profile* profile,
const std::string& extension_id) {
}
bool TestAppListControllerDelegate::CanDoShowAppInfoFlow() {
return false;
}
void TestAppListControllerDelegate::DoShowAppInfoFlow(
Profile* profile,
const std::string& extension_id) {
}
void TestAppListControllerDelegate::CreateNewWindow(Profile* profile,
bool incognito) {
}
void TestAppListControllerDelegate::OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition deposition) {
}
void TestAppListControllerDelegate::ActivateApp(
Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) {
}
void TestAppListControllerDelegate::LaunchApp(
Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) {
}
void TestAppListControllerDelegate::ShowForProfileByPath(
const base::FilePath& profile_path) {
}
bool TestAppListControllerDelegate::ShouldShowUserIcon() {
return false;
}
} // namespace test
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_APP_LIST_TEST_TEST_APP_LIST_CONTROLLER_DELEGATE_H_
#define CHROME_BROWSER_UI_APP_LIST_TEST_TEST_APP_LIST_CONTROLLER_DELEGATE_H_
#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
namespace test {
class TestAppListControllerDelegate : public AppListControllerDelegate {
public:
TestAppListControllerDelegate();
virtual ~TestAppListControllerDelegate();
virtual void DismissView() override;
virtual gfx::NativeWindow GetAppListWindow() override;
virtual gfx::ImageSkia GetWindowIcon() override;
virtual bool IsAppPinned(const std::string& extension_id) override;
virtual void PinApp(const std::string& extension_id) override;
virtual void UnpinApp(const std::string& extension_id) override;
virtual Pinnable GetPinnable() override;
virtual bool CanDoCreateShortcutsFlow() override;
virtual void DoCreateShortcutsFlow(Profile* profile,
const std::string& extension_id) override;
virtual bool CanDoShowAppInfoFlow() override;
virtual void DoShowAppInfoFlow(Profile* profile,
const std::string& extension_id) override;
virtual void CreateNewWindow(Profile* profile, bool incognito) override;
virtual void OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition deposition) override;
virtual void ActivateApp(Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) override;
virtual void LaunchApp(Profile* profile,
const extensions::Extension* extension,
AppListSource source,
int event_flags) override;
virtual void ShowForProfileByPath(
const base::FilePath& profile_path) override;
virtual bool ShouldShowUserIcon() override;
};
} // namespace test
#endif // CHROME_BROWSER_UI_APP_LIST_TEST_TEST_APP_LIST_CONTROLLER_DELEGATE_H_
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "ash/shell.h" #include "ash/shell.h"
#include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "ui/app_list/views/app_list_view.h" #include "ui/app_list/views/app_list_view.h"
...@@ -86,6 +87,15 @@ void AppListControllerDelegateAsh::CreateNewWindow(Profile* profile, ...@@ -86,6 +87,15 @@ void AppListControllerDelegateAsh::CreateNewWindow(Profile* profile,
ChromeLauncherController::instance()->CreateNewWindow(); ChromeLauncherController::instance()->CreateNewWindow();
} }
void AppListControllerDelegateAsh::OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition disposition) {
chrome::NavigateParams params(profile, url, transition);
params.disposition = disposition;
chrome::Navigate(&params);
}
void AppListControllerDelegateAsh::ActivateApp( void AppListControllerDelegateAsh::ActivateApp(
Profile* profile, Profile* profile,
const extensions::Extension* extension, const extensions::Extension* extension,
......
...@@ -31,6 +31,10 @@ class AppListControllerDelegateAsh : public AppListControllerDelegate { ...@@ -31,6 +31,10 @@ class AppListControllerDelegateAsh : public AppListControllerDelegate {
virtual void DoCreateShortcutsFlow(Profile* profile, virtual void DoCreateShortcutsFlow(Profile* profile,
const std::string& extension_id) override; const std::string& extension_id) override;
virtual void CreateNewWindow(Profile* profile, bool incognito) override; virtual void CreateNewWindow(Profile* profile, bool incognito) override;
virtual void OpenURL(Profile* profile,
const GURL& url,
ui::PageTransition transition,
WindowOpenDisposition disposition) override;
virtual void ActivateApp(Profile* profile, virtual void ActivateApp(Profile* profile,
const extensions::Extension* extension, const extensions::Extension* extension,
AppListSource source, AppListSource source,
......
...@@ -1854,6 +1854,8 @@ ...@@ -1854,6 +1854,8 @@
'sources': [ 'sources': [
'browser/ui/app_list/test/chrome_app_list_test_support.cc', 'browser/ui/app_list/test/chrome_app_list_test_support.cc',
'browser/ui/app_list/test/chrome_app_list_test_support.h', 'browser/ui/app_list/test/chrome_app_list_test_support.h',
'browser/ui/app_list/test/test_app_list_controller_delegate.cc',
'browser/ui/app_list/test/test_app_list_controller_delegate.cc',
], ],
}], }],
['enable_webrtc==1', { ['enable_webrtc==1', {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment