| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/dom_ui/downloads_dom_handler.h" | 5 #include "chrome/browser/dom_ui/downloads_dom_handler.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/singleton.h" | 9 #include "base/singleton.h" |
| 10 #include "base/string_piece.h" | 10 #include "base/string_piece.h" |
| 11 #include "base/thread.h" | 11 #include "base/thread.h" |
| 12 #include "base/utf_string_conversions.h" |
| 12 #include "base/values.h" | 13 #include "base/values.h" |
| 13 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
| 14 #include "chrome/browser/chrome_thread.h" | 15 #include "chrome/browser/chrome_thread.h" |
| 15 #include "chrome/browser/dom_ui/chrome_url_data_manager.h" | 16 #include "chrome/browser/dom_ui/chrome_url_data_manager.h" |
| 16 #include "chrome/browser/dom_ui/fileicon_source.h" | 17 #include "chrome/browser/dom_ui/fileicon_source.h" |
| 18 #include "chrome/browser/download/download_history.h" |
| 17 #include "chrome/browser/download/download_item.h" | 19 #include "chrome/browser/download/download_item.h" |
| 18 #include "chrome/browser/download/download_util.h" | 20 #include "chrome/browser/download/download_util.h" |
| 19 #include "chrome/browser/metrics/user_metrics.h" | 21 #include "chrome/browser/metrics/user_metrics.h" |
| 20 #include "chrome/browser/profile.h" | 22 #include "chrome/browser/profile.h" |
| 21 #include "chrome/browser/tab_contents/tab_contents.h" | 23 #include "chrome/browser/tab_contents/tab_contents.h" |
| 22 #include "chrome/common/jstemplate_builder.h" | 24 #include "chrome/common/jstemplate_builder.h" |
| 23 #include "chrome/common/url_constants.h" | 25 #include "chrome/common/url_constants.h" |
| 24 #include "grit/browser_resources.h" | 26 #include "grit/browser_resources.h" |
| 25 #include "grit/generated_resources.h" | 27 #include "grit/generated_resources.h" |
| 26 | 28 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 if (it == download_items_.end()) | 105 if (it == download_items_.end()) |
| 104 return; | 106 return; |
| 105 const int id = static_cast<int>(it - download_items_.begin()); | 107 const int id = static_cast<int>(it - download_items_.begin()); |
| 106 | 108 |
| 107 ListValue results_value; | 109 ListValue results_value; |
| 108 results_value.Append(download_util::CreateDownloadItemValue(download, id)); | 110 results_value.Append(download_util::CreateDownloadItemValue(download, id)); |
| 109 dom_ui_->CallJavascriptFunction(L"downloadUpdated", results_value); | 111 dom_ui_->CallJavascriptFunction(L"downloadUpdated", results_value); |
| 110 } | 112 } |
| 111 | 113 |
| 112 // A download has started or been deleted. Query our DownloadManager for the | 114 // A download has started or been deleted. Query our DownloadManager for the |
| 113 // current set of downloads, which will call us back in SetDownloads once it | 115 // current set of downloads. |
| 114 // has retrieved them. | |
| 115 void DownloadsDOMHandler::ModelChanged() { | 116 void DownloadsDOMHandler::ModelChanged() { |
| 116 ClearDownloadItems(); | 117 ClearDownloadItems(); |
| 117 download_manager_->GetDownloads(this, search_text_); | 118 download_manager_->download_history()->Search( |
| 119 WideToUTF16(search_text_), |
| 120 NewCallback(this, &DownloadsDOMHandler::OnSearchDownloadsComplete)); |
| 118 } | 121 } |
| 119 | 122 |
| 120 void DownloadsDOMHandler::SetDownloads( | 123 void DownloadsDOMHandler::OnSearchDownloadsComplete( |
| 121 std::vector<DownloadItem*>& downloads) { | 124 std::vector<DownloadItem*> downloads) { |
| 122 ClearDownloadItems(); | 125 ClearDownloadItems(); |
| 123 | 126 |
| 124 // Swap new downloads in. | 127 // Swap new downloads in. |
| 125 download_items_.swap(downloads); | 128 download_items_.swap(downloads); |
| 126 sort(download_items_.begin(), download_items_.end(), DownloadItemSorter()); | 129 sort(download_items_.begin(), download_items_.end(), DownloadItemSorter()); |
| 127 | 130 |
| 128 // Scan for any in progress downloads and add ourself to them as an observer. | 131 // Scan for any in progress downloads and add ourself to them as an observer. |
| 129 for (OrderedDownloads::iterator it = download_items_.begin(); | 132 for (OrderedDownloads::iterator it = download_items_.begin(); |
| 130 it != download_items_.end(); ++it) { | 133 it != download_items_.end(); ++it) { |
| 131 if (static_cast<int>(it - download_items_.begin()) > kMaxDownloads) | 134 if (static_cast<int>(it - download_items_.begin()) > kMaxDownloads) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 142 } | 145 } |
| 143 | 146 |
| 144 SendCurrentDownloads(); | 147 SendCurrentDownloads(); |
| 145 } | 148 } |
| 146 | 149 |
| 147 void DownloadsDOMHandler::HandleGetDownloads(const Value* value) { | 150 void DownloadsDOMHandler::HandleGetDownloads(const Value* value) { |
| 148 std::wstring new_search = ExtractStringValue(value); | 151 std::wstring new_search = ExtractStringValue(value); |
| 149 if (search_text_.compare(new_search) != 0) { | 152 if (search_text_.compare(new_search) != 0) { |
| 150 search_text_ = new_search; | 153 search_text_ = new_search; |
| 151 ClearDownloadItems(); | 154 ClearDownloadItems(); |
| 152 download_manager_->GetDownloads(this, search_text_); | 155 download_manager_->download_history()->Search( |
| 156 WideToUTF16(search_text_), |
| 157 NewCallback(this, &DownloadsDOMHandler::OnSearchDownloadsComplete)); |
| 153 } else { | 158 } else { |
| 154 SendCurrentDownloads(); | 159 SendCurrentDownloads(); |
| 155 } | 160 } |
| 156 } | 161 } |
| 157 | 162 |
| 158 void DownloadsDOMHandler::HandleOpenFile(const Value* value) { | 163 void DownloadsDOMHandler::HandleOpenFile(const Value* value) { |
| 159 DownloadItem* file = GetDownloadByValue(value); | 164 DownloadItem* file = GetDownloadByValue(value); |
| 160 if (file) | 165 if (file) |
| 161 download_manager_->OpenDownload(file, NULL); | 166 download_manager_->OpenDownload(file, NULL); |
| 162 } | 167 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 return NULL; | 251 return NULL; |
| 247 } | 252 } |
| 248 | 253 |
| 249 DownloadItem* DownloadsDOMHandler::GetDownloadByValue(const Value* value) { | 254 DownloadItem* DownloadsDOMHandler::GetDownloadByValue(const Value* value) { |
| 250 int id; | 255 int id; |
| 251 if (ExtractIntegerValue(value, &id)) { | 256 if (ExtractIntegerValue(value, &id)) { |
| 252 return GetDownloadById(id); | 257 return GetDownloadById(id); |
| 253 } | 258 } |
| 254 return NULL; | 259 return NULL; |
| 255 } | 260 } |
| OLD | NEW |