1// Copyright (c) 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_EXTENSIONS_API_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_API_HELPERS_H_
6#define CHROME_BROWSER_EXTENSIONS_API_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_API_HELPERS_H_
7
8#include "chrome/browser/sync_file_system/conflict_resolution_policy.h"
9#include "chrome/browser/sync_file_system/sync_action.h"
10#include "chrome/browser/sync_file_system/sync_direction.h"
11#include "chrome/browser/sync_file_system/sync_file_status.h"
12#include "chrome/browser/sync_file_system/sync_file_type.h"
13#include "chrome/browser/sync_file_system/sync_service_state.h"
14#include "chrome/common/extensions/api/sync_file_system.h"
15
16namespace storage {
17class FileSystemURL;
18}
19
20namespace base {
21class DictionaryValue;
22}
23
24namespace extensions {
25
26// extensions::api::sync_file_system <-> sync_file_system enum conversion
27// functions.
28api::sync_file_system::ServiceStatus SyncServiceStateToExtensionEnum(
29    sync_file_system::SyncServiceState state);
30
31api::sync_file_system::FileStatus SyncFileStatusToExtensionEnum(
32    sync_file_system::SyncFileStatus status);
33
34api::sync_file_system::SyncAction SyncActionToExtensionEnum(
35    sync_file_system::SyncAction action);
36
37api::sync_file_system::SyncDirection SyncDirectionToExtensionEnum(
38    sync_file_system::SyncDirection direction);
39
40api::sync_file_system::ConflictResolutionPolicy
41ConflictResolutionPolicyToExtensionEnum(
42    sync_file_system::ConflictResolutionPolicy policy);
43
44sync_file_system::ConflictResolutionPolicy
45ExtensionEnumToConflictResolutionPolicy(
46    api::sync_file_system::ConflictResolutionPolicy);
47
48// Creates a dictionary for FileSystem Entry from given |url|.
49// This will create a dictionary which has 'fileSystemType', 'fileSystemName',
50// 'rootUrl', 'filePath' and 'isDirectory' fields.
51// The returned dictionary is supposed to be interpreted
52// in the renderer's customer binding to create a FileEntry object.
53// This returns NULL if the given |url| is not valid or |file_type| is
54// SYNC_FILE_TYPE_UNKNOWN.
55base::DictionaryValue* CreateDictionaryValueForFileSystemEntry(
56    const storage::FileSystemURL& url,
57    sync_file_system::SyncFileType file_type);
58
59}  // namespace extensions
60
61#endif  // CHROME_BROWSER_EXTENSIONS_API_SYNC_FILE_SYSTEM_SYNC_FILE_SYSTEM_API_HELPERS_H_
62