| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "app/text_elider.h" | 9 #include "app/text_elider.h" |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 DOMUI* dom_ui = GetDOMUIForCurrentState(); | 944 DOMUI* dom_ui = GetDOMUIForCurrentState(); |
| 945 if (dom_ui) | 945 if (dom_ui) |
| 946 return dom_ui->focus_location_bar_by_default(); | 946 return dom_ui->focus_location_bar_by_default(); |
| 947 NavigationEntry* entry = controller_.GetActiveEntry(); | 947 NavigationEntry* entry = controller_.GetActiveEntry(); |
| 948 if (entry && entry->url() == GURL(chrome::kAboutBlankURL)) | 948 if (entry && entry->url() == GURL(chrome::kAboutBlankURL)) |
| 949 return true; | 949 return true; |
| 950 return false; | 950 return false; |
| 951 } | 951 } |
| 952 | 952 |
| 953 void TabContents::AddInfoBar(InfoBarDelegate* delegate) { | 953 void TabContents::AddInfoBar(InfoBarDelegate* delegate) { |
| 954 if (delegate_ && !delegate_->infobars_enabled()) { | |
| 955 delegate->InfoBarClosed(); | |
| 956 return; | |
| 957 } | |
| 958 | |
| 959 // Look through the existing InfoBarDelegates we have for a match. If we've | 954 // Look through the existing InfoBarDelegates we have for a match. If we've |
| 960 // already got one that matches, then we don't add the new one. | 955 // already got one that matches, then we don't add the new one. |
| 961 for (int i = 0; i < infobar_delegate_count(); ++i) { | 956 for (int i = 0; i < infobar_delegate_count(); ++i) { |
| 962 if (GetInfoBarDelegateAt(i)->EqualsDelegate(delegate)) { | 957 if (GetInfoBarDelegateAt(i)->EqualsDelegate(delegate)) { |
| 963 // Tell the new infobar to close so that it can clean itself up. | 958 // Tell the new infobar to close so that it can clean itself up. |
| 964 delegate->InfoBarClosed(); | 959 delegate->InfoBarClosed(); |
| 965 return; | 960 return; |
| 966 } | 961 } |
| 967 } | 962 } |
| 968 | 963 |
| 969 infobar_delegates_.push_back(delegate); | 964 infobar_delegates_.push_back(delegate); |
| 970 NotificationService::current()->Notify( | 965 NotificationService::current()->Notify( |
| 971 NotificationType::TAB_CONTENTS_INFOBAR_ADDED, | 966 NotificationType::TAB_CONTENTS_INFOBAR_ADDED, |
| 972 Source<TabContents>(this), | 967 Source<TabContents>(this), |
| 973 Details<InfoBarDelegate>(delegate)); | 968 Details<InfoBarDelegate>(delegate)); |
| 974 | 969 |
| 975 // Add ourselves as an observer for navigations the first time a delegate is | 970 // Add ourselves as an observer for navigations the first time a delegate is |
| 976 // added. We use this notification to expire InfoBars that need to expire on | 971 // added. We use this notification to expire InfoBars that need to expire on |
| 977 // page transitions. | 972 // page transitions. |
| 978 if (infobar_delegates_.size() == 1) { | 973 if (infobar_delegates_.size() == 1) { |
| 979 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, | 974 registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED, |
| 980 Source<NavigationController>(&controller_)); | 975 Source<NavigationController>(&controller_)); |
| 981 } | 976 } |
| 982 } | 977 } |
| 983 | 978 |
| 984 void TabContents::RemoveInfoBar(InfoBarDelegate* delegate) { | 979 void TabContents::RemoveInfoBar(InfoBarDelegate* delegate) { |
| 985 if (delegate_ && !delegate_->infobars_enabled()) { | |
| 986 return; | |
| 987 } | |
| 988 | |
| 989 std::vector<InfoBarDelegate*>::iterator it = | 980 std::vector<InfoBarDelegate*>::iterator it = |
| 990 find(infobar_delegates_.begin(), infobar_delegates_.end(), delegate); | 981 find(infobar_delegates_.begin(), infobar_delegates_.end(), delegate); |
| 991 if (it != infobar_delegates_.end()) { | 982 if (it != infobar_delegates_.end()) { |
| 992 InfoBarDelegate* delegate = *it; | 983 InfoBarDelegate* delegate = *it; |
| 993 NotificationService::current()->Notify( | 984 NotificationService::current()->Notify( |
| 994 NotificationType::TAB_CONTENTS_INFOBAR_REMOVED, | 985 NotificationType::TAB_CONTENTS_INFOBAR_REMOVED, |
| 995 Source<TabContents>(this), | 986 Source<TabContents>(this), |
| 996 Details<InfoBarDelegate>(delegate)); | 987 Details<InfoBarDelegate>(delegate)); |
| 997 infobar_delegates_.erase(it); | 988 infobar_delegates_.erase(it); |
| 998 | 989 |
| 999 // Remove ourselves as an observer if we are tracking no more InfoBars. | 990 // Remove ourselves as an observer if we are tracking no more InfoBars. |
| 1000 if (infobar_delegates_.empty()) { | 991 if (infobar_delegates_.empty()) { |
| 1001 registrar_.Remove(this, NotificationType::NAV_ENTRY_COMMITTED, | 992 registrar_.Remove(this, NotificationType::NAV_ENTRY_COMMITTED, |
| 1002 Source<NavigationController>(&controller_)); | 993 Source<NavigationController>(&controller_)); |
| 1003 } | 994 } |
| 1004 } | 995 } |
| 1005 } | 996 } |
| 1006 | 997 |
| 1007 void TabContents::ReplaceInfoBar(InfoBarDelegate* old_delegate, | 998 void TabContents::ReplaceInfoBar(InfoBarDelegate* old_delegate, |
| 1008 InfoBarDelegate* new_delegate) { | 999 InfoBarDelegate* new_delegate) { |
| 1009 if (delegate_ && !delegate_->infobars_enabled()) { | |
| 1010 new_delegate->InfoBarClosed(); | |
| 1011 return; | |
| 1012 } | |
| 1013 | |
| 1014 std::vector<InfoBarDelegate*>::iterator it = | 1000 std::vector<InfoBarDelegate*>::iterator it = |
| 1015 find(infobar_delegates_.begin(), infobar_delegates_.end(), old_delegate); | 1001 find(infobar_delegates_.begin(), infobar_delegates_.end(), old_delegate); |
| 1016 DCHECK(it != infobar_delegates_.end()); | 1002 DCHECK(it != infobar_delegates_.end()); |
| 1017 | 1003 |
| 1018 // Notify the container about the change of plans. | 1004 // Notify the container about the change of plans. |
| 1019 scoped_ptr<std::pair<InfoBarDelegate*, InfoBarDelegate*> > details( | 1005 scoped_ptr<std::pair<InfoBarDelegate*, InfoBarDelegate*> > details( |
| 1020 new std::pair<InfoBarDelegate*, InfoBarDelegate*>( | 1006 new std::pair<InfoBarDelegate*, InfoBarDelegate*>( |
| 1021 old_delegate, new_delegate)); | 1007 old_delegate, new_delegate)); |
| 1022 NotificationService::current()->Notify( | 1008 NotificationService::current()->Notify( |
| 1023 NotificationType::TAB_CONTENTS_INFOBAR_REPLACED, | 1009 NotificationType::TAB_CONTENTS_INFOBAR_REPLACED, |
| (...skipping 1878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2902 } | 2888 } |
| 2903 | 2889 |
| 2904 void TabContents::set_encoding(const std::string& encoding) { | 2890 void TabContents::set_encoding(const std::string& encoding) { |
| 2905 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); | 2891 encoding_ = CharacterEncoding::GetCanonicalEncodingNameByAliasName(encoding); |
| 2906 } | 2892 } |
| 2907 | 2893 |
| 2908 void TabContents::SetAppIcon(const SkBitmap& app_icon) { | 2894 void TabContents::SetAppIcon(const SkBitmap& app_icon) { |
| 2909 app_icon_ = app_icon; | 2895 app_icon_ = app_icon; |
| 2910 NotifyNavigationStateChanged(INVALIDATE_TITLE); | 2896 NotifyNavigationStateChanged(INVALIDATE_TITLE); |
| 2911 } | 2897 } |
| OLD | NEW |