15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/download/download_item_impl_delegate.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/download/download_item_impl.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Infrastructure in DownloadItemImplDelegate to assert invariant that
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// delegate always outlives all attached DownloadItemImpls.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DownloadItemImplDelegate::DownloadItemImplDelegate()
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : count_(0) {}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DownloadItemImplDelegate::~DownloadItemImplDelegate() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK_EQ(0, count_);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::Attach() {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ++count_;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::Detach() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK_LT(0, count_);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  --count_;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::DetermineDownloadTarget(
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DownloadItemImpl* download, const DownloadTargetCallback& callback) {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(rdsmith/asanka): Do something useful if forced file path is null.
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath target_path(download->GetForcedFilePath());
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback.Run(target_path,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               DownloadItem::TARGET_DISPOSITION_OVERWRITE,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               target_path);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool DownloadItemImplDelegate::ShouldCompleteDownload(
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DownloadItemImpl* download,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const base::Closure& complete_callback) {
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DownloadItemImplDelegate::ShouldOpenDownload(
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DownloadItemImpl* download, const ShouldOpenDownloadCallback& callback) {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DownloadItemImplDelegate::ShouldOpenFileBasedOnExtension(
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const base::FilePath& path) {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::CheckForFileRemoval(
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DownloadItemImpl* download_item) {}
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DownloadItemImplDelegate::ResumeInterruptedDownload(
607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    scoped_ptr<DownloadUrlParameters> params, uint32 id) {}
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserContext* DownloadItemImplDelegate::GetBrowserContext() const {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::UpdatePersistence(DownloadItemImpl* download) {}
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DownloadItemImplDelegate::OpenDownload(DownloadItemImpl* download) {}
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DownloadItemImplDelegate::ShowDownloadInShell(DownloadItemImpl* download) {
712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::DownloadRemoved(DownloadItemImpl* download) {}
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DownloadItemImplDelegate::AssertStateConsistent(
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DownloadItemImpl* download) const {}
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
79