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.h" | 5 #include "chrome/browser/browser.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/idle_timer.h" | 8 #include "base/idle_timer.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "chrome/common/chrome_constants.h" | 31 #include "chrome/common/chrome_constants.h" |
32 #include "chrome/common/chrome_switches.h" | 32 #include "chrome/common/chrome_switches.h" |
33 #include "chrome/common/l10n_util.h" | 33 #include "chrome/common/l10n_util.h" |
34 #include "chrome/common/notification_service.h" | 34 #include "chrome/common/notification_service.h" |
35 #include "chrome/common/page_transition_types.h" | 35 #include "chrome/common/page_transition_types.h" |
36 #include "chrome/common/pref_names.h" | 36 #include "chrome/common/pref_names.h" |
37 #include "chrome/common/pref_service.h" | 37 #include "chrome/common/pref_service.h" |
38 #ifdef CHROME_PERSONALIZATION | 38 #ifdef CHROME_PERSONALIZATION |
39 #include "chrome/personalization/personalization.h" | 39 #include "chrome/personalization/personalization.h" |
40 #endif | 40 #endif |
| 41 #include "grit/chromium_strings.h" |
| 42 #include "grit/generated_resources.h" |
| 43 #include "grit/locale_settings.h" |
41 #include "net/base/cookie_monster.h" | 44 #include "net/base/cookie_monster.h" |
42 #include "net/base/cookie_policy.h" | 45 #include "net/base/cookie_policy.h" |
43 #include "net/base/net_util.h" | 46 #include "net/base/net_util.h" |
44 #include "net/base/registry_controlled_domain.h" | 47 #include "net/base/registry_controlled_domain.h" |
45 #include "net/url_request/url_request_context.h" | 48 #include "net/url_request/url_request_context.h" |
46 #include "webkit/glue/window_open_disposition.h" | 49 #include "webkit/glue/window_open_disposition.h" |
47 | 50 |
48 #if defined(OS_WIN) | 51 #if defined(OS_WIN) |
49 #include <windows.h> | 52 #include <windows.h> |
50 #include <shellapi.h> | 53 #include <shellapi.h> |
(...skipping 11 matching lines...) Expand all Loading... |
62 #include "chrome/browser/options_window.h" | 65 #include "chrome/browser/options_window.h" |
63 #include "chrome/browser/ssl/ssl_error_info.h" | 66 #include "chrome/browser/ssl/ssl_error_info.h" |
64 #include "chrome/browser/tab_contents/web_contents_view.h" | 67 #include "chrome/browser/tab_contents/web_contents_view.h" |
65 #include "chrome/browser/task_manager.h" | 68 #include "chrome/browser/task_manager.h" |
66 #include "chrome/browser/user_data_manager.h" | 69 #include "chrome/browser/user_data_manager.h" |
67 #include "chrome/browser/view_ids.h" | 70 #include "chrome/browser/view_ids.h" |
68 #include "chrome/browser/views/location_bar_view.h" | 71 #include "chrome/browser/views/location_bar_view.h" |
69 #include "chrome/browser/window_sizer.h" | 72 #include "chrome/browser/window_sizer.h" |
70 #include "chrome/common/child_process_host.h" | 73 #include "chrome/common/child_process_host.h" |
71 #include "chrome/common/win_util.h" | 74 #include "chrome/common/win_util.h" |
72 #include "grit/chromium_strings.h" | |
73 #include "grit/generated_resources.h" | |
74 #include "grit/locale_settings.h" | |
75 | 75 |
76 #endif // OS_WIN | 76 #endif // OS_WIN |
77 | 77 |
78 using base::TimeDelta; | 78 using base::TimeDelta; |
79 | 79 |
80 // How long we wait before updating the browser chrome while loading a page. | 80 // How long we wait before updating the browser chrome while loading a page. |
81 static const int kUIUpdateCoalescingTimeMS = 200; | 81 static const int kUIUpdateCoalescingTimeMS = 200; |
82 | 82 |
83 // Idle time before helping prune memory consumption. | 83 // Idle time before helping prune memory consumption. |
84 static const int kBrowserReleaseMemoryInterval = 30; // In seconds. | 84 static const int kBrowserReleaseMemoryInterval = 30; // In seconds. |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 } | 384 } |
385 | 385 |
386 SkBitmap Browser::GetCurrentPageIcon() const { | 386 SkBitmap Browser::GetCurrentPageIcon() const { |
387 TabContents* contents = GetSelectedTabContents(); | 387 TabContents* contents = GetSelectedTabContents(); |
388 // |contents| can be NULL since GetCurrentPageIcon() is called by the window | 388 // |contents| can be NULL since GetCurrentPageIcon() is called by the window |
389 // during the window's creation (before tabs have been added). | 389 // during the window's creation (before tabs have been added). |
390 return contents ? contents->GetFavIcon() : SkBitmap(); | 390 return contents ? contents->GetFavIcon() : SkBitmap(); |
391 } | 391 } |
392 | 392 |
393 std::wstring Browser::GetCurrentPageTitle() const { | 393 std::wstring Browser::GetCurrentPageTitle() const { |
394 #if defined(OS_WIN) | |
395 TabContents* contents = tabstrip_model_.GetSelectedTabContents(); | 394 TabContents* contents = tabstrip_model_.GetSelectedTabContents(); |
396 std::wstring title; | 395 std::wstring title; |
397 | 396 |
398 // |contents| can be NULL because GetCurrentPageTitle is called by the window | 397 // |contents| can be NULL because GetCurrentPageTitle is called by the window |
399 // during the window's creation (before tabs have been added). | 398 // during the window's creation (before tabs have been added). |
400 if (contents) { | 399 if (contents) { |
401 title = UTF16ToWideHack(contents->GetTitle()); | 400 title = UTF16ToWideHack(contents->GetTitle()); |
402 FormatTitleForDisplay(&title); | 401 FormatTitleForDisplay(&title); |
403 } | 402 } |
404 if (title.empty()) | 403 if (title.empty()) |
405 title = l10n_util::GetString(IDS_TAB_UNTITLED_TITLE); | 404 title = l10n_util::GetString(IDS_TAB_UNTITLED_TITLE); |
406 | 405 |
407 return l10n_util::GetStringF(IDS_BROWSER_WINDOW_TITLE_FORMAT, title); | 406 return l10n_util::GetStringF(IDS_BROWSER_WINDOW_TITLE_FORMAT, title); |
408 #elif defined(OS_POSIX) | |
409 // TODO(port): turn on when generating chrome_strings.h from grit | |
410 return L"untitled"; | |
411 #endif | |
412 } | 407 } |
413 | 408 |
414 // static | 409 // static |
415 void Browser::FormatTitleForDisplay(std::wstring* title) { | 410 void Browser::FormatTitleForDisplay(std::wstring* title) { |
416 size_t current_index = 0; | 411 size_t current_index = 0; |
417 size_t match_index; | 412 size_t match_index; |
418 while ((match_index = title->find(L'\n', current_index)) != | 413 while ((match_index = title->find(L'\n', current_index)) != |
419 std::wstring::npos) { | 414 std::wstring::npos) { |
420 title->replace(match_index, 1, L""); | 415 title->replace(match_index, 1, L""); |
421 current_index = match_index; | 416 current_index = match_index; |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 UserMetrics::RecordAction(L"ViewSource", profile_); | 750 UserMetrics::RecordAction(L"ViewSource", profile_); |
756 | 751 |
757 TabContents* current_tab = GetSelectedTabContents(); | 752 TabContents* current_tab = GetSelectedTabContents(); |
758 NavigationEntry* entry = current_tab->controller()->GetLastCommittedEntry(); | 753 NavigationEntry* entry = current_tab->controller()->GetLastCommittedEntry(); |
759 if (entry) { | 754 if (entry) { |
760 GURL url("view-source:" + entry->url().spec()); | 755 GURL url("view-source:" + entry->url().spec()); |
761 OpenURL(url, GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); | 756 OpenURL(url, GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); |
762 } | 757 } |
763 } | 758 } |
764 | 759 |
| 760 bool Browser::SupportsWindowFeature(WindowFeature feature) const { |
| 761 unsigned int features = FEATURE_INFOBAR | FEATURE_DOWNLOADSHELF; |
| 762 if (type() == TYPE_NORMAL) |
| 763 features |= FEATURE_BOOKMARKBAR; |
| 764 if (!window_ || !window_->IsFullscreen()) { |
| 765 if (type() == TYPE_NORMAL) |
| 766 features |= FEATURE_TABSTRIP | FEATURE_TOOLBAR; |
| 767 else |
| 768 features |= FEATURE_TITLEBAR; |
| 769 if ((type() & Browser::TYPE_APP) == 0) |
| 770 features |= FEATURE_LOCATIONBAR; |
| 771 } |
| 772 return !!(features & feature); |
| 773 } |
| 774 |
765 #if defined(OS_WIN) | 775 #if defined(OS_WIN) |
766 | 776 |
767 void Browser::ClosePopups() { | 777 void Browser::ClosePopups() { |
768 UserMetrics::RecordAction(L"CloseAllSuppressedPopups", profile_); | 778 UserMetrics::RecordAction(L"CloseAllSuppressedPopups", profile_); |
769 GetSelectedTabContents()->CloseAllSuppressedPopups(); | 779 GetSelectedTabContents()->CloseAllSuppressedPopups(); |
770 } | 780 } |
771 | 781 |
772 void Browser::Print() { | 782 void Browser::Print() { |
773 UserMetrics::RecordAction(L"PrintPreview", profile_); | 783 UserMetrics::RecordAction(L"PrintPreview", profile_); |
774 GetSelectedTabContents()->AsWebContents()->PrintPreview(); | 784 GetSelectedTabContents()->AsWebContents()->PrintPreview(); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
970 void Browser::OpenBookmarkManager() { | 980 void Browser::OpenBookmarkManager() { |
971 UserMetrics::RecordAction(L"ShowBookmarkManager", profile_); | 981 UserMetrics::RecordAction(L"ShowBookmarkManager", profile_); |
972 window_->ShowBookmarkManager(); | 982 window_->ShowBookmarkManager(); |
973 } | 983 } |
974 | 984 |
975 void Browser::ShowDownloadsTab() { | 985 void Browser::ShowDownloadsTab() { |
976 UserMetrics::RecordAction(L"ShowDownloads", profile_); | 986 UserMetrics::RecordAction(L"ShowDownloads", profile_); |
977 ShowSingleDOMUITab(DownloadsUI::GetBaseURL()); | 987 ShowSingleDOMUITab(DownloadsUI::GetBaseURL()); |
978 } | 988 } |
979 | 989 |
980 bool Browser::SupportsWindowFeature(WindowFeature feature) const { | |
981 unsigned int features = FEATURE_INFOBAR | FEATURE_DOWNLOADSHELF; | |
982 if (type() == TYPE_NORMAL) | |
983 features |= FEATURE_BOOKMARKBAR; | |
984 if (!window_ || !window_->IsFullscreen()) { | |
985 if (type() == TYPE_NORMAL) | |
986 features |= FEATURE_TABSTRIP | FEATURE_TOOLBAR; | |
987 else | |
988 features |= FEATURE_TITLEBAR; | |
989 if ((type() & Browser::TYPE_APP) == 0) | |
990 features |= FEATURE_LOCATIONBAR; | |
991 } | |
992 return !!(features & feature); | |
993 } | |
994 | |
995 void Browser::OpenClearBrowsingDataDialog() { | 990 void Browser::OpenClearBrowsingDataDialog() { |
996 UserMetrics::RecordAction(L"ClearBrowsingData_ShowDlg", profile_); | 991 UserMetrics::RecordAction(L"ClearBrowsingData_ShowDlg", profile_); |
997 window_->ShowClearBrowsingDataDialog(); | 992 window_->ShowClearBrowsingDataDialog(); |
998 } | 993 } |
999 | 994 |
1000 void Browser::OpenImportSettingsDialog() { | 995 void Browser::OpenImportSettingsDialog() { |
1001 UserMetrics::RecordAction(L"Import_ShowDlg", profile_); | 996 UserMetrics::RecordAction(L"Import_ShowDlg", profile_); |
1002 window_->ShowImportDialog(); | 997 window_->ShowImportDialog(); |
1003 } | 998 } |
1004 | 999 |
(...skipping 1448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2453 | 2448 |
2454 // We need to register the window position pref. | 2449 // We need to register the window position pref. |
2455 std::wstring window_pref(prefs::kBrowserWindowPlacement); | 2450 std::wstring window_pref(prefs::kBrowserWindowPlacement); |
2456 window_pref.append(L"_"); | 2451 window_pref.append(L"_"); |
2457 window_pref.append(app_name); | 2452 window_pref.append(app_name); |
2458 PrefService* prefs = g_browser_process->local_state(); | 2453 PrefService* prefs = g_browser_process->local_state(); |
2459 DCHECK(prefs); | 2454 DCHECK(prefs); |
2460 | 2455 |
2461 prefs->RegisterDictionaryPref(window_pref.c_str()); | 2456 prefs->RegisterDictionaryPref(window_pref.c_str()); |
2462 } | 2457 } |
OLD | NEW |