[sql] Move time-machine support from third_party/sqlite to sql/

Chromium's SQLite was modified to propagate OSX Time-Machine exclusions
from the main database file to any associated journal files.
Re-implement this using a VFS which wraps the default VFS and makes the
check when opening journal files.

BUG=679941

Review-Url: https://codereview.chromium.org/2623083002
Cr-Commit-Position: refs/heads/master@{#445601}
diff --git a/sql/vfs_wrapper.h b/sql/vfs_wrapper.h
new file mode 100644
index 0000000..0ff50e6
--- /dev/null
+++ b/sql/vfs_wrapper.h
@@ -0,0 +1,23 @@
+// Copyright (c) 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SQL_VFS_WRAPPER_H_
+#define SQL_VFS_WRAPPER_H_
+
+#include "third_party/sqlite/sqlite3.h"
+
+namespace sql {
+
+// A wrapper around the default VFS.
+//
+// On OSX, the wrapper propagates Time Machine exclusions from the main database
+// file to associated files such as journals. <http://crbug.com/23619> and
+// <http://crbug.com/25959> and others.
+//
+// TODO(shess): On Windows, wrap xFetch() with a structured exception handler.
+sqlite3_vfs* VFSWrapper();
+
+}  // namespace sql
+
+#endif  // SQL_VFS_WRAPPER_H_