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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FINDER_H_
6#define CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FINDER_H_
7
8#include <string>
9
10#include "base/callback.h"
11#include "base/files/file_path.h"
12
13#if defined(OS_MACOSX)
14
15class MacPreferences;
16#if defined(__OBJC__)
17@class NSString;
18#else  // __OBJC__
19class NSString;
20#endif  // __OBJC__
21
22#endif  // OS_MACOSX
23
24namespace picasa {
25
26#if defined(OS_WIN)
27extern const wchar_t kPicasaRegistryPath[];
28extern const wchar_t kPicasaRegistryAppDataPathKey[];
29#endif
30
31#if defined(OS_MACOSX)
32extern NSString* const kPicasaAppDataPathMacPreferencesKey;
33#endif
34
35typedef base::Callback<void(const std::string&)> DeviceIDCallback;
36
37// Bounces to FILE thread to find Picasa database. If the platform supports
38// Picasa and a Picasa database is found, |callback| will be invoked on the
39// calling thread with the device ID. Otherwise, |callback| will be invoked
40// with an empty string.
41void FindPicasaDatabase(const DeviceIDCallback& callback);
42
43// Builds the OS-dependent Picasa database path from the app-data path.
44// Used internally and by tests to construct an test environments.
45base::FilePath MakePicasaDatabasePath(
46    const base::FilePath& picasa_app_data_path);
47
48#if defined(OS_MACOSX)
49// Set the mac preferences to use for testing. The caller continues to own
50// |preferences| and should call this function again with NULL before freeing
51// it.
52void SetMacPreferencesForTesting(MacPreferences* preferences);
53
54// Used internally only.
55base::FilePath GetCustomPicasaAppDataPathFromMacPreferences();
56#endif  // OS_MACOSX
57
58}  // namespace picasa
59
60#endif  // CHROME_BROWSER_MEDIA_GALLERIES_FILEAPI_PICASA_FINDER_H_
61