OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/browser_init.h" | 5 #include "chrome/browser/browser_init.h" |
6 | 6 |
7 #include <shellapi.h> | 7 #include <shellapi.h> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 const std::wstring& cmd_line) | 396 const std::wstring& cmd_line) |
397 : command_line_(cmd_line), | 397 : command_line_(cmd_line), |
398 cur_dir_(cur_dir) { | 398 cur_dir_(cur_dir) { |
399 } | 399 } |
400 | 400 |
401 bool BrowserInit::LaunchWithProfile::Launch(Profile* profile, | 401 bool BrowserInit::LaunchWithProfile::Launch(Profile* profile, |
402 bool process_startup) { | 402 bool process_startup) { |
403 DCHECK(profile); | 403 DCHECK(profile); |
404 profile_ = profile; | 404 profile_ = profile; |
405 | 405 |
406 CommandLine parsed_command_line(command_line_); | 406 CommandLine parsed_command_line(L""); |
| 407 parsed_command_line.ParseFromString(command_line_); |
407 if (parsed_command_line.HasSwitch(switches::kDnsLogDetails)) | 408 if (parsed_command_line.HasSwitch(switches::kDnsLogDetails)) |
408 chrome_browser_net::EnableDnsDetailedLog(true); | 409 chrome_browser_net::EnableDnsDetailedLog(true); |
409 if (parsed_command_line.HasSwitch(switches::kDnsPrefetchDisable)) | 410 if (parsed_command_line.HasSwitch(switches::kDnsPrefetchDisable)) |
410 chrome_browser_net::EnableDnsPrefetch(false); | 411 chrome_browser_net::EnableDnsPrefetch(false); |
411 | 412 |
412 if (parsed_command_line.HasSwitch(switches::kDumpHistogramsOnExit)) { | 413 if (parsed_command_line.HasSwitch(switches::kDumpHistogramsOnExit)) { |
413 StatisticsRecorder::set_dump_on_exit(true); | 414 StatisticsRecorder::set_dump_on_exit(true); |
414 } | 415 } |
415 | 416 |
416 if (parsed_command_line.HasSwitch(switches::kRemoteShellPort)) { | 417 if (parsed_command_line.HasSwitch(switches::kRemoteShellPort)) { |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 // The last session didn't exit cleanly. Show an infobar to the user | 563 // The last session didn't exit cleanly. Show an infobar to the user |
563 // so that they can restore if they want. The delegate deletes itself when | 564 // so that they can restore if they want. The delegate deletes itself when |
564 // it is closed. | 565 // it is closed. |
565 tab->AddInfoBar(new SessionCrashedInfoBarDelegate(tab)); | 566 tab->AddInfoBar(new SessionCrashedInfoBarDelegate(tab)); |
566 } | 567 } |
567 } | 568 } |
568 | 569 |
569 std::vector<GURL> BrowserInit::LaunchWithProfile::GetURLsFromCommandLine( | 570 std::vector<GURL> BrowserInit::LaunchWithProfile::GetURLsFromCommandLine( |
570 const CommandLine& command_line, Profile* profile) { | 571 const CommandLine& command_line, Profile* profile) { |
571 std::vector<GURL> urls; | 572 std::vector<GURL> urls; |
572 if (command_line.GetLooseValueCount() > 0) { | 573 std::vector<std::wstring> params = command_line.GetLooseValues(); |
573 for (CommandLine::LooseValueIterator iter = | 574 for (size_t i = 0; i < params.size(); ++i) { |
574 command_line.GetLooseValuesBegin(); | 575 const std::wstring& value = params[i]; |
575 iter != command_line.GetLooseValuesEnd(); ++iter) { | 576 // Handle Vista way of searching - "? <search-term>" |
576 std::wstring value = *iter; | 577 if (value.find(L"? ") == 0) { |
577 // Handle Vista way of searching - "? <search-term>" | 578 const TemplateURL* const default_provider = |
578 if (value.find(L"? ") == 0) { | 579 profile->GetTemplateURLModel()->GetDefaultSearchProvider(); |
579 const TemplateURL* const default_provider = | 580 if (!default_provider || !default_provider->url()) { |
580 profile->GetTemplateURLModel()->GetDefaultSearchProvider(); | 581 // No search provider available. Just treat this as regular URL. |
581 if (!default_provider || !default_provider->url()) { | 582 urls.push_back(GURL(URLFixerUpper::FixupRelativeFile(cur_dir_, |
582 // No search provider available. Just treat this as regular URL. | 583 value))); |
583 urls.push_back(GURL(URLFixerUpper::FixupRelativeFile(cur_dir_, | 584 continue; |
584 value))); | |
585 continue; | |
586 } | |
587 const TemplateURLRef* const search_url = default_provider->url(); | |
588 DCHECK(search_url->SupportsReplacement()); | |
589 urls.push_back(GURL(search_url->ReplaceSearchTerms(*default_provider, | |
590 value.substr(2), TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, | |
591 std::wstring()))); | |
592 } else { | |
593 // This will create a file URL or a regular URL. | |
594 urls.push_back(GURL(URLFixerUpper::FixupRelativeFile(cur_dir_, value))); | |
595 } | 585 } |
| 586 const TemplateURLRef* const search_url = default_provider->url(); |
| 587 DCHECK(search_url->SupportsReplacement()); |
| 588 urls.push_back(GURL(search_url->ReplaceSearchTerms(*default_provider, |
| 589 value.substr(2), TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, |
| 590 std::wstring()))); |
| 591 } else { |
| 592 // This will create a file URL or a regular URL. |
| 593 urls.push_back(GURL(URLFixerUpper::FixupRelativeFile(cur_dir_, value))); |
596 } | 594 } |
597 } | 595 } |
598 return urls; | 596 return urls; |
599 } | 597 } |
600 | 598 |
601 bool BrowserInit::ProcessCommandLine(const CommandLine& parsed_command_line, | 599 bool BrowserInit::ProcessCommandLine(const CommandLine& parsed_command_line, |
602 const std::wstring& cur_dir, PrefService* prefs, bool process_startup, | 600 const std::wstring& cur_dir, PrefService* prefs, bool process_startup, |
603 Profile* profile, int* return_code) { | 601 Profile* profile, int* return_code) { |
604 DCHECK(profile); | 602 DCHECK(profile); |
605 if (process_startup) { | 603 if (process_startup) { |
(...skipping 20 matching lines...) Expand all Loading... |
626 if (parsed_command_line.HasSwitch(switches::kTestingChannelID)) { | 624 if (parsed_command_line.HasSwitch(switches::kTestingChannelID)) { |
627 std::wstring testing_channel_id = | 625 std::wstring testing_channel_id = |
628 parsed_command_line.GetSwitchValue(switches::kTestingChannelID); | 626 parsed_command_line.GetSwitchValue(switches::kTestingChannelID); |
629 // TODO(sanjeevr) Check if we need to make this a singleton for | 627 // TODO(sanjeevr) Check if we need to make this a singleton for |
630 // compatibility with the old testing code | 628 // compatibility with the old testing code |
631 // If there are any loose parameters, we expect each one to generate a | 629 // If there are any loose parameters, we expect each one to generate a |
632 // new tab; if there are none then we get one homepage tab. | 630 // new tab; if there are none then we get one homepage tab. |
633 CreateAutomationProvider<TestingAutomationProvider>( | 631 CreateAutomationProvider<TestingAutomationProvider>( |
634 testing_channel_id, | 632 testing_channel_id, |
635 profile, | 633 profile, |
636 std::max(static_cast<int>(parsed_command_line.GetLooseValueCount()), | 634 std::max(static_cast<int>(parsed_command_line.GetLooseValues().size())
, |
637 1)); | 635 1)); |
638 } | 636 } |
639 } | 637 } |
640 | 638 |
641 // Allow the command line to override the persisted setting of home page. | 639 // Allow the command line to override the persisted setting of home page. |
642 SetOverrideHomePage(parsed_command_line, profile->GetPrefs()); | 640 SetOverrideHomePage(parsed_command_line, profile->GetPrefs()); |
643 | 641 |
644 if (parsed_command_line.HasSwitch(switches::kBrowserStartRenderersManually)) | 642 if (parsed_command_line.HasSwitch(switches::kBrowserStartRenderersManually)) |
645 prefs->transient()->SetBoolean(prefs::kStartRenderersManually, true); | 643 prefs->transient()->SetBoolean(prefs::kStartRenderersManually, true); |
646 | 644 |
647 bool silent_launch = false; | 645 bool silent_launch = false; |
648 if (parsed_command_line.HasSwitch(switches::kAutomationClientChannelID)) { | 646 if (parsed_command_line.HasSwitch(switches::kAutomationClientChannelID)) { |
649 std::wstring automation_channel_id = | 647 std::wstring automation_channel_id = |
650 parsed_command_line.GetSwitchValue(switches::kAutomationClientChannelID); | 648 parsed_command_line.GetSwitchValue(switches::kAutomationClientChannelID); |
651 // If there are any loose parameters, we expect each one to generate a | 649 // If there are any loose parameters, we expect each one to generate a |
652 // new tab; if there are none then we have no tabs | 650 // new tab; if there are none then we have no tabs |
653 size_t expected_tabs = | 651 size_t expected_tabs = |
654 std::max(static_cast<int>(parsed_command_line.GetLooseValueCount()), | 652 std::max(static_cast<int>(parsed_command_line.GetLooseValues().size()), |
655 0); | 653 0); |
656 if (expected_tabs == 0) { | 654 if (expected_tabs == 0) { |
657 silent_launch = true; | 655 silent_launch = true; |
658 } | 656 } |
659 CreateAutomationProvider<AutomationProvider>(automation_channel_id, | 657 CreateAutomationProvider<AutomationProvider>(automation_channel_id, |
660 profile, expected_tabs); | 658 profile, expected_tabs); |
661 } | 659 } |
662 // If we don't want to launch a new browser window or tab (in the case | 660 // If we don't want to launch a new browser window or tab (in the case |
663 // of an automation request), we are done here. | 661 // of an automation request), we are done here. |
664 if (!silent_launch) { | 662 if (!silent_launch) { |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 if (!launched) { | 722 if (!launched) { |
725 LOG(ERROR) << "launch error"; | 723 LOG(ERROR) << "launch error"; |
726 if (return_code != NULL) { | 724 if (return_code != NULL) { |
727 *return_code = ResultCodes::INVALID_CMDLINE_URL; | 725 *return_code = ResultCodes::INVALID_CMDLINE_URL; |
728 } | 726 } |
729 return false; | 727 return false; |
730 } | 728 } |
731 | 729 |
732 return true; | 730 return true; |
733 } | 731 } |
OLD | NEW |