Home | History | Annotate | Download | only in download
      1 // Copyright (c) 2011 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_DOWNLOAD_PREFS_H_
      6 #define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PREFS_H_
      7 #pragma once
      8 
      9 #include <set>
     10 
     11 #include "base/file_path.h"
     12 #include "chrome/browser/prefs/pref_member.h"
     13 
     14 class PrefService;
     15 
     16 // Stores all download-related preferences.
     17 class DownloadPrefs {
     18  public:
     19   explicit DownloadPrefs(PrefService* prefs);
     20   ~DownloadPrefs();
     21 
     22   static void RegisterUserPrefs(PrefService* prefs);
     23 
     24   FilePath download_path() const { return *download_path_; }
     25   int save_file_type() const { return *save_file_type_; }
     26 
     27   // Returns true if the prompt_for_download preference has been set and the
     28   // download location is not managed (which means the user shouldn't be able
     29   // to choose another download location).
     30   bool PromptForDownload() const;
     31 
     32   // Returns true if the download path preference is managed.
     33   bool IsDownloadPathManaged() const;
     34 
     35   // Returns true if there is at least one file extension registered
     36   // for auto-open.
     37   bool IsAutoOpenUsed() const;
     38 
     39   bool IsAutoOpenEnabledForExtension(
     40       const FilePath::StringType& extension) const;
     41 
     42   // Enables auto-open based on file extension. Returns true on success.
     43   // TODO(phajdan.jr): Add WARN_UNUSED_RESULT here.
     44   bool EnableAutoOpenBasedOnExtension(const FilePath& file_name);
     45 
     46   // Disables auto-open based on file extension.
     47   void DisableAutoOpenBasedOnExtension(const FilePath& file_name);
     48 
     49   void ResetToDefaults();
     50   void ResetAutoOpen();
     51 
     52  private:
     53   void SaveAutoOpenState();
     54 
     55   PrefService* prefs_;
     56 
     57   BooleanPrefMember prompt_for_download_;
     58   FilePathPrefMember download_path_;
     59   IntegerPrefMember save_file_type_;
     60 
     61   // Set of file extensions to open at download completion.
     62   struct AutoOpenCompareFunctor {
     63     bool operator()(const FilePath::StringType& a,
     64                     const FilePath::StringType& b) const;
     65   };
     66   typedef std::set<FilePath::StringType, AutoOpenCompareFunctor> AutoOpenSet;
     67   AutoOpenSet auto_open_;
     68 
     69   DISALLOW_COPY_AND_ASSIGN(DownloadPrefs);
     70 };
     71 
     72 #endif  // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PREFS_H_
     73