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

Side by Side Diff: chrome/browser/ui/startup/startup_browser_creator.cc

Issue 1598553003: Implement the Windows desktop search redirection feature. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix build errors due to prefs being moved in components Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/startup/startup_browser_creator.h" 5 #include "chrome/browser/ui/startup/startup_browser_creator.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> // For max(). 9 #include <algorithm> // For max().
10 #include <set> 10 #include <set>
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 #if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) 91 #if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
92 #include "ui/events/devices/x11/touch_factory_x11.h" 92 #include "ui/events/devices/x11/touch_factory_x11.h"
93 #endif 93 #endif
94 94
95 #if defined(OS_MACOSX) 95 #if defined(OS_MACOSX)
96 #include "chrome/browser/web_applications/web_app_mac.h" 96 #include "chrome/browser/web_applications/web_app_mac.h"
97 #endif 97 #endif
98 98
99 #if defined(OS_WIN) 99 #if defined(OS_WIN)
100 #include "chrome/browser/metrics/jumplist_metrics_win.h" 100 #include "chrome/browser/metrics/jumplist_metrics_win.h"
101 #include "components/search_engines/desktop_search_win.h" 101 #include "components/search_engines/desktop_search_utils.h"
102 #endif 102 #endif
103 103
104 #if defined(ENABLE_PRINT_PREVIEW) 104 #if defined(ENABLE_PRINT_PREVIEW)
105 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" 105 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
106 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory. h" 106 #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory. h"
107 #include "chrome/browser/printing/print_dialog_cloud.h" 107 #include "chrome/browser/printing/print_dialog_cloud.h"
108 #endif 108 #endif
109 109
110 using content::BrowserThread; 110 using content::BrowserThread;
111 using content::ChildProcessSecurityPolicy; 111 using content::ChildProcessSecurityPolicy;
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 UserManager::Show( 300 UserManager::Show(
301 base::FilePath(), profiles::USER_MANAGER_NO_TUTORIAL, action); 301 base::FilePath(), profiles::USER_MANAGER_NO_TUTORIAL, action);
302 return true; 302 return true;
303 #endif 303 #endif
304 } 304 }
305 305
306 } // namespace 306 } // namespace
307 307
308 StartupBrowserCreator::StartupBrowserCreator() 308 StartupBrowserCreator::StartupBrowserCreator()
309 : is_default_browser_dialog_suppressed_(false), 309 : is_default_browser_dialog_suppressed_(false),
310 show_main_browser_window_(true) { 310 show_main_browser_window_(true),
311 } 311 show_desktop_search_redirection_infobar_(false) {}
312 312
313 StartupBrowserCreator::~StartupBrowserCreator() {} 313 StartupBrowserCreator::~StartupBrowserCreator() {}
314 314
315 // static 315 // static
316 bool StartupBrowserCreator::was_restarted_read_ = false; 316 bool StartupBrowserCreator::was_restarted_read_ = false;
317 317
318 // static 318 // static
319 bool StartupBrowserCreator::in_synchronous_profile_launch_ = false; 319 bool StartupBrowserCreator::in_synchronous_profile_launch_ = false;
320 320
321 void StartupBrowserCreator::AddFirstRunTab(const GURL& url) { 321 void StartupBrowserCreator::AddFirstRunTab(const GURL& url) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 365
366 // Note: This check should have been done in ProcessCmdLineImpl() 366 // Note: This check should have been done in ProcessCmdLineImpl()
367 // before calling this function. However chromeos/login/login_utils.cc 367 // before calling this function. However chromeos/login/login_utils.cc
368 // calls this function directly (see comments there) so it has to be checked 368 // calls this function directly (see comments there) so it has to be checked
369 // again. 369 // again.
370 const bool silent_launch = command_line.HasSwitch(switches::kSilentLaunch); 370 const bool silent_launch = command_line.HasSwitch(switches::kSilentLaunch);
371 371
372 if (!silent_launch) { 372 if (!silent_launch) {
373 StartupBrowserCreatorImpl lwp(cur_dir, command_line, this, is_first_run); 373 StartupBrowserCreatorImpl lwp(cur_dir, command_line, this, is_first_run);
374 const std::vector<GURL> urls_to_launch = 374 const std::vector<GURL> urls_to_launch =
375 GetURLsFromCommandLine(command_line, cur_dir, profile); 375 GetURLsFromCommandLine(command_line, cur_dir, profile,
376 &show_desktop_search_redirection_infobar_);
376 chrome::HostDesktopType host_desktop_type = 377 chrome::HostDesktopType host_desktop_type =
377 chrome::HOST_DESKTOP_TYPE_NATIVE; 378 chrome::HOST_DESKTOP_TYPE_NATIVE;
378 379
379 #if defined(USE_ASH) && !defined(OS_CHROMEOS) 380 #if defined(USE_ASH) && !defined(OS_CHROMEOS)
380 // We want to maintain only one type of instance for now, either ASH 381 // We want to maintain only one type of instance for now, either ASH
381 // or desktop. 382 // or desktop.
382 // TODO(shrikant): Remove this code once we decide on running both desktop 383 // TODO(shrikant): Remove this code once we decide on running both desktop
383 // and ASH instances side by side. 384 // and ASH instances side by side.
384 if (ash::Shell::HasInstance()) 385 if (ash::Shell::HasInstance())
385 host_desktop_type = chrome::HOST_DESKTOP_TYPE_ASH; 386 host_desktop_type = chrome::HOST_DESKTOP_TYPE_ASH;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 // static 525 // static
525 const wchar_t* StartupBrowserCreator::GetDefaultBrowserUrl() { 526 const wchar_t* StartupBrowserCreator::GetDefaultBrowserUrl() {
526 return kSetDefaultBrowserHelpUrl; 527 return kSetDefaultBrowserHelpUrl;
527 } 528 }
528 #endif // defined(OS_WIN) 529 #endif // defined(OS_WIN)
529 530
530 // static 531 // static
531 std::vector<GURL> StartupBrowserCreator::GetURLsFromCommandLine( 532 std::vector<GURL> StartupBrowserCreator::GetURLsFromCommandLine(
532 const base::CommandLine& command_line, 533 const base::CommandLine& command_line,
533 const base::FilePath& cur_dir, 534 const base::FilePath& cur_dir,
534 Profile* profile) { 535 Profile* profile,
536 bool* show_desktop_search_redirection_infobar) {
537 DCHECK(profile);
538 DCHECK(show_desktop_search_redirection_infobar);
539
535 std::vector<GURL> urls; 540 std::vector<GURL> urls;
536 541
537 const base::CommandLine::StringVector& params = command_line.GetArgs(); 542 const base::CommandLine::StringVector& params = command_line.GetArgs();
538 for (size_t i = 0; i < params.size(); ++i) { 543 for (size_t i = 0; i < params.size(); ++i) {
539 base::FilePath param = base::FilePath(params[i]); 544 base::FilePath param = base::FilePath(params[i]);
540 // Handle Vista way of searching - "? <search-term>" 545 // Handle Vista way of searching - "? <search-term>"
541 if ((param.value().size() > 2) && (param.value()[0] == '?') && 546 if ((param.value().size() > 2) && (param.value()[0] == '?') &&
542 (param.value()[1] == ' ')) { 547 (param.value()[1] == ' ')) {
543 GURL url(GetDefaultSearchURLForSearchTerms( 548 GURL url(GetDefaultSearchURLForSearchTerms(
544 TemplateURLServiceFactory::GetForProfile(profile), 549 TemplateURLServiceFactory::GetForProfile(profile),
545 param.LossyDisplayName().substr(2))); 550 param.LossyDisplayName().substr(2)));
546 if (url.is_valid()) { 551 if (url.is_valid()) {
547 urls.push_back(url); 552 urls.push_back(url);
548 continue; 553 continue;
549 } 554 }
550 } 555 }
551 556
552 // Otherwise, fall through to treating it as a URL. 557 // Otherwise, fall through to treating it as a URL.
553 558
554 // This will create a file URL or a regular URL. 559 // This will create a file URL or a regular URL.
555 // This call can (in rare circumstances) block the UI thread. 560 // This call can (in rare circumstances) block the UI thread.
556 // Allow it until this bug is fixed. 561 // Allow it until this bug is fixed.
557 // http://code.google.com/p/chromium/issues/detail?id=60641 562 // http://code.google.com/p/chromium/issues/detail?id=60641
558 GURL url = GURL(param.MaybeAsASCII()); 563 GURL url = GURL(param.MaybeAsASCII());
559 564
560 #if defined(OS_WIN) 565 #if defined(OS_WIN)
561 TemplateURLService* template_url_service = 566 // Replace desktop search URL by a default search engine URL if needed.
562 TemplateURLServiceFactory::GetForProfile(profile); 567 // Ignore cases where there are multiple command line arguments, because
563 DCHECK(template_url_service); 568 // desktop search never passes multiple URLs to the browser.
564 base::string16 search_terms; 569 if (params.size() == 1) {
565 if (DetectWindowsDesktopSearch( 570 *show_desktop_search_redirection_infobar =
566 url, template_url_service->search_terms_data(), &search_terms)) { 571 ReplaceDesktopSearchURLWithDefaultSearchURLIfNeeded(
567 base::RecordAction(base::UserMetricsAction("DesktopSearch")); 572 profile->GetPrefs(),
568 573 TemplateURLServiceFactory::GetForProfile(profile), &url);
569 if (ShouldRedirectWindowsDesktopSearchToDefaultSearchEngine(
570 profile->GetPrefs())) {
571 const GURL search_url(GetDefaultSearchURLForSearchTerms(
572 template_url_service, search_terms));
573 if (search_url.is_valid()) {
574 urls.push_back(search_url);
575 continue;
576 }
577 }
578 } 574 }
579 #endif // defined(OS_WIN) 575 #endif // defined(OS_WIN)
580 576
581 // http://crbug.com/371030: Only use URLFixerUpper if we don't have a valid 577 // http://crbug.com/371030: Only use URLFixerUpper if we don't have a valid
582 // URL, otherwise we will look in the current directory for a file named 578 // URL, otherwise we will look in the current directory for a file named
583 // 'about' if the browser was started with a about:foo argument. 579 // 'about' if the browser was started with a about:foo argument.
584 if (!url.is_valid()) { 580 if (!url.is_valid()) {
585 base::ThreadRestrictions::ScopedAllowIO allow_io; 581 base::ThreadRestrictions::ScopedAllowIO allow_io;
586 url = url_formatter::FixupRelativeFile(cur_dir, param); 582 url = url_formatter::FixupRelativeFile(cur_dir, param);
587 } 583 }
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 // If we are showing the app list then chrome isn't shown so load the app 932 // If we are showing the app list then chrome isn't shown so load the app
937 // list's profile rather than chrome's. 933 // list's profile rather than chrome's.
938 if (command_line.HasSwitch(switches::kShowAppList)) { 934 if (command_line.HasSwitch(switches::kShowAppList)) {
939 return AppListService::Get(chrome::HOST_DESKTOP_TYPE_NATIVE)-> 935 return AppListService::Get(chrome::HOST_DESKTOP_TYPE_NATIVE)->
940 GetProfilePath(user_data_dir); 936 GetProfilePath(user_data_dir);
941 } 937 }
942 938
943 return g_browser_process->profile_manager()->GetLastUsedProfileDir( 939 return g_browser_process->profile_manager()->GetLastUsedProfileDir(
944 user_data_dir); 940 user_data_dir);
945 } 941 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/startup/startup_browser_creator.h ('k') | chrome/browser/ui/startup/startup_browser_creator_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698