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

Side by Side Diff: chrome/browser/tab_contents/tab_contents.cc

Issue 6410115: Adds navigator.registerProtocolHandler. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Responded to comments. Created 9 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 | Annotate | Revision Log
OLDNEW
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/tab_contents/tab_contents.h" 5 #include "chrome/browser/tab_contents/tab_contents.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "base/metrics/stats_counters.h" 11 #include "base/metrics/stats_counters.h"
12 #include "base/string16.h" 12 #include "base/string16.h"
13 #include "base/string_util.h" 13 #include "base/string_util.h"
14 #include "base/time.h" 14 #include "base/time.h"
15 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
16 #include "chrome/browser/autocomplete_history_manager.h" 16 #include "chrome/browser/autocomplete_history_manager.h"
17 #include "chrome/browser/autofill/autofill_manager.h" 17 #include "chrome/browser/autofill/autofill_manager.h"
18 #include "chrome/browser/blocked_content_container.h" 18 #include "chrome/browser/blocked_content_container.h"
19 #include "chrome/browser/browser_process.h" 19 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/browser_shutdown.h" 20 #include "chrome/browser/browser_shutdown.h"
21 #include "chrome/browser/character_encoding.h" 21 #include "chrome/browser/character_encoding.h"
22 #include "chrome/browser/child_process_security_policy.h" 22 #include "chrome/browser/child_process_security_policy.h"
23 #include "chrome/browser/content_settings/content_settings_details.h" 23 #include "chrome/browser/content_settings/content_settings_details.h"
24 #include "chrome/browser/content_settings/host_content_settings_map.h" 24 #include "chrome/browser/content_settings/host_content_settings_map.h"
25 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
26 #include "chrome/browser/custom_handlers/register_protocol_handler_infobar_deleg ate.h"
25 #include "chrome/browser/debugger/devtools_manager.h" 27 #include "chrome/browser/debugger/devtools_manager.h"
26 #include "chrome/browser/defaults.h" 28 #include "chrome/browser/defaults.h"
27 #include "chrome/browser/desktop_notification_handler.h" 29 #include "chrome/browser/desktop_notification_handler.h"
28 #include "chrome/browser/dom_operation_notification_details.h" 30 #include "chrome/browser/dom_operation_notification_details.h"
29 #include "chrome/browser/dom_ui/dom_ui.h" 31 #include "chrome/browser/dom_ui/dom_ui.h"
30 #include "chrome/browser/download/download_item_model.h" 32 #include "chrome/browser/download/download_item_model.h"
31 #include "chrome/browser/download/download_manager.h" 33 #include "chrome/browser/download/download_manager.h"
32 #include "chrome/browser/download/download_request_limiter.h" 34 #include "chrome/browser/download/download_request_limiter.h"
33 #include "chrome/browser/extensions/extension_service.h" 35 #include "chrome/browser/extensions/extension_service.h"
34 #include "chrome/browser/external_protocol_handler.h" 36 #include "chrome/browser/external_protocol_handler.h"
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 OnUpdateContentRestrictions) 527 OnUpdateContentRestrictions)
526 IPC_MESSAGE_HANDLER(ViewHostMsg_PDFHasUnsupportedFeature, 528 IPC_MESSAGE_HANDLER(ViewHostMsg_PDFHasUnsupportedFeature,
527 OnPDFHasUnsupportedFeature) 529 OnPDFHasUnsupportedFeature)
528 IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset, OnGoToEntryAtOffset) 530 IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset, OnGoToEntryAtOffset)
529 IPC_MESSAGE_HANDLER(ViewHostMsg_DidGetApplicationInfo, 531 IPC_MESSAGE_HANDLER(ViewHostMsg_DidGetApplicationInfo,
530 OnDidGetApplicationInfo) 532 OnDidGetApplicationInfo)
531 IPC_MESSAGE_HANDLER(ViewHostMsg_InstallApplication, 533 IPC_MESSAGE_HANDLER(ViewHostMsg_InstallApplication,
532 OnInstallApplication) 534 OnInstallApplication)
533 IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents) 535 IPC_MESSAGE_HANDLER(ViewHostMsg_PageContents, OnPageContents)
534 IPC_MESSAGE_HANDLER(ViewHostMsg_PageTranslated, OnPageTranslated) 536 IPC_MESSAGE_HANDLER(ViewHostMsg_PageTranslated, OnPageTranslated)
537 IPC_MESSAGE_HANDLER(ViewHostMsg_RegisterProtocolHandler,
538 OnRegisterProtocolHandler)
535 IPC_MESSAGE_HANDLER(ViewHostMsg_SetSuggestions, OnSetSuggestions) 539 IPC_MESSAGE_HANDLER(ViewHostMsg_SetSuggestions, OnSetSuggestions)
536 IPC_MESSAGE_HANDLER(ViewHostMsg_InstantSupportDetermined, 540 IPC_MESSAGE_HANDLER(ViewHostMsg_InstantSupportDetermined,
537 OnInstantSupportDetermined) 541 OnInstantSupportDetermined)
538 IPC_MESSAGE_HANDLER(ViewHostMsg_RunFileChooser, OnRunFileChooser) 542 IPC_MESSAGE_HANDLER(ViewHostMsg_RunFileChooser, OnRunFileChooser)
539 IPC_MESSAGE_UNHANDLED(handled = false) 543 IPC_MESSAGE_UNHANDLED(handled = false)
540 IPC_END_MESSAGE_MAP_EX() 544 IPC_END_MESSAGE_MAP_EX()
541 545
542 if (!message_is_ok) { 546 if (!message_is_ok) {
543 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RVD")); 547 UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_RVD"));
544 GetRenderProcessHost()->ReceivedBadMessage(); 548 GetRenderProcessHost()->ReceivedBadMessage();
(...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after
2163 TranslateErrors::Type error_type) { 2167 TranslateErrors::Type error_type) {
2164 language_state_.set_current_language(translated_lang); 2168 language_state_.set_current_language(translated_lang);
2165 language_state_.set_translation_pending(false); 2169 language_state_.set_translation_pending(false);
2166 PageTranslatedDetails details(original_lang, translated_lang, error_type); 2170 PageTranslatedDetails details(original_lang, translated_lang, error_type);
2167 NotificationService::current()->Notify( 2171 NotificationService::current()->Notify(
2168 NotificationType::PAGE_TRANSLATED, 2172 NotificationType::PAGE_TRANSLATED,
2169 Source<TabContents>(this), 2173 Source<TabContents>(this),
2170 Details<PageTranslatedDetails>(&details)); 2174 Details<PageTranslatedDetails>(&details));
2171 } 2175 }
2172 2176
2177 void TabContents::OnRegisterProtocolHandler(const std::string& protocol,
2178 const GURL& url,
2179 const string16& title) {
2180 ProtocolHandlerRegistry* registry = profile()->GetProtocolHandlerRegistry();
2181 if (!registry->CanSchemeBeOverridden(protocol)) {
2182 return;
2183 }
2184
2185 ProtocolHandler* handler = ProtocolHandler::CreateProtocolHandler(protocol,
2186 url, title);
2187 if (handler == NULL) {
2188 return;
2189 }
2190
2191 if (registry->IsAlreadyRegistered(handler)) {
2192 AddInfoBar(new SimpleAlertInfoBarDelegate(this, NULL,
2193 l10n_util::GetStringFUTF16(
2194 IDS_REGISTER_PROTOCOL_HANDLER_ALREADY_REGISTERED,
2195 handler->title(), UTF8ToUTF16(handler->protocol())), true));
2196 return;
2197 }
2198
2199 AddInfoBar(new RegisterProtocolHandlerInfoBarDelegate(this, registry,
2200 handler));
2201 }
2202
2173 void TabContents::OnSetSuggestions( 2203 void TabContents::OnSetSuggestions(
2174 int32 page_id, 2204 int32 page_id,
2175 const std::vector<std::string>& suggestions) { 2205 const std::vector<std::string>& suggestions) {
2176 if (delegate()) 2206 if (delegate())
2177 delegate()->OnSetSuggestions(page_id, suggestions); 2207 delegate()->OnSetSuggestions(page_id, suggestions);
2178 } 2208 }
2179 2209
2180 void TabContents::OnInstantSupportDetermined(int32 page_id, bool result) { 2210 void TabContents::OnInstantSupportDetermined(int32 page_id, bool result) {
2181 if (delegate()) 2211 if (delegate())
2182 delegate()->OnInstantSupportDetermined(page_id, result); 2212 delegate()->OnInstantSupportDetermined(page_id, result);
(...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after
3128 } 3158 }
3129 3159
3130 bool TabContents::MaybeUsePreloadedPage(const GURL& url) { 3160 bool TabContents::MaybeUsePreloadedPage(const GURL& url) {
3131 PrerenderManager* pm = profile()->GetPrerenderManager(); 3161 PrerenderManager* pm = profile()->GetPrerenderManager();
3132 if (pm != NULL) { 3162 if (pm != NULL) {
3133 if (pm->MaybeUsePreloadedPage(this, url)) 3163 if (pm->MaybeUsePreloadedPage(this, url))
3134 return true; 3164 return true;
3135 } 3165 }
3136 return false; 3166 return false;
3137 } 3167 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698