| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/tab_contents/tab_contents_wrapper.h" | 5 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 6 | 6 |
| 7 #include "base/utf_string_conversions.h" | |
| 8 | |
| 9 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 10 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 11 #include "base/stringprintf.h" | |
| 12 #include "chrome/browser/autocomplete_history_manager.h" | 9 #include "chrome/browser/autocomplete_history_manager.h" |
| 13 #include "chrome/browser/autofill/autofill_external_delegate.h" | 10 #include "chrome/browser/autofill/autofill_external_delegate.h" |
| 14 #include "chrome/browser/autofill/autofill_manager.h" | 11 #include "chrome/browser/autofill/autofill_manager.h" |
| 15 #include "chrome/browser/automation/automation_tab_helper.h" | 12 #include "chrome/browser/automation/automation_tab_helper.h" |
| 16 #include "chrome/browser/browser_process.h" | 13 #include "chrome/browser/browser_process.h" |
| 17 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 14 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
| 18 #include "chrome/browser/download/download_request_limiter_observer.h" | 15 #include "chrome/browser/download/download_request_limiter_observer.h" |
| 19 #include "chrome/browser/extensions/extension_tab_helper.h" | 16 #include "chrome/browser/extensions/extension_tab_helper.h" |
| 20 #include "chrome/browser/extensions/extension_webnavigation_api.h" | 17 #include "chrome/browser/extensions/extension_webnavigation_api.h" |
| 21 #include "chrome/browser/external_protocol/external_protocol_observer.h" | 18 #include "chrome/browser/external_protocol/external_protocol_observer.h" |
| 22 #include "chrome/browser/favicon/favicon_tab_helper.h" | 19 #include "chrome/browser/favicon/favicon_tab_helper.h" |
| 23 #include "chrome/browser/google/google_util.h" | 20 #include "chrome/browser/google/google_util.h" |
| 24 #include "chrome/browser/history/history_tab_helper.h" | 21 #include "chrome/browser/history/history_tab_helper.h" |
| 25 #include "chrome/browser/infobars/infobar_tab_helper.h" | 22 #include "chrome/browser/infobars/infobar_tab_helper.h" |
| 26 #include "chrome/browser/omnibox_search_hint.h" | 23 #include "chrome/browser/omnibox_search_hint.h" |
| 27 #include "chrome/browser/password_manager/password_manager.h" | 24 #include "chrome/browser/password_manager/password_manager.h" |
| 28 #include "chrome/browser/password_manager_delegate_impl.h" | 25 #include "chrome/browser/password_manager_delegate_impl.h" |
| 29 #include "chrome/browser/pdf_unsupported_feature.h" | 26 #include "chrome/browser/pdf_unsupported_feature.h" |
| 30 #include "chrome/browser/plugin_observer.h" | 27 #include "chrome/browser/plugin_observer.h" |
| 31 #include "chrome/browser/prefs/pref_service.h" | 28 #include "chrome/browser/prefs/pref_service.h" |
| 32 #include "chrome/browser/prerender/prerender_tab_helper.h" | 29 #include "chrome/browser/prerender/prerender_tab_helper.h" |
| 33 #include "chrome/browser/printing/print_preview_message_handler.h" | 30 #include "chrome/browser/printing/print_preview_message_handler.h" |
| 34 #include "chrome/browser/printing/print_view_manager.h" | 31 #include "chrome/browser/printing/print_view_manager.h" |
| 32 #include "chrome/browser/profiles/profile.h" |
| 35 #include "chrome/browser/renderer_host/web_cache_manager.h" | 33 #include "chrome/browser/renderer_host/web_cache_manager.h" |
| 36 #include "chrome/browser/renderer_preferences_util.h" | |
| 37 #include "chrome/browser/sessions/restore_tab_helper.h" | 34 #include "chrome/browser/sessions/restore_tab_helper.h" |
| 38 #include "chrome/browser/safe_browsing/client_side_detection_host.h" | 35 #include "chrome/browser/safe_browsing/client_side_detection_host.h" |
| 39 #include "chrome/browser/tab_contents/tab_contents_ssl_helper.h" | 36 #include "chrome/browser/tab_contents/tab_contents_ssl_helper.h" |
| 40 #include "chrome/browser/tab_contents/thumbnail_generator.h" | 37 #include "chrome/browser/tab_contents/thumbnail_generator.h" |
| 41 #include "chrome/browser/themes/theme_service.h" | |
| 42 #include "chrome/browser/themes/theme_service_factory.h" | |
| 43 #include "chrome/browser/translate/translate_tab_helper.h" | 38 #include "chrome/browser/translate/translate_tab_helper.h" |
| 44 #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h" | 39 #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h" |
| 45 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" | 40 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" |
| 46 #include "chrome/browser/ui/constrained_window_tab_helper.h" | 41 #include "chrome/browser/ui/constrained_window_tab_helper.h" |
| 47 #include "chrome/browser/ui/find_bar/find_tab_helper.h" | 42 #include "chrome/browser/ui/find_bar/find_tab_helper.h" |
| 48 #include "chrome/browser/ui/intents/web_intent_picker_factory_impl.h" | 43 #include "chrome/browser/ui/intents/web_intent_picker_factory_impl.h" |
| 49 #include "chrome/browser/ui/intents/web_intent_picker_controller.h" | 44 #include "chrome/browser/ui/intents/web_intent_picker_controller.h" |
| 45 #include "chrome/browser/ui/prefs/prefs_tab_helper.h" |
| 50 #include "chrome/browser/ui/sad_tab_observer.h" | 46 #include "chrome/browser/ui/sad_tab_observer.h" |
| 51 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" | 47 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" |
| 52 #include "chrome/browser/ui/sync/tab_contents_wrapper_synced_tab_delegate.h" | 48 #include "chrome/browser/ui/sync/tab_contents_wrapper_synced_tab_delegate.h" |
| 53 #include "chrome/browser/ui/tab_contents/per_tab_prefs_tab_helper.h" | |
| 54 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper_delegate.h" | |
| 55 #include "chrome/common/chrome_notification_types.h" | 49 #include "chrome/common/chrome_notification_types.h" |
| 56 #include "chrome/common/chrome_switches.h" | 50 #include "chrome/common/chrome_switches.h" |
| 57 #include "chrome/common/pref_names.h" | 51 #include "chrome/common/pref_names.h" |
| 58 #include "chrome/common/render_messages.h" | 52 #include "chrome/common/render_messages.h" |
| 59 #include "content/browser/renderer_host/render_view_host.h" | 53 #include "content/browser/renderer_host/render_view_host.h" |
| 60 #include "content/browser/tab_contents/tab_contents_view.h" | 54 #include "content/public/browser/notification_details.h" |
| 61 #include "content/public/browser/notification_service.h" | 55 #include "content/public/browser/notification_service.h" |
| 62 #include "grit/generated_resources.h" | 56 #include "grit/generated_resources.h" |
| 63 #include "grit/locale_settings.h" | 57 #include "grit/locale_settings.h" |
| 64 #include "grit/platform_locale_settings.h" | 58 #include "grit/platform_locale_settings.h" |
| 65 #include "ui/base/l10n/l10n_util.h" | 59 #include "ui/base/l10n/l10n_util.h" |
| 66 #include "webkit/glue/webpreferences.h" | |
| 67 | 60 |
| 68 namespace { | 61 namespace { |
| 69 | 62 |
| 70 static base::LazyInstance<base::PropertyAccessor<TabContentsWrapper*> > | 63 static base::LazyInstance<base::PropertyAccessor<TabContentsWrapper*> > |
| 71 g_tab_contents_wrapper_property_accessor = LAZY_INSTANCE_INITIALIZER; | 64 g_tab_contents_wrapper_property_accessor = LAZY_INSTANCE_INITIALIZER; |
| 72 | 65 |
| 73 // The list of prefs we want to observe. | 66 // The list of prefs we want to observe. |
| 74 const char* kPrefsToObserve[] = { | 67 const char* kPrefsToObserve[] = { |
| 75 prefs::kAlternateErrorPagesEnabled, | 68 prefs::kAlternateErrorPagesEnabled, |
| 76 prefs::kDefaultCharset, | |
| 77 prefs::kDefaultZoomLevel, | 69 prefs::kDefaultZoomLevel, |
| 78 prefs::kEnableReferrers, | |
| 79 #if defined (ENABLE_SAFE_BROWSING) | 70 #if defined (ENABLE_SAFE_BROWSING) |
| 80 prefs::kSafeBrowsingEnabled, | 71 prefs::kSafeBrowsingEnabled, |
| 81 #endif | 72 #endif |
| 82 prefs::kWebKitAllowDisplayingInsecureContent, | |
| 83 prefs::kWebKitAllowRunningInsecureContent, | |
| 84 prefs::kWebKitCursiveFontFamily, | |
| 85 prefs::kWebKitDefaultFixedFontSize, | |
| 86 prefs::kWebKitDefaultFontSize, | |
| 87 prefs::kWebKitFantasyFontFamily, | |
| 88 prefs::kWebKitFixedFontFamily, | |
| 89 prefs::kWebKitGlobalJavascriptEnabled, | |
| 90 prefs::kWebKitJavaEnabled, | |
| 91 prefs::kWebKitLoadsImagesAutomatically, | |
| 92 prefs::kWebKitMinimumFontSize, | |
| 93 prefs::kWebKitMinimumLogicalFontSize, | |
| 94 prefs::kWebKitPluginsEnabled, | |
| 95 prefs::kWebKitSansSerifFontFamily, | |
| 96 prefs::kWebKitSerifFontFamily, | |
| 97 prefs::kWebKitStandardFontFamily, | |
| 98 prefs::kWebkitTabsToLinks, | |
| 99 prefs::kWebKitUsesUniversalDetector | |
| 100 }; | 73 }; |
| 101 | 74 |
| 102 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); | 75 const int kPrefsToObserveLength = arraysize(kPrefsToObserve); |
| 103 | 76 |
| 104 // Registers a preference under the path |map_name| for each script used for | |
| 105 // per-script font prefs. For example, if |map_name| is "fonts.serif", then | |
| 106 // "fonts.serif.Arab", "fonts.serif.Hang", etc. are registered. | |
| 107 void RegisterFontFamilyMap(PrefService* prefs, const char* map_name) { | |
| 108 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | |
| 109 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | |
| 110 std::string pref_name_str = base::StringPrintf("%s.%s", map_name, script); | |
| 111 const char* pref_name = pref_name_str.c_str(); | |
| 112 if (!prefs->FindPreference(pref_name)) | |
| 113 prefs->RegisterStringPref(pref_name, "", PrefService::UNSYNCABLE_PREF); | |
| 114 } | |
| 115 } | |
| 116 | |
| 117 // Registers |obs| to observe per-script font prefs under the path |map_name|. | |
| 118 void RegisterFontFamilyMapObserver(PrefChangeRegistrar* registrar, | |
| 119 const char* map_name, | |
| 120 content::NotificationObserver* obs) { | |
| 121 for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) { | |
| 122 const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i]; | |
| 123 std::string pref_name = base::StringPrintf("%s.%s", map_name, script); | |
| 124 registrar->Add(pref_name.c_str(), obs); | |
| 125 } | |
| 126 } | |
| 127 | |
| 128 struct PerScriptFontDefault { | |
| 129 const char* pref_name; | |
| 130 int resource_id; | |
| 131 const char* native_locale; | |
| 132 }; | |
| 133 | |
| 134 // Per-script font pref defaults. The prefs that have defaults vary by | |
| 135 // platform, since not all platforms have fonts for all scripts for all generic | |
| 136 // families. | |
| 137 // TODO(falken): add proper defaults when possible for all | |
| 138 // platforms/scripts/generic families. | |
| 139 const PerScriptFontDefault kPerScriptFontDefaults[] = { | |
| 140 #if defined(OS_CHROMEOS) | |
| 141 { prefs::kWebKitStandardFontFamilyArabic, IDS_STANDARD_FONT_FAMILY_ARABIC, | |
| 142 "ar" }, | |
| 143 { prefs::kWebKitSerifFontFamilyArabic, IDS_SERIF_FONT_FAMILY_ARABIC, "ar" }, | |
| 144 { prefs::kWebKitSansSerifFontFamilyArabic, | |
| 145 IDS_SANS_SERIF_FONT_FAMILY_ARABIC, "ar" }, | |
| 146 { prefs::kWebKitStandardFontFamilyJapanese, | |
| 147 IDS_STANDARD_FONT_FAMILY_JAPANESE, "ja" }, | |
| 148 { prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE, | |
| 149 "ja" }, | |
| 150 { prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE, | |
| 151 "ja" }, | |
| 152 { prefs::kWebKitSansSerifFontFamilyJapanese, | |
| 153 IDS_SANS_SERIF_FONT_FAMILY_JAPANESE, "ja" }, | |
| 154 { prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN, | |
| 155 "ko" }, | |
| 156 { prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN, "ko" }, | |
| 157 { prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN, "ko" }, | |
| 158 { prefs::kWebKitSansSerifFontFamilyKorean, | |
| 159 IDS_SANS_SERIF_FONT_FAMILY_KOREAN, "ko" }, | |
| 160 { prefs::kWebKitStandardFontFamilySimplifiedHan, | |
| 161 IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 162 { prefs::kWebKitFixedFontFamilySimplifiedHan, | |
| 163 IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 164 { prefs::kWebKitSerifFontFamilySimplifiedHan, | |
| 165 IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 166 { prefs::kWebKitSansSerifFontFamilySimplifiedHan, | |
| 167 IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 168 { prefs::kWebKitStandardFontFamilyTraditionalHan, | |
| 169 IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 170 { prefs::kWebKitFixedFontFamilyTraditionalHan, | |
| 171 IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 172 { prefs::kWebKitSerifFontFamilyTraditionalHan, | |
| 173 IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 174 { prefs::kWebKitSansSerifFontFamilyTraditionalHan, | |
| 175 IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" } | |
| 176 #elif defined(OS_MACOSX) | |
| 177 { prefs::kWebKitStandardFontFamilyJapanese, | |
| 178 IDS_STANDARD_FONT_FAMILY_JAPANESE, "ja" }, | |
| 179 { prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE, | |
| 180 "ja" }, | |
| 181 { prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE, | |
| 182 "ja" }, | |
| 183 { prefs::kWebKitSansSerifFontFamilyJapanese, | |
| 184 IDS_SANS_SERIF_FONT_FAMILY_JAPANESE, "ja" }, | |
| 185 { prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN, | |
| 186 "ko" }, | |
| 187 { prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN, "ko" }, | |
| 188 { prefs::kWebKitSansSerifFontFamilyKorean, | |
| 189 IDS_SANS_SERIF_FONT_FAMILY_KOREAN, "ko" }, | |
| 190 { prefs::kWebKitStandardFontFamilySimplifiedHan, | |
| 191 IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 192 { prefs::kWebKitSerifFontFamilySimplifiedHan, | |
| 193 IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 194 { prefs::kWebKitSansSerifFontFamilySimplifiedHan, | |
| 195 IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 196 { prefs::kWebKitStandardFontFamilyTraditionalHan, | |
| 197 IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 198 { prefs::kWebKitSerifFontFamilyTraditionalHan, | |
| 199 IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 200 { prefs::kWebKitSansSerifFontFamilyTraditionalHan, | |
| 201 IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" } | |
| 202 #elif defined(OS_WIN) | |
| 203 { prefs::kWebKitStandardFontFamilyJapanese, | |
| 204 IDS_STANDARD_FONT_FAMILY_JAPANESE, "ja" }, | |
| 205 { prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE, | |
| 206 "ja" }, | |
| 207 { prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE, | |
| 208 "ja" }, | |
| 209 { prefs::kWebKitSansSerifFontFamilyJapanese, | |
| 210 IDS_SANS_SERIF_FONT_FAMILY_JAPANESE, "ja" }, | |
| 211 { prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN, | |
| 212 "ko" }, | |
| 213 { prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN, "ko" }, | |
| 214 { prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN, "ko" }, | |
| 215 { prefs::kWebKitSansSerifFontFamilyKorean, | |
| 216 IDS_SANS_SERIF_FONT_FAMILY_KOREAN, "ko" }, | |
| 217 { prefs::kWebKitCursiveFontFamilyKorean, IDS_CURSIVE_FONT_FAMILY_KOREAN, | |
| 218 "ko" }, | |
| 219 { prefs::kWebKitStandardFontFamilySimplifiedHan, | |
| 220 IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 221 { prefs::kWebKitFixedFontFamilySimplifiedHan, | |
| 222 IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 223 { prefs::kWebKitSerifFontFamilySimplifiedHan, | |
| 224 IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 225 { prefs::kWebKitSansSerifFontFamilySimplifiedHan, | |
| 226 IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN, "zh-CN" }, | |
| 227 { prefs::kWebKitStandardFontFamilyTraditionalHan, | |
| 228 IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 229 { prefs::kWebKitFixedFontFamilyTraditionalHan, | |
| 230 IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 231 { prefs::kWebKitSerifFontFamilyTraditionalHan, | |
| 232 IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" }, | |
| 233 { prefs::kWebKitSansSerifFontFamilyTraditionalHan, | |
| 234 IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN, "zh-TW" } | |
| 235 #endif | |
| 236 }; | |
| 237 | |
| 238 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | |
| 239 // To avoid Clang warning, only define kPerScriptFontDefaultsLength when it is | |
| 240 // non-zero. When it is zero, code like | |
| 241 // for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) | |
| 242 // causes a warning due to comparison of unsigned expression < 0. | |
| 243 const size_t kPerScriptFontDefaultsLength = arraysize(kPerScriptFontDefaults); | |
| 244 #endif | |
| 245 | |
| 246 } // namespace | 77 } // namespace |
| 247 | 78 |
| 248 //////////////////////////////////////////////////////////////////////////////// | 79 //////////////////////////////////////////////////////////////////////////////// |
| 249 // TabContentsWrapper, public: | 80 // TabContentsWrapper, public: |
| 250 | 81 |
| 251 TabContentsWrapper::TabContentsWrapper(TabContents* contents) | 82 TabContentsWrapper::TabContentsWrapper(TabContents* contents) |
| 252 : TabContentsObserver(contents), | 83 : TabContentsObserver(contents), |
| 253 delegate_(NULL), | 84 delegate_(NULL), |
| 254 in_destructor_(false), | 85 in_destructor_(false), |
| 255 tab_contents_(contents) { | 86 tab_contents_(contents) { |
| 256 DCHECK(contents); | 87 DCHECK(contents); |
| 257 DCHECK(!GetCurrentWrapperForContents(contents)); | 88 DCHECK(!GetCurrentWrapperForContents(contents)); |
| 258 // Stash this in the property bag so it can be retrieved without having to | 89 // Stash this in the property bag so it can be retrieved without having to |
| 259 // go to a Browser. | 90 // go to a Browser. |
| 260 property_accessor()->SetProperty(contents->property_bag(), this); | 91 property_accessor()->SetProperty(contents->property_bag(), this); |
| 261 | 92 |
| 93 PrefService* prefs = profile()->GetPrefs(); |
| 94 pref_change_registrar_.Init(prefs); |
| 95 if (prefs) { |
| 96 for (int i = 0; i < kPrefsToObserveLength; ++i) |
| 97 pref_change_registrar_.Add(kPrefsToObserve[i], this); |
| 98 } |
| 99 |
| 262 // Create the tab helpers. | 100 // Create the tab helpers. |
| 263 autocomplete_history_manager_.reset(new AutocompleteHistoryManager(contents)); | 101 autocomplete_history_manager_.reset(new AutocompleteHistoryManager(contents)); |
| 264 autofill_manager_ = new AutofillManager(this); | 102 autofill_manager_ = new AutofillManager(this); |
| 265 if (CommandLine::ForCurrentProcess()->HasSwitch( | 103 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 266 switches::kExternalAutofillPopup)) { | 104 switches::kExternalAutofillPopup)) { |
| 267 autofill_external_delegate_.reset( | 105 autofill_external_delegate_.reset( |
| 268 AutofillExternalDelegate::Create(this, autofill_manager_.get())); | 106 AutofillExternalDelegate::Create(this, autofill_manager_.get())); |
| 269 autofill_manager_->SetExternalDelegate(autofill_external_delegate_.get()); | 107 autofill_manager_->SetExternalDelegate(autofill_external_delegate_.get()); |
| 270 autocomplete_history_manager_->SetExternalDelegate( | 108 autocomplete_history_manager_->SetExternalDelegate( |
| 271 autofill_external_delegate_.get()); | 109 autofill_external_delegate_.get()); |
| 272 } | 110 } |
| 273 automation_tab_helper_.reset(new AutomationTabHelper(contents)); | 111 automation_tab_helper_.reset(new AutomationTabHelper(contents)); |
| 274 blocked_content_tab_helper_.reset(new BlockedContentTabHelper(this)); | 112 blocked_content_tab_helper_.reset(new BlockedContentTabHelper(this)); |
| 275 bookmark_tab_helper_.reset(new BookmarkTabHelper(this)); | 113 bookmark_tab_helper_.reset(new BookmarkTabHelper(this)); |
| 276 constrained_window_tab_helper_.reset(new ConstrainedWindowTabHelper(this)); | 114 constrained_window_tab_helper_.reset(new ConstrainedWindowTabHelper(this)); |
| 277 extension_tab_helper_.reset(new ExtensionTabHelper(this)); | 115 extension_tab_helper_.reset(new ExtensionTabHelper(this)); |
| 278 favicon_tab_helper_.reset(new FaviconTabHelper(contents)); | 116 favicon_tab_helper_.reset(new FaviconTabHelper(contents)); |
| 279 find_tab_helper_.reset(new FindTabHelper(contents)); | 117 find_tab_helper_.reset(new FindTabHelper(contents)); |
| 280 history_tab_helper_.reset(new HistoryTabHelper(contents)); | 118 history_tab_helper_.reset(new HistoryTabHelper(contents)); |
| 281 infobar_tab_helper_.reset(new InfoBarTabHelper(contents)); | 119 infobar_tab_helper_.reset(new InfoBarTabHelper(contents)); |
| 282 password_manager_delegate_.reset(new PasswordManagerDelegateImpl(this)); | 120 password_manager_delegate_.reset(new PasswordManagerDelegateImpl(this)); |
| 283 password_manager_.reset( | 121 password_manager_.reset( |
| 284 new PasswordManager(contents, password_manager_delegate_.get())); | 122 new PasswordManager(contents, password_manager_delegate_.get())); |
| 285 per_tab_prefs_tab_helper_.reset(new PerTabPrefsTabHelper(this)); | 123 prefs_tab_helper_.reset(new PrefsTabHelper(this)); |
| 286 prerender_tab_helper_.reset(new prerender::PrerenderTabHelper(this)); | 124 prerender_tab_helper_.reset(new prerender::PrerenderTabHelper(this)); |
| 287 print_view_manager_.reset(new printing::PrintViewManager(this)); | 125 print_view_manager_.reset(new printing::PrintViewManager(this)); |
| 288 restore_tab_helper_.reset(new RestoreTabHelper(this)); | 126 restore_tab_helper_.reset(new RestoreTabHelper(this)); |
| 289 #if defined(ENABLE_SAFE_BROWSING) | 127 #if defined(ENABLE_SAFE_BROWSING) |
| 290 if (profile()->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled) && | 128 if (profile()->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled) && |
| 291 g_browser_process->safe_browsing_detection_service()) { | 129 g_browser_process->safe_browsing_detection_service()) { |
| 292 safebrowsing_detection_host_.reset( | 130 safebrowsing_detection_host_.reset( |
| 293 safe_browsing::ClientSideDetectionHost::Create(contents)); | 131 safe_browsing::ClientSideDetectionHost::Create(contents)); |
| 294 } | 132 } |
| 295 #endif | 133 #endif |
| (...skipping 19 matching lines...) Expand all Loading... |
| 315 thumbnail_generation_observer_.reset(new ThumbnailGenerator); | 153 thumbnail_generation_observer_.reset(new ThumbnailGenerator); |
| 316 thumbnail_generation_observer_->StartThumbnailing(tab_contents_.get()); | 154 thumbnail_generation_observer_->StartThumbnailing(tab_contents_.get()); |
| 317 } | 155 } |
| 318 | 156 |
| 319 // Set-up the showing of the omnibox search infobar if applicable. | 157 // Set-up the showing of the omnibox search infobar if applicable. |
| 320 if (OmniboxSearchHint::IsEnabled(profile())) | 158 if (OmniboxSearchHint::IsEnabled(profile())) |
| 321 omnibox_search_hint_.reset(new OmniboxSearchHint(this)); | 159 omnibox_search_hint_.reset(new OmniboxSearchHint(this)); |
| 322 | 160 |
| 323 registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, | 161 registrar_.Add(this, chrome::NOTIFICATION_GOOGLE_URL_UPDATED, |
| 324 content::NotificationService::AllSources()); | 162 content::NotificationService::AllSources()); |
| 325 registrar_.Add(this, chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED, | |
| 326 content::NotificationService::AllSources()); | |
| 327 #if defined(OS_POSIX) && !defined(OS_MACOSX) | |
| 328 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | |
| 329 content::Source<ThemeService>( | |
| 330 ThemeServiceFactory::GetForProfile(profile()))); | |
| 331 #endif | |
| 332 | |
| 333 // Register for notifications about all interested prefs change. | |
| 334 PrefService* prefs = profile()->GetPrefs(); | |
| 335 pref_change_registrar_.Init(prefs); | |
| 336 if (prefs) { | |
| 337 for (int i = 0; i < kPrefsToObserveLength; ++i) | |
| 338 pref_change_registrar_.Add(kPrefsToObserve[i], this); | |
| 339 | |
| 340 RegisterFontFamilyMapObserver(&pref_change_registrar_, | |
| 341 prefs::kWebKitStandardFontFamilyMap, this); | |
| 342 RegisterFontFamilyMapObserver(&pref_change_registrar_, | |
| 343 prefs::kWebKitFixedFontFamilyMap, this); | |
| 344 RegisterFontFamilyMapObserver(&pref_change_registrar_, | |
| 345 prefs::kWebKitSerifFontFamilyMap, this); | |
| 346 RegisterFontFamilyMapObserver(&pref_change_registrar_, | |
| 347 prefs::kWebKitSansSerifFontFamilyMap, this); | |
| 348 RegisterFontFamilyMapObserver(&pref_change_registrar_, | |
| 349 prefs::kWebKitCursiveFontFamilyMap, this); | |
| 350 RegisterFontFamilyMapObserver(&pref_change_registrar_, | |
| 351 prefs::kWebKitFantasyFontFamilyMap, this); | |
| 352 } | |
| 353 | |
| 354 renderer_preferences_util::UpdateFromSystemSettings( | |
| 355 tab_contents()->GetMutableRendererPrefs(), profile()); | |
| 356 } | 163 } |
| 357 | 164 |
| 358 TabContentsWrapper::~TabContentsWrapper() { | 165 TabContentsWrapper::~TabContentsWrapper() { |
| 359 in_destructor_ = true; | 166 in_destructor_ = true; |
| 360 | 167 |
| 361 // Need to tear down infobars before the TabContents goes away. | 168 // Need to tear down infobars before the TabContents goes away. |
| 362 infobar_tab_helper_.reset(); | 169 infobar_tab_helper_.reset(); |
| 363 } | 170 } |
| 364 | 171 |
| 365 base::PropertyAccessor<TabContentsWrapper*>* | 172 base::PropertyAccessor<TabContentsWrapper*>* |
| 366 TabContentsWrapper::property_accessor() { | 173 TabContentsWrapper::property_accessor() { |
| 367 return g_tab_contents_wrapper_property_accessor.Pointer(); | 174 return g_tab_contents_wrapper_property_accessor.Pointer(); |
| 368 } | 175 } |
| 369 | 176 |
| 370 // static | |
| 371 void TabContentsWrapper::RegisterUserPrefs(PrefService* prefs) { | 177 void TabContentsWrapper::RegisterUserPrefs(PrefService* prefs) { |
| 372 prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, | 178 prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, |
| 373 true, | 179 true, |
| 374 PrefService::SYNCABLE_PREF); | 180 PrefService::SYNCABLE_PREF); |
| 375 | |
| 376 WebPreferences pref_defaults; | |
| 377 prefs->RegisterBooleanPref(prefs::kWebKitGlobalJavascriptEnabled, | |
| 378 pref_defaults.javascript_enabled, | |
| 379 PrefService::UNSYNCABLE_PREF); | |
| 380 prefs->RegisterBooleanPref(prefs::kWebKitWebSecurityEnabled, | |
| 381 pref_defaults.web_security_enabled, | |
| 382 PrefService::UNSYNCABLE_PREF); | |
| 383 prefs->RegisterBooleanPref( | |
| 384 prefs::kWebKitJavascriptCanOpenWindowsAutomatically, | |
| 385 true, | |
| 386 PrefService::UNSYNCABLE_PREF); | |
| 387 prefs->RegisterBooleanPref(prefs::kWebKitLoadsImagesAutomatically, | |
| 388 pref_defaults.loads_images_automatically, | |
| 389 PrefService::UNSYNCABLE_PREF); | |
| 390 prefs->RegisterBooleanPref(prefs::kWebKitPluginsEnabled, | |
| 391 pref_defaults.plugins_enabled, | |
| 392 PrefService::UNSYNCABLE_PREF); | |
| 393 prefs->RegisterBooleanPref(prefs::kWebKitDomPasteEnabled, | |
| 394 pref_defaults.dom_paste_enabled, | |
| 395 PrefService::UNSYNCABLE_PREF); | |
| 396 prefs->RegisterBooleanPref(prefs::kWebKitShrinksStandaloneImagesToFit, | |
| 397 pref_defaults.shrinks_standalone_images_to_fit, | |
| 398 PrefService::UNSYNCABLE_PREF); | |
| 399 prefs->RegisterDictionaryPref(prefs::kWebKitInspectorSettings, | |
| 400 PrefService::UNSYNCABLE_PREF); | |
| 401 prefs->RegisterBooleanPref(prefs::kWebKitTextAreasAreResizable, | |
| 402 pref_defaults.text_areas_are_resizable, | |
| 403 PrefService::UNSYNCABLE_PREF); | |
| 404 prefs->RegisterBooleanPref(prefs::kWebKitJavaEnabled, | |
| 405 pref_defaults.java_enabled, | |
| 406 PrefService::UNSYNCABLE_PREF); | |
| 407 prefs->RegisterBooleanPref(prefs::kWebkitTabsToLinks, | |
| 408 pref_defaults.tabs_to_links, | |
| 409 PrefService::UNSYNCABLE_PREF); | |
| 410 prefs->RegisterBooleanPref(prefs::kWebKitAllowRunningInsecureContent, | |
| 411 false, | |
| 412 PrefService::UNSYNCABLE_PREF); | |
| 413 prefs->RegisterBooleanPref(prefs::kWebKitAllowDisplayingInsecureContent, | |
| 414 true, | |
| 415 PrefService::UNSYNCABLE_PREF); | |
| 416 | |
| 417 #if !defined(OS_MACOSX) | |
| 418 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | |
| 419 IDS_ACCEPT_LANGUAGES, | |
| 420 PrefService::SYNCABLE_PREF); | |
| 421 #else | |
| 422 // Not used in OSX. | |
| 423 prefs->RegisterLocalizedStringPref(prefs::kAcceptLanguages, | |
| 424 IDS_ACCEPT_LANGUAGES, | |
| 425 PrefService::UNSYNCABLE_PREF); | |
| 426 #endif | |
| 427 prefs->RegisterLocalizedStringPref(prefs::kDefaultCharset, | |
| 428 IDS_DEFAULT_ENCODING, | |
| 429 PrefService::SYNCABLE_PREF); | |
| 430 prefs->RegisterLocalizedStringPref(prefs::kWebKitStandardFontFamily, | |
| 431 IDS_STANDARD_FONT_FAMILY, | |
| 432 PrefService::UNSYNCABLE_PREF); | |
| 433 prefs->RegisterLocalizedStringPref(prefs::kWebKitFixedFontFamily, | |
| 434 IDS_FIXED_FONT_FAMILY, | |
| 435 PrefService::UNSYNCABLE_PREF); | |
| 436 prefs->RegisterLocalizedStringPref(prefs::kWebKitSerifFontFamily, | |
| 437 IDS_SERIF_FONT_FAMILY, | |
| 438 PrefService::UNSYNCABLE_PREF); | |
| 439 prefs->RegisterLocalizedStringPref(prefs::kWebKitSansSerifFontFamily, | |
| 440 IDS_SANS_SERIF_FONT_FAMILY, | |
| 441 PrefService::UNSYNCABLE_PREF); | |
| 442 prefs->RegisterLocalizedStringPref(prefs::kWebKitCursiveFontFamily, | |
| 443 IDS_CURSIVE_FONT_FAMILY, | |
| 444 PrefService::UNSYNCABLE_PREF); | |
| 445 prefs->RegisterLocalizedStringPref(prefs::kWebKitFantasyFontFamily, | |
| 446 IDS_FANTASY_FONT_FAMILY, | |
| 447 PrefService::UNSYNCABLE_PREF); | |
| 448 | |
| 449 // Register per-script font prefs that have defaults. | |
| 450 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | |
| 451 // As explained by its definition, kPerScriptFontDefaultsLength is only | |
| 452 // defined for platforms where it would be non-zero. | |
| 453 std::string locale = g_browser_process->GetApplicationLocale(); | |
| 454 for (size_t i = 0; i < kPerScriptFontDefaultsLength; ++i) { | |
| 455 const PerScriptFontDefault& pref = kPerScriptFontDefaults[i]; | |
| 456 // Suppress default per-script font when the script matches the browser's | |
| 457 // locale. Otherwise, the default would override the user's preferences | |
| 458 // when viewing pages in their native language. This can be removed when | |
| 459 // per-script fonts are added to Preferences UI. | |
| 460 if (!StartsWithASCII(locale, pref.native_locale, false)) { | |
| 461 prefs->RegisterLocalizedStringPref(pref.pref_name, | |
| 462 pref.resource_id, | |
| 463 PrefService::UNSYNCABLE_PREF); | |
| 464 } | |
| 465 } | |
| 466 #endif | |
| 467 | |
| 468 // Register the rest of the per-script font prefs. | |
| 469 RegisterFontFamilyMap(prefs, prefs::kWebKitStandardFontFamilyMap); | |
| 470 RegisterFontFamilyMap(prefs, prefs::kWebKitFixedFontFamilyMap); | |
| 471 RegisterFontFamilyMap(prefs, prefs::kWebKitSerifFontFamilyMap); | |
| 472 RegisterFontFamilyMap(prefs, prefs::kWebKitSansSerifFontFamilyMap); | |
| 473 RegisterFontFamilyMap(prefs, prefs::kWebKitCursiveFontFamilyMap); | |
| 474 RegisterFontFamilyMap(prefs, prefs::kWebKitFantasyFontFamilyMap); | |
| 475 | |
| 476 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFontSize, | |
| 477 IDS_DEFAULT_FONT_SIZE, | |
| 478 PrefService::UNSYNCABLE_PREF); | |
| 479 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitDefaultFixedFontSize, | |
| 480 IDS_DEFAULT_FIXED_FONT_SIZE, | |
| 481 PrefService::UNSYNCABLE_PREF); | |
| 482 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumFontSize, | |
| 483 IDS_MINIMUM_FONT_SIZE, | |
| 484 PrefService::UNSYNCABLE_PREF); | |
| 485 prefs->RegisterLocalizedIntegerPref(prefs::kWebKitMinimumLogicalFontSize, | |
| 486 IDS_MINIMUM_LOGICAL_FONT_SIZE, | |
| 487 PrefService::UNSYNCABLE_PREF); | |
| 488 prefs->RegisterLocalizedBooleanPref(prefs::kWebKitUsesUniversalDetector, | |
| 489 IDS_USES_UNIVERSAL_DETECTOR, | |
| 490 PrefService::SYNCABLE_PREF); | |
| 491 prefs->RegisterLocalizedStringPref(prefs::kStaticEncodings, | |
| 492 IDS_STATIC_ENCODING_LIST, | |
| 493 PrefService::UNSYNCABLE_PREF); | |
| 494 prefs->RegisterStringPref(prefs::kRecentlySelectedEncoding, | |
| 495 "", | |
| 496 PrefService::UNSYNCABLE_PREF); | |
| 497 } | 181 } |
| 498 | 182 |
| 499 string16 TabContentsWrapper::GetDefaultTitle() { | 183 string16 TabContentsWrapper::GetDefaultTitle() { |
| 500 return l10n_util::GetStringUTF16(IDS_DEFAULT_TAB_TITLE); | 184 return l10n_util::GetStringUTF16(IDS_DEFAULT_TAB_TITLE); |
| 501 } | 185 } |
| 502 | 186 |
| 503 string16 TabContentsWrapper::GetStatusText() const { | 187 string16 TabContentsWrapper::GetStatusText() const { |
| 504 if (!tab_contents()->IsLoading() || | 188 if (!tab_contents()->IsLoading() || |
| 505 tab_contents()->load_state().state == net::LOAD_STATE_IDLE) { | 189 tab_contents()->load_state().state == net::LOAD_STATE_IDLE) { |
| 506 return string16(); | 190 return string16(); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 DCHECK(in_destructor_); | 297 DCHECK(in_destructor_); |
| 614 } | 298 } |
| 615 | 299 |
| 616 void TabContentsWrapper::Observe(int type, | 300 void TabContentsWrapper::Observe(int type, |
| 617 const content::NotificationSource& source, | 301 const content::NotificationSource& source, |
| 618 const content::NotificationDetails& details) { | 302 const content::NotificationDetails& details) { |
| 619 switch (type) { | 303 switch (type) { |
| 620 case chrome::NOTIFICATION_GOOGLE_URL_UPDATED: | 304 case chrome::NOTIFICATION_GOOGLE_URL_UPDATED: |
| 621 UpdateAlternateErrorPageURL(render_view_host()); | 305 UpdateAlternateErrorPageURL(render_view_host()); |
| 622 break; | 306 break; |
| 623 case chrome::NOTIFICATION_USER_STYLE_SHEET_UPDATED: | |
| 624 UpdateWebPreferences(); | |
| 625 break; | |
| 626 #if defined(OS_POSIX) && !defined(OS_MACOSX) | |
| 627 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | |
| 628 UpdateRendererPreferences(); | |
| 629 break; | |
| 630 } | |
| 631 #endif | |
| 632 case chrome::NOTIFICATION_PREF_CHANGED: { | 307 case chrome::NOTIFICATION_PREF_CHANGED: { |
| 633 std::string* pref_name_in = content::Details<std::string>(details).ptr(); | 308 std::string* pref_name_in = content::Details<std::string>(details).ptr(); |
| 634 DCHECK(content::Source<PrefService>(source).ptr() == | 309 DCHECK(content::Source<PrefService>(source).ptr() == |
| 635 profile()->GetPrefs() || | 310 profile()->GetPrefs()); |
| 636 content::Source<PrefService>(source).ptr() == | |
| 637 per_tab_prefs_tab_helper_->prefs()); | |
| 638 if (*pref_name_in == prefs::kAlternateErrorPagesEnabled) { | 311 if (*pref_name_in == prefs::kAlternateErrorPagesEnabled) { |
| 639 UpdateAlternateErrorPageURL(render_view_host()); | 312 UpdateAlternateErrorPageURL(render_view_host()); |
| 640 } else if ((*pref_name_in == prefs::kDefaultCharset) || | |
| 641 StartsWithASCII(*pref_name_in, "webkit.webprefs.", true)) { | |
| 642 UpdateWebPreferences(); | |
| 643 } else if (*pref_name_in == prefs::kDefaultZoomLevel) { | 313 } else if (*pref_name_in == prefs::kDefaultZoomLevel) { |
| 644 tab_contents()->render_view_host()->SetZoomLevel( | 314 tab_contents()->render_view_host()->SetZoomLevel( |
| 645 tab_contents()->GetZoomLevel()); | 315 tab_contents()->GetZoomLevel()); |
| 646 } else if (*pref_name_in == prefs::kEnableReferrers) { | |
| 647 UpdateRendererPreferences(); | |
| 648 } else if (*pref_name_in == prefs::kSafeBrowsingEnabled) { | 316 } else if (*pref_name_in == prefs::kSafeBrowsingEnabled) { |
| 649 UpdateSafebrowsingDetectionHost(); | 317 UpdateSafebrowsingDetectionHost(); |
| 650 } else { | 318 } else { |
| 651 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; | 319 NOTREACHED() << "unexpected pref change notification" << *pref_name_in; |
| 652 } | 320 } |
| 653 break; | 321 break; |
| 654 } | 322 } |
| 655 default: | 323 default: |
| 656 NOTREACHED(); | 324 NOTREACHED(); |
| 657 } | 325 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 683 GURL(google_util::kLinkDoctorBaseURL)); | 351 GURL(google_util::kLinkDoctorBaseURL)); |
| 684 url = google_util::AppendGoogleTLDParam(url); | 352 url = google_util::AppendGoogleTLDParam(url); |
| 685 } | 353 } |
| 686 return url; | 354 return url; |
| 687 } | 355 } |
| 688 | 356 |
| 689 void TabContentsWrapper::UpdateAlternateErrorPageURL(RenderViewHost* rvh) { | 357 void TabContentsWrapper::UpdateAlternateErrorPageURL(RenderViewHost* rvh) { |
| 690 rvh->SetAltErrorPageURL(GetAlternateErrorPageURL()); | 358 rvh->SetAltErrorPageURL(GetAlternateErrorPageURL()); |
| 691 } | 359 } |
| 692 | 360 |
| 693 void TabContentsWrapper::UpdateWebPreferences() { | |
| 694 RenderViewHostDelegate* rvhd = tab_contents(); | |
| 695 WebPreferences prefs = rvhd->GetWebkitPrefs(); | |
| 696 per_tab_prefs_tab_helper_->OverrideWebPreferences(&prefs); | |
| 697 tab_contents()->render_view_host()->UpdateWebkitPreferences(prefs); | |
| 698 } | |
| 699 | |
| 700 void TabContentsWrapper::UpdateRendererPreferences() { | |
| 701 renderer_preferences_util::UpdateFromSystemSettings( | |
| 702 tab_contents()->GetMutableRendererPrefs(), profile()); | |
| 703 render_view_host()->SyncRendererPrefs(); | |
| 704 } | |
| 705 | |
| 706 void TabContentsWrapper::UpdateSafebrowsingDetectionHost() { | 361 void TabContentsWrapper::UpdateSafebrowsingDetectionHost() { |
| 707 #if defined(ENABLE_SAFE_BROWSING) | 362 #if defined(ENABLE_SAFE_BROWSING) |
| 708 PrefService* prefs = profile()->GetPrefs(); | 363 PrefService* prefs = profile()->GetPrefs(); |
| 709 bool safe_browsing = prefs->GetBoolean(prefs::kSafeBrowsingEnabled); | 364 bool safe_browsing = prefs->GetBoolean(prefs::kSafeBrowsingEnabled); |
| 710 if (safe_browsing && | 365 if (safe_browsing && |
| 711 g_browser_process->safe_browsing_detection_service()) { | 366 g_browser_process->safe_browsing_detection_service()) { |
| 712 if (!safebrowsing_detection_host_.get()) { | 367 if (!safebrowsing_detection_host_.get()) { |
| 713 safebrowsing_detection_host_.reset( | 368 safebrowsing_detection_host_.reset( |
| 714 safe_browsing::ClientSideDetectionHost::Create(tab_contents())); | 369 safe_browsing::ClientSideDetectionHost::Create(tab_contents())); |
| 715 } | 370 } |
| 716 } else { | 371 } else { |
| 717 safebrowsing_detection_host_.reset(); | 372 safebrowsing_detection_host_.reset(); |
| 718 } | 373 } |
| 719 render_view_host()->Send( | 374 render_view_host()->Send( |
| 720 new ChromeViewMsg_SetClientSidePhishingDetection(routing_id(), | 375 new ChromeViewMsg_SetClientSidePhishingDetection(routing_id(), |
| 721 safe_browsing)); | 376 safe_browsing)); |
| 722 #endif | 377 #endif |
| 723 } | 378 } |
| 724 | 379 |
| 725 void TabContentsWrapper::ExitFullscreenMode() { | 380 void TabContentsWrapper::ExitFullscreenMode() { |
| 726 if (tab_contents() && render_view_host()) | 381 if (tab_contents() && render_view_host()) |
| 727 tab_contents()->render_view_host()->ExitFullscreen(); | 382 tab_contents()->render_view_host()->ExitFullscreen(); |
| 728 } | 383 } |
| OLD | NEW |