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

Side by Side Diff: chrome/browser/custom_handlers/protocol_handler_registry.cc

Issue 8371023: Calls to rph updating existing handlers are ignored. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 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/custom_handlers/protocol_handler_registry.h" 5 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 ProtocolHandlerRegistry::ProtocolHandlerList 77 ProtocolHandlerRegistry::ProtocolHandlerList
78 ProtocolHandlerRegistry::GetIgnoredHandlers() { 78 ProtocolHandlerRegistry::GetIgnoredHandlers() {
79 return ignored_protocol_handlers_; 79 return ignored_protocol_handlers_;
80 } 80 }
81 81
82 void ProtocolHandlerRegistry::RegisterProtocolHandler( 82 void ProtocolHandlerRegistry::RegisterProtocolHandler(
83 const ProtocolHandler& handler) { 83 const ProtocolHandler& handler) {
84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
85 DCHECK(CanSchemeBeOverridden(handler.protocol())); 85 DCHECK(CanSchemeBeOverridden(handler.protocol()));
86 DCHECK(!handler.IsEmpty()); 86 DCHECK(!handler.IsEmpty());
87 if (HasRegisteredEquivalent(handler)) { 87 if (IsRegistered(handler)) {
88 return; 88 return;
89 } 89 }
90 if (enabled_ && !delegate_->IsExternalHandlerRegistered(handler.protocol())) 90 if (enabled_ && !delegate_->IsExternalHandlerRegistered(handler.protocol()))
91 delegate_->RegisterExternalHandler(handler.protocol()); 91 delegate_->RegisterExternalHandler(handler.protocol());
92 InsertHandler(handler); 92 InsertHandler(handler);
93 } 93 }
94 94
95 void ProtocolHandlerRegistry::InsertHandler(const ProtocolHandler& handler) { 95 void ProtocolHandlerRegistry::InsertHandler(const ProtocolHandler& handler) {
96 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 96 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
97 ProtocolHandlerMultiMap::iterator p = 97 ProtocolHandlerMultiMap::iterator p =
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 Value* ProtocolHandlerRegistry::EncodeIgnoredHandlers() { 421 Value* ProtocolHandlerRegistry::EncodeIgnoredHandlers() {
422 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 422 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
423 ListValue* handlers = new ListValue(); 423 ListValue* handlers = new ListValue();
424 for (ProtocolHandlerList::iterator i = ignored_protocol_handlers_.begin(); 424 for (ProtocolHandlerList::iterator i = ignored_protocol_handlers_.begin();
425 i != ignored_protocol_handlers_.end(); ++i) { 425 i != ignored_protocol_handlers_.end(); ++i) {
426 handlers->Append(i->Encode()); 426 handlers->Append(i->Encode());
427 } 427 }
428 return handlers; 428 return handlers;
429 } 429 }
430 430
431 bool ProtocolHandlerRegistry::SilentlyHandleRegisterHandlerRequest(
432 const ProtocolHandler& handler) {
433 if (handler.IsEmpty() || !CanSchemeBeOverridden(handler.protocol()))
434 return true;
435
436 if (!enabled() || IsRegistered(handler) || HasIgnoredEquivalent(handler))
437 return true;
438
439 if (AttemptReplace(handler))
440 return true;
441
442 return false;
443 }
444
431 void ProtocolHandlerRegistry::OnAcceptRegisterProtocolHandler( 445 void ProtocolHandlerRegistry::OnAcceptRegisterProtocolHandler(
432 const ProtocolHandler& handler) { 446 const ProtocolHandler& handler) {
433 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 447 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
434 RegisterProtocolHandler(handler); 448 RegisterProtocolHandler(handler);
435 SetDefault(handler); 449 SetDefault(handler);
436 Save(); 450 Save();
437 NotifyChanged(); 451 NotifyChanged();
438 } 452 }
439 453
440 void ProtocolHandlerRegistry::OnDenyRegisterProtocolHandler( 454 void ProtocolHandlerRegistry::OnDenyRegisterProtocolHandler(
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 } 704 }
691 } else { 705 } else {
692 NOTREACHED(); 706 NOTREACHED();
693 } 707 }
694 } 708 }
695 709
696 void ProtocolHandlerRegistry::DefaultClientObserver::SetWorker( 710 void ProtocolHandlerRegistry::DefaultClientObserver::SetWorker(
697 ShellIntegration::DefaultProtocolClientWorker* worker) { 711 ShellIntegration::DefaultProtocolClientWorker* worker) {
698 worker_ = worker; 712 worker_ = worker;
699 } 713 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698