| OLD | NEW |
| 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 #ifndef CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_ | 5 #ifndef CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_ |
| 6 #define CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_ | 6 #define CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/memory/scoped_callback_factory.h" | 11 #include "base/memory/scoped_callback_factory.h" |
| 12 #include "chrome/browser/download/download_item.h" | 12 #include "chrome/browser/download/download_item.h" |
| 13 #include "chrome/browser/download/download_manager.h" | 13 #include "chrome/browser/download/download_manager.h" |
| 14 #include "content/browser/webui/web_ui.h" | 14 #include "content/browser/webui/web_ui.h" |
| 15 | 15 |
| 16 namespace base { |
| 16 class ListValue; | 17 class ListValue; |
| 18 } |
| 17 | 19 |
| 18 // The handler for Javascript messages related to the "downloads" view, | 20 // The handler for Javascript messages related to the "downloads" view, |
| 19 // also observes changes to the download manager. | 21 // also observes changes to the download manager. |
| 20 class DownloadsDOMHandler : public WebUIMessageHandler, | 22 class DownloadsDOMHandler : public WebUIMessageHandler, |
| 21 public DownloadManager::Observer, | 23 public DownloadManager::Observer, |
| 22 public DownloadItem::Observer { | 24 public DownloadItem::Observer { |
| 23 public: | 25 public: |
| 24 explicit DownloadsDOMHandler(DownloadManager* dlm); | 26 explicit DownloadsDOMHandler(DownloadManager* dlm); |
| 25 virtual ~DownloadsDOMHandler(); | 27 virtual ~DownloadsDOMHandler(); |
| 26 | 28 |
| 27 void Init(); | 29 void Init(); |
| 28 | 30 |
| 29 // WebUIMessageHandler implementation. | 31 // WebUIMessageHandler implementation. |
| 30 virtual void RegisterMessages(); | 32 virtual void RegisterMessages(); |
| 31 | 33 |
| 32 // DownloadItem::Observer interface | 34 // DownloadItem::Observer interface |
| 33 virtual void OnDownloadUpdated(DownloadItem* download); | 35 virtual void OnDownloadUpdated(DownloadItem* download); |
| 34 virtual void OnDownloadOpened(DownloadItem* download) { } | 36 virtual void OnDownloadOpened(DownloadItem* download) { } |
| 35 | 37 |
| 36 // DownloadManager::Observer interface | 38 // DownloadManager::Observer interface |
| 37 virtual void ModelChanged(); | 39 virtual void ModelChanged(); |
| 38 | 40 |
| 39 // Callback for the "getDownloads" message. | 41 // Callback for the "getDownloads" message. |
| 40 void HandleGetDownloads(const ListValue* args); | 42 void HandleGetDownloads(const base::ListValue* args); |
| 41 | 43 |
| 42 // Callback for the "openFile" message - opens the file in the shell. | 44 // Callback for the "openFile" message - opens the file in the shell. |
| 43 void HandleOpenFile(const ListValue* args); | 45 void HandleOpenFile(const base::ListValue* args); |
| 44 | 46 |
| 45 // Callback for the "drag" message - initiates a file object drag. | 47 // Callback for the "drag" message - initiates a file object drag. |
| 46 void HandleDrag(const ListValue* args); | 48 void HandleDrag(const base::ListValue* args); |
| 47 | 49 |
| 48 // Callback for the "saveDangerous" message - specifies that the user | 50 // Callback for the "saveDangerous" message - specifies that the user |
| 49 // wishes to save a dangerous file. | 51 // wishes to save a dangerous file. |
| 50 void HandleSaveDangerous(const ListValue* args); | 52 void HandleSaveDangerous(const base::ListValue* args); |
| 51 | 53 |
| 52 // Callback for the "discardDangerous" message - specifies that the user | 54 // Callback for the "discardDangerous" message - specifies that the user |
| 53 // wishes to discard (remove) a dangerous file. | 55 // wishes to discard (remove) a dangerous file. |
| 54 void HandleDiscardDangerous(const ListValue* args); | 56 void HandleDiscardDangerous(const base::ListValue* args); |
| 55 | 57 |
| 56 // Callback for the "show" message - shows the file in explorer. | 58 // Callback for the "show" message - shows the file in explorer. |
| 57 void HandleShow(const ListValue* args); | 59 void HandleShow(const base::ListValue* args); |
| 58 | 60 |
| 59 // Callback for the "pause" message - pauses the file download. | 61 // Callback for the "pause" message - pauses the file download. |
| 60 void HandlePause(const ListValue* args); | 62 void HandlePause(const base::ListValue* args); |
| 61 | 63 |
| 62 // Callback for the "remove" message - removes the file download from shelf | 64 // Callback for the "remove" message - removes the file download from shelf |
| 63 // and list. | 65 // and list. |
| 64 void HandleRemove(const ListValue* args); | 66 void HandleRemove(const base::ListValue* args); |
| 65 | 67 |
| 66 // Callback for the "cancel" message - cancels the download. | 68 // Callback for the "cancel" message - cancels the download. |
| 67 void HandleCancel(const ListValue* args); | 69 void HandleCancel(const base::ListValue* args); |
| 68 | 70 |
| 69 // Callback for the "clearAll" message - clears all the downloads. | 71 // Callback for the "clearAll" message - clears all the downloads. |
| 70 void HandleClearAll(const ListValue* args); | 72 void HandleClearAll(const base::ListValue* args); |
| 71 | 73 |
| 72 private: | 74 private: |
| 73 // Send the current list of downloads to the page. | 75 // Send the current list of downloads to the page. |
| 74 void SendCurrentDownloads(); | 76 void SendCurrentDownloads(); |
| 75 | 77 |
| 76 // Clear all download items and their observers. | 78 // Clear all download items and their observers. |
| 77 void ClearDownloadItems(); | 79 void ClearDownloadItems(); |
| 78 | 80 |
| 79 // Return the download that corresponds to a given id. | 81 // Return the download that corresponds to a given id. |
| 80 DownloadItem* GetDownloadById(int id); | 82 DownloadItem* GetDownloadById(int id); |
| 81 | 83 |
| 82 // Return the download that is referred to in a given value. | 84 // Return the download that is referred to in a given value. |
| 83 DownloadItem* GetDownloadByValue(const ListValue* args); | 85 DownloadItem* GetDownloadByValue(const base::ListValue* args); |
| 84 | 86 |
| 85 // Current search text. | 87 // Current search text. |
| 86 std::wstring search_text_; | 88 std::wstring search_text_; |
| 87 | 89 |
| 88 // Our model | 90 // Our model |
| 89 DownloadManager* download_manager_; | 91 DownloadManager* download_manager_; |
| 90 | 92 |
| 91 // The current set of visible DownloadItems for this view received from the | 93 // The current set of visible DownloadItems for this view received from the |
| 92 // DownloadManager. DownloadManager owns the DownloadItems. The vector is | 94 // DownloadManager. DownloadManager owns the DownloadItems. The vector is |
| 93 // kept in order, sorted by ascending start time. | 95 // kept in order, sorted by ascending start time. |
| 94 // Note that when a download item is removed, the entry in the vector becomes | 96 // Note that when a download item is removed, the entry in the vector becomes |
| 95 // null. This should only be a transient state, as a ModelChanged() | 97 // null. This should only be a transient state, as a ModelChanged() |
| 96 // notification should follow close on the heels of such a change. | 98 // notification should follow close on the heels of such a change. |
| 97 typedef std::vector<DownloadItem*> OrderedDownloads; | 99 typedef std::vector<DownloadItem*> OrderedDownloads; |
| 98 OrderedDownloads download_items_; | 100 OrderedDownloads download_items_; |
| 99 | 101 |
| 100 base::ScopedCallbackFactory<DownloadsDOMHandler> callback_factory_; | 102 base::ScopedCallbackFactory<DownloadsDOMHandler> callback_factory_; |
| 101 | 103 |
| 102 DISALLOW_COPY_AND_ASSIGN(DownloadsDOMHandler); | 104 DISALLOW_COPY_AND_ASSIGN(DownloadsDOMHandler); |
| 103 }; | 105 }; |
| 104 | 106 |
| 105 #endif // CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_ | 107 #endif // CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_ |
| OLD | NEW |