Home | History | Annotate | Download | only in download
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_FILE_PICKER_H_
      6 #define CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_FILE_PICKER_H_
      7 
      8 #include "base/memory/ref_counted.h"
      9 #include "content/public/browser/download_manager_delegate.h"
     10 #include "ui/shell_dialogs/select_file_dialog.h"
     11 
     12 class DownloadPrefs;
     13 
     14 // Handles showing a dialog to the user to ask for the filename to save a page.
     15 class SavePackageFilePicker : public ui::SelectFileDialog::Listener {
     16  public:
     17   SavePackageFilePicker(
     18       content::WebContents* web_contents,
     19       const base::FilePath& suggested_path,
     20       const base::FilePath::StringType& default_extension,
     21       bool can_save_as_complete,
     22       DownloadPrefs* download_prefs,
     23       const content::SavePackagePathPickedCallback& callback);
     24   virtual ~SavePackageFilePicker();
     25 
     26   // Used to disable prompting the user for a directory/filename of the saved
     27   // web page.  This is available for testing.
     28   static void SetShouldPromptUser(bool should_prompt);
     29 
     30  private:
     31   // SelectFileDialog::Listener implementation.
     32   virtual void FileSelected(const base::FilePath& path,
     33                             int index,
     34                             void* unused_params) OVERRIDE;
     35   virtual void FileSelectionCanceled(void* unused_params) OVERRIDE;
     36 
     37   bool ShouldSaveAsMHTML() const;
     38 
     39   // Used to look up the renderer process for this request to get the context.
     40   int render_process_id_;
     41 
     42   // Whether the web page can be saved as a complete HTML file.
     43   bool can_save_as_complete_;
     44 
     45   DownloadPrefs* download_prefs_;
     46 
     47   content::SavePackagePathPickedCallback callback_;
     48 
     49   // For managing select file dialogs.
     50   scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(SavePackageFilePicker);
     53 };
     54 
     55 #endif  // CHROME_BROWSER_DOWNLOAD_SAVE_PACKAGE_FILE_PICKER_H_
     56