Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 329 | 329 |
| 330 if (AttemptReplace(handler)) | 330 if (AttemptReplace(handler)) |
| 331 return true; | 331 return true; |
| 332 | 332 |
| 333 return false; | 333 return false; |
| 334 } | 334 } |
| 335 | 335 |
| 336 void ProtocolHandlerRegistry::OnAcceptRegisterProtocolHandler( | 336 void ProtocolHandlerRegistry::OnAcceptRegisterProtocolHandler( |
| 337 const ProtocolHandler& handler) { | 337 const ProtocolHandler& handler) { |
| 338 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 338 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 339 RegisterProtocolHandler(handler); | 339 RegisterProtocolHandler(handler, false); |
| 340 SetDefault(handler); | 340 SetDefault(handler); |
| 341 Save(); | 341 Save(); |
| 342 NotifyChanged(); | 342 NotifyChanged(); |
| 343 } | 343 } |
| 344 | 344 |
| 345 void ProtocolHandlerRegistry::OnDenyRegisterProtocolHandler( | 345 void ProtocolHandlerRegistry::OnDenyRegisterProtocolHandler( |
| 346 const ProtocolHandler& handler) { | 346 const ProtocolHandler& handler) { |
| 347 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 347 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 348 RegisterProtocolHandler(handler); | 348 RegisterProtocolHandler(handler, false); |
| 349 Save(); | 349 Save(); |
| 350 NotifyChanged(); | 350 NotifyChanged(); |
| 351 } | 351 } |
| 352 | 352 |
| 353 void ProtocolHandlerRegistry::OnIgnoreRegisterProtocolHandler( | 353 void ProtocolHandlerRegistry::OnIgnoreRegisterProtocolHandler( |
| 354 const ProtocolHandler& handler) { | 354 const ProtocolHandler& handler) { |
| 355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 355 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 356 IgnoreProtocolHandler(handler); | 356 IgnoreProtocolHandler(handler, false); |
| 357 Save(); | 357 Save(); |
| 358 NotifyChanged(); | 358 NotifyChanged(); |
| 359 } | 359 } |
| 360 | 360 |
| 361 bool ProtocolHandlerRegistry::AttemptReplace(const ProtocolHandler& handler) { | 361 bool ProtocolHandlerRegistry::AttemptReplace(const ProtocolHandler& handler) { |
| 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 363 ProtocolHandler old_default = GetHandlerFor(handler.protocol()); | 363 ProtocolHandler old_default = GetHandlerFor(handler.protocol()); |
| 364 bool make_new_handler_default = handler.IsSameOrigin(old_default); | 364 bool make_new_handler_default = handler.IsSameOrigin(old_default); |
| 365 ProtocolHandlerList to_replace(GetReplacedHandlers(handler)); | 365 ProtocolHandlerList to_replace(GetReplacedHandlers(handler)); |
| 366 if (to_replace.empty()) | 366 if (to_replace.empty()) |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 436 is_loading_ = true; | 436 is_loading_ = true; |
| 437 | 437 |
| 438 PrefService* prefs = profile_->GetPrefs(); | 438 PrefService* prefs = profile_->GetPrefs(); |
| 439 if (prefs->HasPrefPath(prefs::kCustomHandlersEnabled)) { | 439 if (prefs->HasPrefPath(prefs::kCustomHandlersEnabled)) { |
| 440 if (prefs->GetBoolean(prefs::kCustomHandlersEnabled)) { | 440 if (prefs->GetBoolean(prefs::kCustomHandlersEnabled)) { |
| 441 Enable(); | 441 Enable(); |
| 442 } else { | 442 } else { |
| 443 Disable(); | 443 Disable(); |
| 444 } | 444 } |
| 445 } | 445 } |
| 446 std::vector<const base::DictionaryValue*> registered_handlers = | 446 std::vector<const base::DictionaryValue*> registered_handlers = |
|
koz (OOO until 15th September)
2014/05/22 00:51:31
It might be worth introducing some helper function
kaliamoorthi
2014/05/30 10:01:09
Done.
| |
| 447 GetHandlersFromPref(prefs::kRegisteredProtocolHandlers); | 447 GetHandlersFromPref(prefs::kPolicyRegisteredProtocolHandlers); |
| 448 for (std::vector<const base::DictionaryValue*>::const_iterator p = | 448 for (std::vector<const base::DictionaryValue*>::const_iterator p = |
| 449 registered_handlers.begin(); | 449 registered_handlers.begin(); |
| 450 p != registered_handlers.end(); ++p) { | 450 p != registered_handlers.end(); ++p) { |
| 451 ProtocolHandler handler = ProtocolHandler::CreateProtocolHandler(*p); | 451 ProtocolHandler handler = ProtocolHandler::CreateProtocolHandler(*p); |
| 452 RegisterProtocolHandler(handler); | 452 RegisterProtocolHandler(handler, true); |
| 453 bool is_default = false; | 453 bool is_default = false; |
| 454 if ((*p)->GetBoolean("default", &is_default) && is_default) { | 454 if ((*p)->GetBoolean("default", &is_default) && is_default) { |
| 455 SetDefault(handler); | 455 SetDefault(handler); |
| 456 } | 456 } |
| 457 } | 457 } |
| 458 std::vector<const base::DictionaryValue*> ignored_handlers = | 458 std::vector<const base::DictionaryValue*> ignored_handlers = |
| 459 GetHandlersFromPref(prefs::kIgnoredProtocolHandlers); | 459 GetHandlersFromPref(prefs::kPolicyIgnoredProtocolHandlers); |
| 460 for (std::vector<const base::DictionaryValue*>::const_iterator p = | 460 for (std::vector<const base::DictionaryValue*>::const_iterator p = |
| 461 ignored_handlers.begin(); | 461 ignored_handlers.begin(); |
| 462 p != ignored_handlers.end(); ++p) { | 462 p != ignored_handlers.end(); ++p) { |
| 463 IgnoreProtocolHandler(ProtocolHandler::CreateProtocolHandler(*p)); | 463 IgnoreProtocolHandler(ProtocolHandler::CreateProtocolHandler(*p), true); |
| 464 } | |
| 465 | |
| 466 registered_handlers = GetHandlersFromPref(prefs::kRegisteredProtocolHandlers); | |
| 467 for (std::vector<const base::DictionaryValue*>::const_iterator p = | |
| 468 registered_handlers.begin(); | |
| 469 p != registered_handlers.end(); | |
| 470 ++p) { | |
| 471 ProtocolHandler handler = ProtocolHandler::CreateProtocolHandler(*p); | |
| 472 RegisterProtocolHandler(handler, false); | |
| 473 bool is_default = false; | |
| 474 if ((*p)->GetBoolean("default", &is_default) && is_default) { | |
| 475 SetDefault(handler); | |
| 476 } | |
| 477 } | |
| 478 ignored_handlers = GetHandlersFromPref(prefs::kIgnoredProtocolHandlers); | |
| 479 for (std::vector<const base::DictionaryValue*>::const_iterator p = | |
| 480 ignored_handlers.begin(); | |
| 481 p != ignored_handlers.end(); | |
| 482 ++p) { | |
| 483 IgnoreProtocolHandler(ProtocolHandler::CreateProtocolHandler(*p), false); | |
| 464 } | 484 } |
| 465 is_loading_ = false; | 485 is_loading_ = false; |
| 466 | 486 |
| 467 // For each default protocol handler, check that we are still registered | 487 // For each default protocol handler, check that we are still registered |
| 468 // with the OS as the default application. | 488 // with the OS as the default application. |
| 469 if (ShouldRemoveHandlersNotInOS()) { | 489 if (ShouldRemoveHandlersNotInOS()) { |
| 470 for (ProtocolHandlerMap::const_iterator p = default_handlers_.begin(); | 490 for (ProtocolHandlerMap::const_iterator p = default_handlers_.begin(); |
| 471 p != default_handlers_.end(); ++p) { | 491 p != default_handlers_.end(); ++p) { |
| 472 ProtocolHandler handler = p->second; | 492 ProtocolHandler handler = p->second; |
| 473 DefaultClientObserver* observer = delegate_->CreateShellObserver(this); | 493 DefaultClientObserver* observer = delegate_->CreateShellObserver(this); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 584 return true; | 604 return true; |
| 585 } | 605 } |
| 586 } | 606 } |
| 587 return false; | 607 return false; |
| 588 } | 608 } |
| 589 | 609 |
| 590 void ProtocolHandlerRegistry::RemoveIgnoredHandler( | 610 void ProtocolHandlerRegistry::RemoveIgnoredHandler( |
| 591 const ProtocolHandler& handler) { | 611 const ProtocolHandler& handler) { |
| 592 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 612 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 593 bool should_notify = false; | 613 bool should_notify = false; |
| 594 ProtocolHandlerList::iterator p = std::find( | 614 if (HandlerExists(handler, ignored_protocol_handlers_)) { |
| 595 ignored_protocol_handlers_.begin(), ignored_protocol_handlers_.end(), | 615 if (HandlerExists(handler, user_ignored_protocol_handlers_)) { |
| 596 handler); | 616 EraseHandler(handler, &user_ignored_protocol_handlers_); |
| 597 if (p != ignored_protocol_handlers_.end()) { | 617 Save(); |
|
koz (OOO until 15th September)
2014/05/22 00:51:31
Save() should be called after removing handler fro
kaliamoorthi
2014/05/30 10:01:09
Please note that only user_ignored_protocol_handle
koz (OOO until 15th September)
2014/06/01 23:44:28
Ah, my bad. In that case feel free to revert to ho
| |
| 598 ignored_protocol_handlers_.erase(p); | 618 if (!HandlerExists(handler, policy_ignored_protocol_handlers_)) { |
| 599 Save(); | 619 EraseHandler(handler, &ignored_protocol_handlers_); |
| 600 should_notify = true; | 620 should_notify = true; |
| 621 } | |
| 622 } | |
| 601 } | 623 } |
| 602 if (should_notify) | 624 if (should_notify) |
| 603 NotifyChanged(); | 625 NotifyChanged(); |
| 604 } | 626 } |
| 605 | 627 |
| 606 bool ProtocolHandlerRegistry::IsHandledProtocol( | 628 bool ProtocolHandlerRegistry::IsHandledProtocol( |
| 607 const std::string& scheme) const { | 629 const std::string& scheme) const { |
| 608 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 630 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 609 return enabled_ && !GetHandlerFor(scheme).IsEmpty(); | 631 return enabled_ && !GetHandlerFor(scheme).IsEmpty(); |
| 610 } | 632 } |
| 611 | 633 |
| 612 void ProtocolHandlerRegistry::RemoveHandler( | 634 void ProtocolHandlerRegistry::RemoveHandler( |
| 613 const ProtocolHandler& handler) { | 635 const ProtocolHandler& handler) { |
| 614 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 636 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 615 ProtocolHandlerList& handlers = protocol_handlers_[handler.protocol()]; | 637 ProtocolHandlerList& handlers = protocol_handlers_[handler.protocol()]; |
| 616 ProtocolHandlerList::iterator p = | 638 bool erase_success = false; |
| 617 std::find(handlers.begin(), handlers.end(), handler); | 639 if (HandlerExists(handler, handlers)) { |
| 618 if (p != handlers.end()) { | 640 if (HandlerExists(handler, &user_protocol_handlers_)) { |
| 619 handlers.erase(p); | 641 EraseHandler(handler, &user_protocol_handlers_); |
| 642 if (!HandlerExists(handler, &policy_protocol_handlers_)) { | |
| 643 erase_success = true; | |
| 644 EraseHandler(handler, &protocol_handlers_); | |
| 645 } | |
| 646 } | |
| 620 } | 647 } |
| 621 ProtocolHandlerMap::iterator q = default_handlers_.find(handler.protocol()); | 648 ProtocolHandlerMap::iterator q = default_handlers_.find(handler.protocol()); |
| 622 if (q != default_handlers_.end() && q->second == handler) { | 649 if (erase_success && q != default_handlers_.end() && q->second == handler) { |
| 623 // Make the new top handler in the list the default. | 650 // Make the new top handler in the list the default. |
| 624 if (!handlers.empty()) { | 651 if (!handlers.empty()) { |
| 625 // NOTE We pass a copy because SetDefault() modifies handlers. | 652 // NOTE We pass a copy because SetDefault() modifies handlers. |
| 626 SetDefault(ProtocolHandler(handlers[0])); | 653 SetDefault(ProtocolHandler(handlers[0])); |
| 627 } else { | 654 } else { |
| 628 BrowserThread::PostTask( | 655 BrowserThread::PostTask( |
| 629 BrowserThread::IO, FROM_HERE, | 656 BrowserThread::IO, FROM_HERE, |
| 630 base::Bind(&IOThreadDelegate::ClearDefault, io_thread_delegate_, | 657 base::Bind(&IOThreadDelegate::ClearDefault, io_thread_delegate_, |
| 631 q->second.protocol())); | 658 q->second.protocol())); |
| 632 | 659 |
| 633 default_handlers_.erase(q); | 660 default_handlers_.erase(q); |
| 634 } | 661 } |
| 635 } | 662 } |
| 636 | 663 |
| 637 if (!IsHandledProtocol(handler.protocol())) { | 664 if (erase_success && !IsHandledProtocol(handler.protocol())) { |
| 638 delegate_->DeregisterExternalHandler(handler.protocol()); | 665 delegate_->DeregisterExternalHandler(handler.protocol()); |
| 639 } | 666 } |
| 640 Save(); | 667 Save(); |
| 641 NotifyChanged(); | 668 if (erase_success) |
| 669 NotifyChanged(); | |
| 642 } | 670 } |
| 643 | 671 |
| 644 void ProtocolHandlerRegistry::RemoveDefaultHandler(const std::string& scheme) { | 672 void ProtocolHandlerRegistry::RemoveDefaultHandler(const std::string& scheme) { |
| 645 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 673 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 646 ProtocolHandler current_default = GetHandlerFor(scheme); | 674 ProtocolHandler current_default = GetHandlerFor(scheme); |
| 647 if (!current_default.IsEmpty()) | 675 if (!current_default.IsEmpty()) |
| 648 RemoveHandler(current_default); | 676 RemoveHandler(current_default); |
| 649 } | 677 } |
| 650 | 678 |
| 651 const ProtocolHandler& ProtocolHandlerRegistry::GetHandlerFor( | 679 const ProtocolHandler& ProtocolHandlerRegistry::GetHandlerFor( |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 788 } | 816 } |
| 789 | 817 |
| 790 ProtocolHandlerList new_list; | 818 ProtocolHandlerList new_list; |
| 791 new_list.push_back(handler); | 819 new_list.push_back(handler); |
| 792 protocol_handlers_[handler.protocol()] = new_list; | 820 protocol_handlers_[handler.protocol()] = new_list; |
| 793 } | 821 } |
| 794 | 822 |
| 795 base::Value* ProtocolHandlerRegistry::EncodeRegisteredHandlers() { | 823 base::Value* ProtocolHandlerRegistry::EncodeRegisteredHandlers() { |
| 796 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 824 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 797 base::ListValue* protocol_handlers = new base::ListValue(); | 825 base::ListValue* protocol_handlers = new base::ListValue(); |
| 798 for (ProtocolHandlerMultiMap::iterator i = protocol_handlers_.begin(); | 826 for (ProtocolHandlerMultiMap::iterator i = user_protocol_handlers_.begin(); |
| 799 i != protocol_handlers_.end(); ++i) { | 827 i != user_protocol_handlers_.end(); |
| 828 ++i) { | |
| 800 for (ProtocolHandlerList::iterator j = i->second.begin(); | 829 for (ProtocolHandlerList::iterator j = i->second.begin(); |
| 801 j != i->second.end(); ++j) { | 830 j != i->second.end(); ++j) { |
| 802 base::DictionaryValue* encoded = j->Encode(); | 831 base::DictionaryValue* encoded = j->Encode(); |
| 803 if (IsDefault(*j)) { | 832 if (IsDefault(*j)) { |
| 804 encoded->Set("default", base::Value::CreateBooleanValue(true)); | 833 encoded->Set("default", base::Value::CreateBooleanValue(true)); |
| 805 } | 834 } |
| 806 protocol_handlers->Append(encoded); | 835 protocol_handlers->Append(encoded); |
| 807 } | 836 } |
| 808 } | 837 } |
| 809 return protocol_handlers; | 838 return protocol_handlers; |
| 810 } | 839 } |
| 811 | 840 |
| 812 base::Value* ProtocolHandlerRegistry::EncodeIgnoredHandlers() { | 841 base::Value* ProtocolHandlerRegistry::EncodeIgnoredHandlers() { |
| 813 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 842 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 814 base::ListValue* handlers = new base::ListValue(); | 843 base::ListValue* handlers = new base::ListValue(); |
| 815 for (ProtocolHandlerList::iterator i = ignored_protocol_handlers_.begin(); | 844 for (ProtocolHandlerList::iterator i = |
| 816 i != ignored_protocol_handlers_.end(); ++i) { | 845 user_ignored_protocol_handlers_.begin(); |
| 846 i != user_ignored_protocol_handlers_.end(); | |
| 847 ++i) { | |
| 817 handlers->Append(i->Encode()); | 848 handlers->Append(i->Encode()); |
| 818 } | 849 } |
| 819 return handlers; | 850 return handlers; |
| 820 } | 851 } |
| 821 | 852 |
| 822 void ProtocolHandlerRegistry::NotifyChanged() { | 853 void ProtocolHandlerRegistry::NotifyChanged() { |
| 823 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 854 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 824 content::NotificationService::current()->Notify( | 855 content::NotificationService::current()->Notify( |
| 825 chrome::NOTIFICATION_PROTOCOL_HANDLER_REGISTRY_CHANGED, | 856 chrome::NOTIFICATION_PROTOCOL_HANDLER_REGISTRY_CHANGED, |
| 826 content::Source<Profile>(profile_), | 857 content::Source<Profile>(profile_), |
| 827 content::NotificationService::NoDetails()); | 858 content::NotificationService::NoDetails()); |
| 828 } | 859 } |
| 829 | 860 |
| 830 void ProtocolHandlerRegistry::RegisterProtocolHandler( | 861 void ProtocolHandlerRegistry::RegisterProtocolHandler( |
| 831 const ProtocolHandler& handler) { | 862 const ProtocolHandler& handler, |
| 863 const bool policy_managed) { | |
| 832 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 864 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 833 DCHECK(CanSchemeBeOverridden(handler.protocol())); | 865 DCHECK(CanSchemeBeOverridden(handler.protocol())); |
| 834 DCHECK(!handler.IsEmpty()); | 866 DCHECK(!handler.IsEmpty()); |
| 867 ProtocolHandlerMultiMap& map = | |
| 868 policy_managed ? policy_protocol_handlers_ : user_protocol_handlers_; | |
| 869 ProtocolHandlerList& list = map[handler.protocol()]; | |
| 870 if (!HandlerExists(handler, list)) | |
| 871 list.push_back(handler); | |
| 835 if (IsRegistered(handler)) { | 872 if (IsRegistered(handler)) { |
| 836 return; | 873 return; |
| 837 } | 874 } |
| 838 if (enabled_ && !delegate_->IsExternalHandlerRegistered(handler.protocol())) | 875 if (enabled_ && !delegate_->IsExternalHandlerRegistered(handler.protocol())) |
| 839 delegate_->RegisterExternalHandler(handler.protocol()); | 876 delegate_->RegisterExternalHandler(handler.protocol()); |
| 840 InsertHandler(handler); | 877 InsertHandler(handler); |
| 841 } | 878 } |
| 842 | 879 |
| 843 std::vector<const base::DictionaryValue*> | 880 std::vector<const base::DictionaryValue*> |
| 844 ProtocolHandlerRegistry::GetHandlersFromPref(const char* pref_name) const { | 881 ProtocolHandlerRegistry::GetHandlersFromPref(const char* pref_name) const { |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 857 continue; | 894 continue; |
| 858 if (ProtocolHandler::IsValidDict(dict)) { | 895 if (ProtocolHandler::IsValidDict(dict)) { |
| 859 result.push_back(dict); | 896 result.push_back(dict); |
| 860 } | 897 } |
| 861 } | 898 } |
| 862 } | 899 } |
| 863 return result; | 900 return result; |
| 864 } | 901 } |
| 865 | 902 |
| 866 void ProtocolHandlerRegistry::IgnoreProtocolHandler( | 903 void ProtocolHandlerRegistry::IgnoreProtocolHandler( |
| 867 const ProtocolHandler& handler) { | 904 const ProtocolHandler& handler, |
| 905 const bool policy_managed) { | |
| 868 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 906 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 869 ignored_protocol_handlers_.push_back(handler); | 907 ignored_protocol_handlers_.push_back(handler); |
| 908 ProtocolHandlerList& list = policy_managed ? policy_ignored_protocol_handlers_ | |
| 909 : user_ignored_protocol_handlers_; | |
| 910 if (!HandlerExists(handler, list)) | |
| 911 list.push_back(handler); | |
| 912 } | |
| 913 | |
| 914 bool ProtocolHandlerRegistry::HandlerExists(const ProtocolHandler& handler, | |
| 915 ProtocolHandlerMultiMap* map) { | |
| 916 return HandlerExists(handler, (*map)[handler.protocol()]); | |
| 917 } | |
| 918 | |
| 919 bool ProtocolHandlerRegistry::HandlerExists(const ProtocolHandler& handler, | |
| 920 const ProtocolHandlerList& list) { | |
| 921 return (std::find(list.begin(), list.end(), handler) != list.end()); | |
|
koz (OOO until 15th September)
2014/05/22 00:51:31
nit: no need for parens
kaliamoorthi
2014/05/30 10:01:09
Done.
| |
| 922 } | |
| 923 | |
| 924 void ProtocolHandlerRegistry::EraseHandler(const ProtocolHandler& handler, | |
| 925 ProtocolHandlerMultiMap* map) { | |
| 926 EraseHandler(handler, &(*map)[handler.protocol()]); | |
| 927 } | |
| 928 | |
| 929 void ProtocolHandlerRegistry::EraseHandler(const ProtocolHandler& handler, | |
| 930 ProtocolHandlerList* list) { | |
| 931 ProtocolHandlerList::iterator p = | |
| 932 std::find(list->begin(), list->end(), handler); | |
| 933 list->erase(p); | |
| 870 } | 934 } |
| 871 | 935 |
| 872 void ProtocolHandlerRegistry::AddPredefinedHandler( | 936 void ProtocolHandlerRegistry::AddPredefinedHandler( |
| 873 const ProtocolHandler& handler) { | 937 const ProtocolHandler& handler) { |
| 874 DCHECK(!is_loaded_); // Must be called prior InitProtocolSettings. | 938 DCHECK(!is_loaded_); // Must be called prior InitProtocolSettings. |
| 875 RegisterProtocolHandler(handler); | 939 RegisterProtocolHandler(handler, false); |
| 876 SetDefault(handler); | 940 SetDefault(handler); |
| 877 } | 941 } |
| 878 | 942 |
| 879 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> | 943 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
| 880 ProtocolHandlerRegistry::CreateJobInterceptorFactory() { | 944 ProtocolHandlerRegistry::CreateJobInterceptorFactory() { |
| 881 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 945 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 882 // this is always created on the UI thread (in profile_io's | 946 // this is always created on the UI thread (in profile_io's |
| 883 // InitializeOnUIThread. Any method calls must be done | 947 // InitializeOnUIThread. Any method calls must be done |
| 884 // on the IO thread (this is checked). | 948 // on the IO thread (this is checked). |
| 885 return scoped_ptr<JobInterceptorFactory>( | 949 return scoped_ptr<JobInterceptorFactory>( |
| 886 new JobInterceptorFactory(io_thread_delegate_.get())); | 950 new JobInterceptorFactory(io_thread_delegate_.get())); |
| 887 } | 951 } |
| OLD | NEW |