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#include "content/child/database_util.h"
6
7#include "content/common/database_messages.h"
8#include "ipc/ipc_sync_message_filter.h"
9#include "third_party/WebKit/public/platform/WebString.h"
10#include "third_party/sqlite/sqlite3.h"
11
12using blink::Platform;
13using blink::WebString;
14
15namespace content {
16
17Platform::FileHandle DatabaseUtil::DatabaseOpenFile(
18    const WebString& vfs_file_name,
19    int desired_flags,
20    IPC::SyncMessageFilter* sync_message_filter) {
21  IPC::PlatformFileForTransit file_handle =
22      IPC::InvalidPlatformFileForTransit();
23
24  scoped_refptr<IPC::SyncMessageFilter> filter(sync_message_filter);
25  filter->Send(new DatabaseHostMsg_OpenFile(
26      vfs_file_name, desired_flags, &file_handle));
27
28  return IPC::PlatformFileForTransitToPlatformFile(file_handle);
29}
30
31int DatabaseUtil::DatabaseDeleteFile(
32    const WebString& vfs_file_name,
33    bool sync_dir,
34    IPC::SyncMessageFilter* sync_message_filter) {
35  int rv = SQLITE_IOERR_DELETE;
36  scoped_refptr<IPC::SyncMessageFilter> filter(sync_message_filter);
37  filter->Send(new DatabaseHostMsg_DeleteFile(
38      vfs_file_name, sync_dir, &rv));
39  return rv;
40}
41
42long DatabaseUtil::DatabaseGetFileAttributes(
43    const WebString& vfs_file_name,
44    IPC::SyncMessageFilter* sync_message_filter) {
45  int32 rv = -1;
46  scoped_refptr<IPC::SyncMessageFilter> filter(sync_message_filter);
47  filter->Send(new DatabaseHostMsg_GetFileAttributes(vfs_file_name, &rv));
48  return rv;
49}
50
51long long DatabaseUtil::DatabaseGetFileSize(
52    const WebString& vfs_file_name,
53    IPC::SyncMessageFilter* sync_message_filter) {
54  int64 rv = 0LL;
55  scoped_refptr<IPC::SyncMessageFilter> filter(sync_message_filter);
56  filter->Send(new DatabaseHostMsg_GetFileSize(vfs_file_name, &rv));
57  return rv;
58}
59
60long long DatabaseUtil::DatabaseGetSpaceAvailable(
61    const WebString& origin_identifier,
62    IPC::SyncMessageFilter* sync_message_filter) {
63  int64 rv = 0LL;
64  scoped_refptr<IPC::SyncMessageFilter> filter(sync_message_filter);
65  filter->Send(new DatabaseHostMsg_GetSpaceAvailable(origin_identifier.utf8(),
66                                                     &rv));
67  return rv;
68}
69
70}  // namespace content
71