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

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

Issue 887853003: Make app list start page doodle clickable and have alt text. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@doodle_static
Patch Set: address comments Created 5 years, 10 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/start_page_service.cc
diff --git a/chrome/browser/ui/app_list/start_page_service.cc b/chrome/browser/ui/app_list/start_page_service.cc
index de3a1c33baabc09a621dff434926b8357f7743d4..010827de3ad40e2bed72994f555a3d0ce666509c 100644
--- a/chrome/browser/ui/app_list/start_page_service.cc
+++ b/chrome/browser/ui/app_list/start_page_service.cc
@@ -23,6 +23,9 @@
#include "chrome/browser/ui/app_list/speech_recognizer.h"
#include "chrome/browser/ui/app_list/start_page_observer.h"
#include "chrome/browser/ui/app_list/start_page_service_factory.h"
+#include "chrome/browser/ui/browser_navigator.h"
+#include "chrome/browser/ui/browser_tabstrip.h"
+#include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
@@ -107,7 +110,7 @@ class StartPageService::ProfileDestroyObserver
class StartPageService::StartPageWebContentsDelegate
: public content::WebContentsDelegate {
public:
- StartPageWebContentsDelegate() {}
+ explicit StartPageWebContentsDelegate(Profile* profile) : profile_(profile) {}
~StartPageWebContentsDelegate() override {}
void RequestMediaAccessPermission(
@@ -125,7 +128,50 @@ class StartPageService::StartPageWebContentsDelegate
->CheckMediaAccessPermission(web_contents, security_origin, type);
}
+ void AddNewContents(content::WebContents* source,
+ content::WebContents* new_contents,
+ WindowOpenDisposition disposition,
+ const gfx::Rect& initial_pos,
+ bool user_gesture,
+ bool* was_blocked) override {
+ chrome::ScopedTabbedBrowserDisplayer displayer(
+ profile_, chrome::GetActiveDesktop());
+ // Force all links to open in a new tab, even if they were trying to open a
+ // new window.
+ disposition =
+ disposition == NEW_BACKGROUND_TAB ? disposition : NEW_FOREGROUND_TAB;
+ chrome::AddWebContents(displayer.browser(),
+ nullptr,
+ new_contents,
+ disposition,
+ initial_pos,
+ user_gesture,
+ was_blocked);
+ }
+
+ content::WebContents* OpenURLFromTab(
+ content::WebContents* source,
+ const content::OpenURLParams& params) override {
+ // Force all links to open in a new tab, even if they were trying to open a
+ // window.
+ chrome::NavigateParams new_tab_params(
+ static_cast<Browser*>(nullptr), params.url, params.transition);
+ if (params.disposition == NEW_BACKGROUND_TAB) {
+ new_tab_params.disposition = NEW_BACKGROUND_TAB;
+ } else {
+ new_tab_params.disposition = NEW_FOREGROUND_TAB;
+ new_tab_params.window_action = chrome::NavigateParams::SHOW_WINDOW;
+ }
+
+ new_tab_params.initiating_profile = profile_;
+ chrome::Navigate(&new_tab_params);
+
+ return new_tab_params.target_contents;
+ }
+
private:
+ Profile* profile_;
+
DISALLOW_COPY_AND_ASSIGN(StartPageWebContentsDelegate);
};
@@ -498,7 +544,7 @@ void StartPageService::WebUILoaded() {
void StartPageService::LoadContents() {
contents_.reset(content::WebContents::Create(
content::WebContents::CreateParams(profile_)));
- contents_delegate_.reset(new StartPageWebContentsDelegate());
+ contents_delegate_.reset(new StartPageWebContentsDelegate(profile_));
contents_->SetDelegate(contents_delegate_.get());
// The ZoomController needs to be created before the web contents is observed

Powered by Google App Engine
This is Rietveld 408576698