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

Side by Side Diff: third_party/sqlite/patches/0004-Modify-default-VFS-to-support-WebDatabase.patch

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: Created 3 years, 9 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
OLDNEW
(Empty)
1 From 0a5da8cd79a6b502edc01c40037ae418b2d5c828 Mon Sep 17 00:00:00 2001
2 From: dumi <dumi@chromium.org>
3 Date: Mon, 20 Jul 2009 23:40:51 +0000
4 Subject: [PATCH 04/10] Modify default VFS to support WebDatabase.
5
6 The renderer WebDatabase implementation needs to broker certain requests
7 to the browser. This modifies SQLite to allow monkey-patching the VFS
8 to support this.
9
10 NOTE(shess): This patch relies on core SQLite implementation details
11 remaining unchanged. When importing a new version of SQLite, pay very
12 close attention to whether the change is still doing what is intended.
13
14 Original review URLs:
15 https://codereview.chromium.org/159044
16 https://codereview.chromium.org/384075
17 https://codereview.chromium.org/377039
18 [Possibly not a complete list.]
19 ---
20 third_party/sqlite/src/src/os_unix.c | 49 ++++++++++++++++++++++++++++++++++
21 third_party/sqlite/src/src/os_win.c | 8 ++++++
22 third_party/sqlite/src/src/sqlite.h.in | 23 ++++++++++++++++
23 3 files changed, 80 insertions(+)
24
25 diff --git a/third_party/sqlite/src/src/os_unix.c b/third_party/sqlite/src/src/o s_unix.c
26 index 791ba5d..fa85638 100644
27 --- a/third_party/sqlite/src/src/os_unix.c
28 +++ b/third_party/sqlite/src/src/os_unix.c
29 @@ -1297,6 +1297,12 @@ static int fileHasMoved(unixFile *pFile){
30 return pFile->pInode!=0 && pFile->pId!=pFile->pInode->fileId.pId;
31 #else
32 struct stat buf;
33 +
34 + /* TODO(shess): This check doesn't work when the Chromium's WebDB code is
35 + ** running in the sandbox.
36 + */
37 + return 0;
38 +
39 return pFile->pInode!=0 &&
40 (osStat(pFile->zPath, &buf)!=0 || buf.st_ino!=pFile->pInode->fileId.ino);
41 #endif
42 @@ -5554,6 +5560,44 @@ static int findCreateFileMode(
43 }
44
45 /*
46 +** Initialize |unixFile| internals of |file| on behalf of chromiumOpen() in
47 +** WebDatabase SQLiteFileSystemPosix.cpp. Function is a subset of unixOpen(),
48 +** each duplicated piece is marked by "Duplicated in" comment in unixOpen().
49 +*/
50 +CHROMIUM_SQLITE_API
51 +int chromium_sqlite3_fill_in_unix_sqlite3_file(sqlite3_vfs* pVfs,
52 + int fd,
53 + sqlite3_file* pFile,
54 + const char* zPath,
55 + int noLock,
56 + int flags) {
57 + unixFile *p = (unixFile *)pFile;
58 + const int eType = flags&0xFFFFFF00; /* Type of file to open */
59 + const int ctrlFlags = (noLock ? UNIXFILE_NOLOCK : 0);
60 + int rc;
61 +
62 + memset(p, 0, sizeof(unixFile));
63 +
64 + /* osStat() will not work in the sandbox, so findReusableFd() will always
65 + ** fail, so directly include the failure-case setup then initialize pUnused.
66 + */
67 + if( eType==SQLITE_OPEN_MAIN_DB ){
68 + p->pUnused = sqlite3_malloc(sizeof(*p->pUnused));
69 + if (!p->pUnused) {
70 + return SQLITE_NOMEM;
71 + }
72 + p->pUnused->fd = fd;
73 + p->pUnused->flags = flags;
74 + }
75 +
76 + rc = fillInUnixFile(pVfs, fd, pFile, zPath, ctrlFlags);
77 + if( rc!=SQLITE_OK ){
78 + sqlite3_free(p->pUnused);
79 + }
80 + return rc;
81 +}
82 +
83 +/*
84 ** Open the file zPath.
85 **
86 ** Previously, the SQLite OS layer used three functions in place of this
87 @@ -5654,6 +5698,7 @@ static int unixOpen(
88 sqlite3_randomness(0,0);
89 }
90
91 + /* Duplicated in chromium_sqlite3_fill_in_unix_sqlite3_file(). */
92 memset(p, 0, sizeof(unixFile));
93
94 if( eType==SQLITE_OPEN_MAIN_DB ){
95 @@ -5662,6 +5707,7 @@ static int unixOpen(
96 if( pUnused ){
97 fd = pUnused->fd;
98 }else{
99 + /* Duplicated in chromium_sqlite3_fill_in_unix_sqlite3_file(). */
100 pUnused = sqlite3_malloc64(sizeof(*pUnused));
101 if( !pUnused ){
102 return SQLITE_NOMEM;
103 @@ -5739,6 +5785,7 @@ static int unixOpen(
104 }
105
106 if( p->pUnused ){
107 + /* Duplicated in chromium_sqlite3_fill_in_unix_sqlite3_file(). */
108 p->pUnused->fd = fd;
109 p->pUnused->flags = flags;
110 }
111 @@ -5819,10 +5866,12 @@ static int unixOpen(
112 }
113 #endif
114
115 + /* Duplicated in chromium_sqlite3_fill_in_unix_sqlite3_file(). */
116 rc = fillInUnixFile(pVfs, fd, pFile, zPath, ctrlFlags);
117
118 open_finished:
119 if( rc!=SQLITE_OK ){
120 + /* Duplicated in chromium_sqlite3_fill_in_unix_sqlite3_file(). */
121 sqlite3_free(p->pUnused);
122 }
123 return rc;
124 diff --git a/third_party/sqlite/src/src/os_win.c b/third_party/sqlite/src/src/os _win.c
125 index c54bfd6..00ad6fd 100644
126 --- a/third_party/sqlite/src/src/os_win.c
127 +++ b/third_party/sqlite/src/src/os_win.c
128 @@ -5639,4 +5639,12 @@ int sqlite3_os_end(void){
129 return SQLITE_OK;
130 }
131
132 +CHROMIUM_SQLITE_API
133 +void chromium_sqlite3_initialize_win_sqlite3_file(sqlite3_file* file, HANDLE ha ndle) {
134 + winFile* winSQLite3File = (winFile*)file;
135 + memset(file, 0, sizeof(*file));
136 + winSQLite3File->pMethod = &winIoMethod;
137 + winSQLite3File->h = handle;
138 +}
139 +
140 #endif /* SQLITE_OS_WIN */
141 diff --git a/third_party/sqlite/src/src/sqlite.h.in b/third_party/sqlite/src/src /sqlite.h.in
142 index 59b30cd..e5673fd 100644
143 --- a/third_party/sqlite/src/src/sqlite.h.in
144 +++ b/third_party/sqlite/src/src/sqlite.h.in
145 @@ -7411,6 +7411,29 @@ int sqlite3_strnicmp(const char *, const char *, int);
146 */
147 int sqlite3_strglob(const char *zGlob, const char *zStr);
148
149 +/* Begin WebDatabase patch for Chromium */
150 +/* Expose some SQLite internals for the WebDatabase vfs.
151 +** DO NOT EXTEND THE USE OF THIS.
152 +*/
153 +#ifndef CHROMIUM_SQLITE_API
154 +#define CHROMIUM_SQLITE_API SQLITE_API
155 +#endif
156 +#if defined(CHROMIUM_SQLITE_INTERNALS)
157 +#ifdef _WIN32
158 +CHROMIUM_SQLITE_API
159 +void chromium_sqlite3_initialize_win_sqlite3_file(sqlite3_file* file, HANDLE ha ndle);
160 +#else /* _WIN32 */
161 +CHROMIUM_SQLITE_API
162 +int chromium_sqlite3_fill_in_unix_sqlite3_file(sqlite3_vfs* pVfs,
163 + int fd,
164 + sqlite3_file* pFile,
165 + const char* zPath,
166 + int noLock,
167 + int flags);
168 +#endif /* _WIN32 */
169 +#endif /* CHROMIUM_SQLITE_INTERNALS */
170 +/* End WebDatabase patch for Chromium */
171 +
172 /*
173 ** CAPI3REF: String LIKE Matching
174 *
175 --
176 2.7.0
177
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698