summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui/downloads_dom_handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/webui/downloads_dom_handler.h')
-rw-r--r--chrome/browser/ui/webui/downloads_dom_handler.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/chrome/browser/ui/webui/downloads_dom_handler.h b/chrome/browser/ui/webui/downloads_dom_handler.h
new file mode 100644
index 0000000..a47ff1b
--- /dev/null
+++ b/chrome/browser/ui/webui/downloads_dom_handler.h
@@ -0,0 +1,103 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_
+#pragma once
+
+#include <vector>
+
+#include "base/scoped_callback_factory.h"
+#include "chrome/browser/download/download_item.h"
+#include "chrome/browser/download/download_manager.h"
+#include "content/browser/webui/web_ui.h"
+
+class ListValue;
+
+// The handler for Javascript messages related to the "downloads" view,
+// also observes changes to the download manager.
+class DownloadsDOMHandler : public WebUIMessageHandler,
+ public DownloadManager::Observer,
+ public DownloadItem::Observer {
+ public:
+ explicit DownloadsDOMHandler(DownloadManager* dlm);
+ virtual ~DownloadsDOMHandler();
+
+ void Init();
+
+ // WebUIMessageHandler implementation.
+ virtual void RegisterMessages();
+
+ // DownloadItem::Observer interface
+ virtual void OnDownloadUpdated(DownloadItem* download);
+ virtual void OnDownloadFileCompleted(DownloadItem* download) { }
+ virtual void OnDownloadOpened(DownloadItem* download) { }
+
+ // DownloadManager::Observer interface
+ virtual void ModelChanged();
+
+ // Callback for the "getDownloads" message.
+ void HandleGetDownloads(const ListValue* args);
+
+ // Callback for the "openFile" message - opens the file in the shell.
+ void HandleOpenFile(const ListValue* args);
+
+ // Callback for the "drag" message - initiates a file object drag.
+ void HandleDrag(const ListValue* args);
+
+ // Callback for the "saveDangerous" message - specifies that the user
+ // wishes to save a dangerous file.
+ void HandleSaveDangerous(const ListValue* args);
+
+ // Callback for the "discardDangerous" message - specifies that the user
+ // wishes to discard (remove) a dangerous file.
+ void HandleDiscardDangerous(const ListValue* args);
+
+ // Callback for the "show" message - shows the file in explorer.
+ void HandleShow(const ListValue* args);
+
+ // Callback for the "pause" message - pauses the file download.
+ void HandlePause(const ListValue* args);
+
+ // Callback for the "remove" message - removes the file download from shelf
+ // and list.
+ void HandleRemove(const ListValue* args);
+
+ // Callback for the "cancel" message - cancels the download.
+ void HandleCancel(const ListValue* args);
+
+ // Callback for the "clearAll" message - clears all the downloads.
+ void HandleClearAll(const ListValue* args);
+
+ private:
+ // Send the current list of downloads to the page.
+ void SendCurrentDownloads();
+
+ // Clear all download items and their observers.
+ void ClearDownloadItems();
+
+ // Return the download that corresponds to a given id.
+ DownloadItem* GetDownloadById(int id);
+
+ // Return the download that is referred to in a given value.
+ DownloadItem* GetDownloadByValue(const ListValue* args);
+
+ // Current search text.
+ std::wstring search_text_;
+
+ // Our model
+ DownloadManager* download_manager_;
+
+ // The current set of visible DownloadItems for this view received from the
+ // DownloadManager. DownloadManager owns the DownloadItems. The vector is
+ // kept in order, sorted by ascending start time.
+ typedef std::vector<DownloadItem*> OrderedDownloads;
+ OrderedDownloads download_items_;
+
+ base::ScopedCallbackFactory<DownloadsDOMHandler> callback_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(DownloadsDOMHandler);
+};
+
+#endif // CHROME_BROWSER_UI_WEBUI_DOWNLOADS_DOM_HANDLER_H_