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 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 // old configuration that we should ignore. This hack saves us from some | 660 // old configuration that we should ignore. This hack saves us from some |
661 // infinite loops where we keep forwarding mailto: to the system, resulting | 661 // infinite loops where we keep forwarding mailto: to the system, resulting |
662 // in the system asking us to open the mailto app. | 662 // in the system asking us to open the mailto app. |
663 if (url.SchemeIs("mailto")) | 663 if (url.SchemeIs("mailto")) |
664 url = GURL("about:blank"); | 664 url = GURL("about:blank"); |
665 | 665 |
666 WebAppLauncher::Launch(profile, url); | 666 WebAppLauncher::Launch(profile, url); |
667 return true; | 667 return true; |
668 } | 668 } |
669 | 669 |
| 670 // Check if we're running as an embedded client |
| 671 if (parsed_command_line.HasSwitch(switches::kEmbeddedProcess)) { |
| 672 std::wstring settings = parsed_command_line.GetSwitchValue(switches::kEmbedd
edSettings); |
| 673 |
| 674 HWND hwnd = NULL; |
| 675 gfx::Rect rect; |
| 676 std::wstring url = L"http://www.google.com"; |
| 677 |
| 678 // Parse the embedded settings argument |
| 679 wchar_t* tok = wcstok(const_cast<wchar_t*>(settings.c_str()), L","); |
| 680 for(int i = 0; tok; i++) |
| 681 { |
| 682 if(i == 0) |
| 683 hwnd = (HWND)_wtol(tok); |
| 684 else if(i == 1) |
| 685 rect.set_x(_wtoi(tok)); |
| 686 else if(i == 2) |
| 687 rect.set_y(_wtoi(tok)); |
| 688 else if(i == 3) |
| 689 rect.set_width(_wtoi(tok)); |
| 690 else if(i == 4) |
| 691 rect.set_height(_wtoi(tok)); |
| 692 else if(i == 5) |
| 693 url = tok; |
| 694 else |
| 695 break; |
| 696 |
| 697 tok = wcstok(NULL, L","); |
| 698 } |
| 699 |
| 700 // Create the embedded browser window |
| 701 Browser* browser = Browser::CreateForEmbedded(hwnd, rect, profile); |
| 702 browser->ShowNativeUITab(GURL(url)); |
| 703 browser->window()->Show(); |
| 704 |
| 705 return true; |
| 706 } |
| 707 |
670 LaunchWithProfile lwp(cur_dir, parsed_command_line.command_line_string()); | 708 LaunchWithProfile lwp(cur_dir, parsed_command_line.command_line_string()); |
671 bool launched = lwp.Launch(profile, process_startup); | 709 bool launched = lwp.Launch(profile, process_startup); |
672 if (!launched) { | 710 if (!launched) { |
673 LOG(ERROR) << "launch error"; | 711 LOG(ERROR) << "launch error"; |
674 if (return_code != NULL) { | 712 if (return_code != NULL) { |
675 *return_code = ResultCodes::INVALID_CMDLINE_URL; | 713 *return_code = ResultCodes::INVALID_CMDLINE_URL; |
676 } | 714 } |
677 return false; | 715 return false; |
678 } | 716 } |
679 | 717 |
680 return true; | 718 return true; |
681 } | 719 } |
OLD | NEW |