Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Side by Side Diff: chrome/browser/media_galleries/fileapi/itunes_data_provider.h

Issue 18348019: Add a test for ITunesDataProvider (try two). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix mac compile Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/media_galleries/fileapi/itunes_data_provider_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_DATA_PROVIDER_H_ 5 #ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_DATA_PROVIDER_H_
6 #define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_DATA_PROVIDER_H_ 6 #define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_DATA_PROVIDER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/callback_forward.h" 13 #include "base/callback_forward.h"
14 #include "base/files/file_path.h" 14 #include "base/files/file_path.h"
15 #include "base/files/file_path_watcher.h" 15 #include "base/files/file_path_watcher.h"
16 #include "chrome/browser/media_galleries/fileapi/safe_itunes_library_parser.h" 16 #include "chrome/browser/media_galleries/fileapi/safe_itunes_library_parser.h"
17 17
18 namespace itunes { 18 namespace itunes {
19 19
20 class TestITunesDataProvider;
21
20 // This class is the holder for iTunes parsed data. Given a path to the iTunes 22 // This class is the holder for iTunes parsed data. Given a path to the iTunes
21 // library XML file it will read it in, parse the data, and provide convenient 23 // library XML file it will read it in, parse the data, and provide convenient
22 // methods to access it. When the file changes, it will update the data. 24 // methods to access it. When the file changes, it will update the data.
23 // It is not thread safe, but can be run on any thread with IO access. 25 // It is not thread safe, but can be run on any thread with IO access.
24 class ITunesDataProvider { 26 class ITunesDataProvider {
25 public: 27 public:
26 typedef std::string ArtistName; 28 typedef std::string ArtistName;
27 typedef std::string AlbumName; 29 typedef std::string AlbumName;
28 typedef std::string TrackName; 30 typedef std::string TrackName;
29 typedef std::map<TrackName, base::FilePath> Album; 31 typedef std::map<TrackName, base::FilePath> Album;
30 typedef base::Callback<void(bool)> ReadyCallback; 32 typedef base::Callback<void(bool)> ReadyCallback;
31 33
32 explicit ITunesDataProvider(const base::FilePath& library_path); 34 explicit ITunesDataProvider(const base::FilePath& library_path);
33 ~ITunesDataProvider(); 35 virtual ~ITunesDataProvider();
34 36
35 // Ask the data provider to refresh the data if necessary. |ready_callback| 37 // Ask the data provider to refresh the data if necessary. |ready_callback|
36 // will be called with the result; false if unable to parse the XML file. 38 // will be called with the result; false if unable to parse the XML file.
37 void RefreshData(const ReadyCallback& ready_callback); 39 void RefreshData(const ReadyCallback& ready_callback);
38 40
39 // Get the platform path for the library XML file. 41 // Get the platform path for the library XML file.
40 const base::FilePath& library_path() const; 42 const base::FilePath& library_path() const;
41 43
42 // Returns true if |artist| exists in the library. 44 // Returns true if |artist| exists in the library.
43 bool KnownArtist(const ArtistName& artist) const; 45 bool KnownArtist(const ArtistName& artist) const;
(...skipping 10 matching lines...) Expand all
54 // Get the set of artists. 56 // Get the set of artists.
55 std::set<ArtistName> GetArtistNames() const; 57 std::set<ArtistName> GetArtistNames() const;
56 58
57 // Get the set of albums for |artist|. 59 // Get the set of albums for |artist|.
58 std::set<AlbumName> GetAlbumNames(const ArtistName& artist) const; 60 std::set<AlbumName> GetAlbumNames(const ArtistName& artist) const;
59 61
60 // Get the tracks for the |album| by |artist|. 62 // Get the tracks for the |album| by |artist|.
61 Album GetAlbum(const ArtistName& artist, const AlbumName& album) const; 63 Album GetAlbum(const ArtistName& artist, const AlbumName& album) const;
62 64
63 private: 65 private:
66 friend class TestITunesDataProvider;
67
64 typedef std::map<AlbumName, Album> Artist; 68 typedef std::map<AlbumName, Album> Artist;
65 typedef std::map<ArtistName, Artist> Library; 69 typedef std::map<ArtistName, Artist> Library;
66 70
67 // These are hacks to work around http://crbug.com/165590. Otherwise a 71 // These are hacks to work around http://crbug.com/165590. Otherwise a
68 // WeakPtrFactory would be the obvious answer here. 72 // WeakPtrFactory would be the obvious answer here.
69 // static so they can call their real counterparts. 73 // static so they can call their real counterparts.
70 // TODO(vandebo) Remove these when the bug is fixed. 74 // TODO(vandebo) Remove these when the bug is fixed.
71 static void OnLibraryWatchStartedCallback( 75 static void OnLibraryWatchStartedCallback(
72 scoped_ptr<base::FilePathWatcher> library_watcher); 76 scoped_ptr<base::FilePathWatcher> library_watcher);
73 static void OnLibraryChangedCallback(const base::FilePath& path, bool error); 77 static void OnLibraryChangedCallback(const base::FilePath& path, bool error);
74 static void OnLibraryParsedCallback(const ReadyCallback& ready_callback, 78 static void OnLibraryParsedCallback(const ReadyCallback& ready_callback,
75 bool result, 79 bool result,
76 const parser::Library& library); 80 const parser::Library& library);
77 81
78 // Called when the FilePathWatcher for |library_path_| has tried to add an 82 // Called when the FilePathWatcher for |library_path_| has tried to add an
79 // watch. 83 // watch.
80 void OnLibraryWatchStarted(scoped_ptr<base::FilePathWatcher> library_watcher); 84 void OnLibraryWatchStarted(scoped_ptr<base::FilePathWatcher> library_watcher);
81 85
82 // Called when |library_path_| has changed. 86 // Called when |library_path_| has changed. Virtual for testing.
83 void OnLibraryChanged(const base::FilePath& path, bool error); 87 virtual void OnLibraryChanged(const base::FilePath& path, bool error);
84 88
85 // Called when the utility process finishes parsing the library XML file. 89 // Called when the utility process finishes parsing the library XML file.
86 void OnLibraryParsed(const ReadyCallback& ready_callback, 90 void OnLibraryParsed(const ReadyCallback& ready_callback,
87 bool result, 91 bool result,
88 const parser::Library& library); 92 const parser::Library& library);
89 93
90 // Path to the library XML file. 94 // Path to the library XML file.
91 const base::FilePath library_path_; 95 const base::FilePath library_path_;
92 96
93 // The parsed and uniquified data. 97 // The parsed and uniquified data.
(...skipping 10 matching lines...) Expand all
104 scoped_ptr<base::FilePathWatcher> library_watcher_; 108 scoped_ptr<base::FilePathWatcher> library_watcher_;
105 109
106 scoped_refptr<SafeITunesLibraryParser> xml_parser_; 110 scoped_refptr<SafeITunesLibraryParser> xml_parser_;
107 111
108 DISALLOW_COPY_AND_ASSIGN(ITunesDataProvider); 112 DISALLOW_COPY_AND_ASSIGN(ITunesDataProvider);
109 }; 113 };
110 114
111 } // namespace itunes 115 } // namespace itunes
112 116
113 #endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_DATA_PROVIDER_H_ 117 #endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_ITUNES_DATA_PROVIDER_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/media_galleries/fileapi/itunes_data_provider_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698