summaryrefslogtreecommitdiff
path: root/chromium/content/browser/download/download_item_impl_delegate.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/download/download_item_impl_delegate.h')
-rw-r--r--chromium/content/browser/download/download_item_impl_delegate.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/chromium/content/browser/download/download_item_impl_delegate.h b/chromium/content/browser/download/download_item_impl_delegate.h
new file mode 100644
index 00000000000..72e079b8963
--- /dev/null
+++ b/chromium/content/browser/download/download_item_impl_delegate.h
@@ -0,0 +1,102 @@
+// Copyright (c) 2012 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 CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_DELEGATE_H_
+#define CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_DELEGATE_H_
+
+#include "base/callback.h"
+#include "base/files/file_path.h"
+#include "content/common/content_export.h"
+#include "content/public/browser/download_danger_type.h"
+#include "content/public/browser/download_item.h"
+#include "content/public/browser/download_url_parameters.h"
+
+namespace content {
+class DownloadItemImpl;
+class BrowserContext;
+
+// Delegate for operations that a DownloadItemImpl can't do for itself.
+// The base implementation of this class does nothing (returning false
+// on predicates) so interfaces not of interest to a derived class may
+// be left unimplemented.
+class CONTENT_EXPORT DownloadItemImplDelegate {
+ public:
+ typedef base::Callback<void(
+ const base::FilePath&, // Target path
+ DownloadItem::TargetDisposition, // overwrite/uniquify target
+ DownloadDangerType,
+ const base::FilePath& // Intermediate file path
+ )> DownloadTargetCallback;
+
+ // The boolean argument indicates whether or not the download was
+ // actually opened.
+ typedef base::Callback<void(bool)> ShouldOpenDownloadCallback;
+
+ DownloadItemImplDelegate();
+ virtual ~DownloadItemImplDelegate();
+
+ // Used for catching use-after-free errors.
+ void Attach();
+ void Detach();
+
+ // Request determination of the download target from the delegate.
+ virtual void DetermineDownloadTarget(
+ DownloadItemImpl* download, const DownloadTargetCallback& callback);
+
+ // Allows the delegate to delay completion of the download. This function
+ // will either return true (if the download may complete now) or will return
+ // false and call the provided callback at some future point. This function
+ // may be called repeatedly.
+ virtual bool ShouldCompleteDownload(
+ DownloadItemImpl* download,
+ const base::Closure& complete_callback);
+
+ // Allows the delegate to override the opening of a download. If it returns
+ // true then it's reponsible for opening the item.
+ virtual bool ShouldOpenDownload(
+ DownloadItemImpl* download, const ShouldOpenDownloadCallback& callback);
+
+ // Tests if a file type should be opened automatically.
+ virtual bool ShouldOpenFileBasedOnExtension(const base::FilePath& path);
+
+ // Checks whether a downloaded file still exists and updates the
+ // file's state if the file is already removed.
+ // The check may or may not result in a later asynchronous call
+ // to OnDownloadedFileRemoved().
+ virtual void CheckForFileRemoval(DownloadItemImpl* download_item);
+
+ // Called when an interrupted download is resumed.
+ virtual void ResumeInterruptedDownload(
+ scoped_ptr<content::DownloadUrlParameters> params,
+ uint32 id);
+
+ // For contextual issues like language and prefs.
+ virtual BrowserContext* GetBrowserContext() const;
+
+ // Update the persistent store with our information.
+ virtual void UpdatePersistence(DownloadItemImpl* download);
+
+ // Opens the file associated with this download.
+ virtual void OpenDownload(DownloadItemImpl* download);
+
+ // Shows the download via the OS shell.
+ virtual void ShowDownloadInShell(DownloadItemImpl* download);
+
+ // Handle any delegate portions of a state change operation on the
+ // DownloadItem.
+ virtual void DownloadRemoved(DownloadItemImpl* download);
+
+ // Assert consistent state for delgate object at various transitions.
+ virtual void AssertStateConsistent(DownloadItemImpl* download) const;
+
+ private:
+ // For "Outlives attached DownloadItemImpl" invariant assertion.
+ int count_;
+
+ DISALLOW_COPY_AND_ASSIGN(DownloadItemImplDelegate);
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_DOWNLOAD_DOWNLOAD_ITEM_IMPL_DELEGATE_H_