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)#ifndef CHROME_BROWSER_DOWNLOAD_TEST_DOWNLOAD_SHELF_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_DOWNLOAD_TEST_DOWNLOAD_SHELF_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/download/download_shelf.h"
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/public/browser/download_manager.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// An implementation of DownloadShelf for testing.
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class TestDownloadShelf : public DownloadShelf,
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                          public content::DownloadManager::Observer {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestDownloadShelf();
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~TestDownloadShelf();
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // DownloadShelf:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsShowing() const OVERRIDE;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsClosing() const OVERRIDE;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual Browser* browser() const OVERRIDE;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Return |true| if a download was added to this shelf.
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool did_add_download() const { return did_add_download_; }
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Set download_manager_ (and the result of calling GetDownloadManager())
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void set_download_manager(content::DownloadManager* download_manager);
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // DownloadManager::Observer implementation.
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual void ManagerGoingDown(content::DownloadManager* manager) OVERRIDE;
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DoAddDownload(content::DownloadItem* download) OVERRIDE;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DoShow() OVERRIDE;
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual void DoClose(CloseReason reason) OVERRIDE;
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual base::TimeDelta GetTransientDownloadShowDelay() OVERRIDE;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual content::DownloadManager* GetDownloadManager() OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_showing_;
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  bool did_add_download_;
4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  content::DownloadManager* download_manager_;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestDownloadShelf);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_DOWNLOAD_TEST_DOWNLOAD_SHELF_H_
51