| 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/custom_home_pages_table_model.h" | 5 #include "chrome/browser/custom_home_pages_table_model.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/table_model_observer.h" | 9 #include "app/table_model_observer.h" |
| 10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "net/base/net_util.h" | 23 #include "net/base/net_util.h" |
| 24 #include "third_party/skia/include/core/SkBitmap.h" | 24 #include "third_party/skia/include/core/SkBitmap.h" |
| 25 | 25 |
| 26 struct CustomHomePagesTableModel::Entry { | 26 struct CustomHomePagesTableModel::Entry { |
| 27 Entry() : title_handle(0), fav_icon_handle(0) {} | 27 Entry() : title_handle(0), fav_icon_handle(0) {} |
| 28 | 28 |
| 29 // URL of the page. | 29 // URL of the page. |
| 30 GURL url; | 30 GURL url; |
| 31 | 31 |
| 32 // Page title. If this is empty, we'll display the URL as the entry. | 32 // Page title. If this is empty, we'll display the URL as the entry. |
| 33 std::wstring title; | 33 string16 title; |
| 34 | 34 |
| 35 // Icon for the page. | 35 // Icon for the page. |
| 36 SkBitmap icon; | 36 SkBitmap icon; |
| 37 | 37 |
| 38 // If non-zero, indicates we're loading the title for the page. | 38 // If non-zero, indicates we're loading the title for the page. |
| 39 HistoryService::Handle title_handle; | 39 HistoryService::Handle title_handle; |
| 40 | 40 |
| 41 // If non-zero, indicates we're loading the favicon for the page. | 41 // If non-zero, indicates we're loading the favicon for the page. |
| 42 FaviconService::Handle fav_icon_handle; | 42 FaviconService::Handle fav_icon_handle; |
| 43 }; | 43 }; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 std::vector<GURL> urls(entries_.size()); | 123 std::vector<GURL> urls(entries_.size()); |
| 124 for (size_t i = 0; i < entries_.size(); ++i) | 124 for (size_t i = 0; i < entries_.size(); ++i) |
| 125 urls[i] = entries_[i].url; | 125 urls[i] = entries_[i].url; |
| 126 return urls; | 126 return urls; |
| 127 } | 127 } |
| 128 | 128 |
| 129 int CustomHomePagesTableModel::RowCount() { | 129 int CustomHomePagesTableModel::RowCount() { |
| 130 return static_cast<int>(entries_.size()); | 130 return static_cast<int>(entries_.size()); |
| 131 } | 131 } |
| 132 | 132 |
| 133 std::wstring CustomHomePagesTableModel::GetText(int row, int column_id) { | 133 string16 CustomHomePagesTableModel::GetText(int row, int column_id) { |
| 134 DCHECK(column_id == 0); | 134 DCHECK(column_id == 0); |
| 135 DCHECK(row >= 0 && row < RowCount()); | 135 DCHECK(row >= 0 && row < RowCount()); |
| 136 return entries_[row].title.empty() ? FormattedURL(row) : entries_[row].title; | 136 return entries_[row].title.empty() ? FormattedURL(row) : entries_[row].title; |
| 137 } | 137 } |
| 138 | 138 |
| 139 SkBitmap CustomHomePagesTableModel::GetIcon(int row) { | 139 SkBitmap CustomHomePagesTableModel::GetIcon(int row) { |
| 140 DCHECK(row >= 0 && row < RowCount()); | 140 DCHECK(row >= 0 && row < RowCount()); |
| 141 return entries_[row].icon.isNull() ? *default_favicon_ : entries_[row].icon; | 141 return entries_[row].icon.isNull() ? *default_favicon_ : entries_[row].icon; |
| 142 } | 142 } |
| 143 | 143 |
| 144 std::wstring CustomHomePagesTableModel::GetTooltip(int row) { | 144 string16 CustomHomePagesTableModel::GetTooltip(int row) { |
| 145 return entries_[row].title.empty() ? std::wstring() : UTF16ToWideHack( | 145 return entries_[row].title.empty() ? string16() : |
| 146 l10n_util::GetStringFUTF16(IDS_OPTIONS_STARTUP_PAGE_TOOLTIP, | 146 l10n_util::GetStringFUTF16(IDS_OPTIONS_STARTUP_PAGE_TOOLTIP, |
| 147 WideToUTF16Hack(entries_[row].title), | 147 entries_[row].title, FormattedURL(row)); |
| 148 WideToUTF16Hack(FormattedURL(row)))); | |
| 149 } | 148 } |
| 150 | 149 |
| 151 void CustomHomePagesTableModel::SetObserver(TableModelObserver* observer) { | 150 void CustomHomePagesTableModel::SetObserver(TableModelObserver* observer) { |
| 152 observer_ = observer; | 151 observer_ = observer; |
| 153 } | 152 } |
| 154 | 153 |
| 155 void CustomHomePagesTableModel::LoadTitleAndFavIcon(Entry* entry) { | 154 void CustomHomePagesTableModel::LoadTitleAndFavIcon(Entry* entry) { |
| 156 HistoryService* history_service = | 155 HistoryService* history_service = |
| 157 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS); | 156 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS); |
| 158 if (history_service) { | 157 if (history_service) { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 175 history::VisitVector* visits) { | 174 history::VisitVector* visits) { |
| 176 int entry_index; | 175 int entry_index; |
| 177 Entry* entry = | 176 Entry* entry = |
| 178 GetEntryByLoadHandle(&Entry::title_handle, handle, &entry_index); | 177 GetEntryByLoadHandle(&Entry::title_handle, handle, &entry_index); |
| 179 if (!entry) { | 178 if (!entry) { |
| 180 // The URLs changed before we were called back. | 179 // The URLs changed before we were called back. |
| 181 return; | 180 return; |
| 182 } | 181 } |
| 183 entry->title_handle = 0; | 182 entry->title_handle = 0; |
| 184 if (found_url && !row->title().empty()) { | 183 if (found_url && !row->title().empty()) { |
| 185 entry->title = UTF16ToWide(row->title()); | 184 entry->title = row->title(); |
| 186 if (observer_) | 185 if (observer_) |
| 187 observer_->OnItemsChanged(static_cast<int>(entry_index), 1); | 186 observer_->OnItemsChanged(static_cast<int>(entry_index), 1); |
| 188 } | 187 } |
| 189 } | 188 } |
| 190 | 189 |
| 191 void CustomHomePagesTableModel::OnGotFavIcon( | 190 void CustomHomePagesTableModel::OnGotFavIcon( |
| 192 FaviconService::Handle handle, | 191 FaviconService::Handle handle, |
| 193 bool know_fav_icon, | 192 bool know_fav_icon, |
| 194 scoped_refptr<RefCountedMemory> image_data, | 193 scoped_refptr<RefCountedMemory> image_data, |
| 195 bool is_expired, | 194 bool is_expired, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 226 int* index) { | 225 int* index) { |
| 227 for (size_t i = 0; i < entries_.size(); ++i) { | 226 for (size_t i = 0; i < entries_.size(); ++i) { |
| 228 if (entries_[i].*member == handle) { | 227 if (entries_[i].*member == handle) { |
| 229 *index = static_cast<int>(i); | 228 *index = static_cast<int>(i); |
| 230 return &entries_[i]; | 229 return &entries_[i]; |
| 231 } | 230 } |
| 232 } | 231 } |
| 233 return NULL; | 232 return NULL; |
| 234 } | 233 } |
| 235 | 234 |
| 236 std::wstring CustomHomePagesTableModel::FormattedURL(int row) const { | 235 string16 CustomHomePagesTableModel::FormattedURL(int row) const { |
| 237 std::string languages = | 236 std::string languages = |
| 238 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); | 237 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); |
| 239 string16 url = net::FormatUrl(entries_[row].url, languages); | 238 string16 url = net::FormatUrl(entries_[row].url, languages); |
| 240 url = base::i18n::GetDisplayStringInLTRDirectionality(url); | 239 url = base::i18n::GetDisplayStringInLTRDirectionality(url); |
| 241 return UTF16ToWide(url); | 240 return url; |
| 242 } | 241 } |
| OLD | NEW |