| Index: chrome/browser/media_galleries/fileapi/safe_picasa_albums_indexer.h
|
| diff --git a/chrome/browser/media_galleries/fileapi/safe_picasa_album_table_reader.h b/chrome/browser/media_galleries/fileapi/safe_picasa_albums_indexer.h
|
| similarity index 53%
|
| copy from chrome/browser/media_galleries/fileapi/safe_picasa_album_table_reader.h
|
| copy to chrome/browser/media_galleries/fileapi/safe_picasa_albums_indexer.h
|
| index ebebdfe3850204d2246e05e7217ac4e2ecf23979..157c78d8ceca0df5854abe4016d37601469077d6 100644
|
| --- a/chrome/browser/media_galleries/fileapi/safe_picasa_album_table_reader.h
|
| +++ b/chrome/browser/media_galleries/fileapi/safe_picasa_albums_indexer.h
|
| @@ -2,16 +2,16 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_SAFE_PICASA_ALBUM_TABLE_READER_H_
|
| -#define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_SAFE_PICASA_ALBUM_TABLE_READER_H_
|
| +#ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_SAFE_PICASA_ALBUMS_INDEXER_H_
|
| +#define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_SAFE_PICASA_ALBUMS_INDEXER_H_
|
|
|
| -#include <string>
|
| +#include <queue>
|
| +#include <vector>
|
|
|
| #include "base/callback.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "chrome/common/media_galleries/picasa_types.h"
|
| -#include "content/public/browser/utility_process_host.h"
|
| #include "content/public/browser/utility_process_host_client.h"
|
|
|
| namespace base {
|
| @@ -24,57 +24,55 @@ class Message;
|
|
|
| namespace picasa {
|
|
|
| -// SafePicasaAlbumTableReader parses the given Picasa PMP Album Table safely
|
| -// via a utility process. The SafePicasaAlbumTableReader object is ref-counted
|
| +// SafePicasaAlbumsIndexer indexes the contents of Picasa Albums by parsing the
|
| +// INI files found in Folders. The SafePicasaAlbumsIndexer object is ref-counted
|
| // and kept alive after Start() is called until the ParserCallback is called.
|
| // The ParserCallback is guaranteed to be called eventually either when the
|
| // utility process replies or when it dies.
|
| -class SafePicasaAlbumTableReader : public content::UtilityProcessHostClient {
|
| +class SafePicasaAlbumsIndexer : public content::UtilityProcessHostClient {
|
| public:
|
| - typedef base::Callback<void(bool,
|
| - const std::vector<AlbumInfo>&,
|
| - const std::vector<AlbumInfo>&)> ParserCallback;
|
| + typedef base::Callback<void(picasa::AlbumImagesMap)> ParserCallback;
|
|
|
| - SafePicasaAlbumTableReader(const AlbumTableFiles& album_table_files,
|
| - const ParserCallback& callback);
|
| + SafePicasaAlbumsIndexer(const AlbumMap& albums,
|
| + const AlbumMap& folders,
|
| + const ParserCallback& callback);
|
|
|
| void Start();
|
|
|
| private:
|
| enum ParserState {
|
| INITIAL_STATE,
|
| - PINGED_UTILITY_PROCESS_STATE,
|
| + STARTED_READING_INI_FILES_STATE,
|
| + FINISHED_READING_INI_FILES_STATE,
|
| STARTED_PARSING_STATE,
|
| FINISHED_PARSING_STATE,
|
| };
|
|
|
| // Private because content::UtilityProcessHostClient is ref-counted.
|
| - virtual ~SafePicasaAlbumTableReader();
|
| + virtual ~SafePicasaAlbumsIndexer();
|
| +
|
| + // Processes a batch of folders. Reposts itself until done, then starts IPC.
|
| + void ProcessFoldersBatch();
|
|
|
| // Launches the utility process. Must run on the IO thread.
|
| void StartWorkOnIOThread();
|
|
|
| - // Notification that the utility process is running, and we can now get its
|
| - // process handle.
|
| - // Runs on the IO thread.
|
| - void OnProcessStarted();
|
| -
|
| - // Notification from the utility process when it finshes parsing the PMP
|
| - // database. This is received even if PMP parsing fails.
|
| + // Notification from the utility process when it finshes indexing all the
|
| + // album contents. On error will return an empty map.
|
| // Runs on the IO thread.
|
| - void OnParsePicasaPMPDatabaseFinished(bool parse_success,
|
| - const std::vector<AlbumInfo>& albums,
|
| - const std::vector<AlbumInfo>& folders);
|
| + void OnIndexPicasaAlbumsContentsFinished(const AlbumImagesMap& albums_images);
|
|
|
| // UtilityProcessHostClient implementation.
|
| // Runs on the IO thread.
|
| virtual void OnProcessCrashed(int exit_code) OVERRIDE;
|
| virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
|
|
| - const AlbumTableFiles album_table_files_;
|
| + AlbumUIDSet album_uids_;
|
|
|
| - // Only accessed on the IO thread.
|
| - base::WeakPtr<content::UtilityProcessHost> utility_process_host_;
|
| + // List of folders that still need their INI files read.
|
| + std::queue<base::FilePath> folders_queue;
|
| +
|
| + std::vector<picasa::FolderINIContents> folders_inis_;
|
|
|
| // Only accessed on the Media Task Runner.
|
| const ParserCallback callback_;
|
| @@ -83,9 +81,11 @@ class SafePicasaAlbumTableReader : public content::UtilityProcessHostClient {
|
| // Initialized on the Media Task Runner, but only accessed on the IO thread.
|
| ParserState parser_state_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(SafePicasaAlbumTableReader);
|
| + base::WeakPtrFactory<SafePicasaAlbumsIndexer> weak_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SafePicasaAlbumsIndexer);
|
| };
|
|
|
| } // namespace picasa
|
|
|
| -#endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_SAFE_PICASA_ALBUM_TABLE_READER_H_
|
| +#endif // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_SAFE_PICASA_ALBUMS_INDEXER_H_
|
|
|