Index: sql/connection.h |
=================================================================== |
--- sql/connection.h (revision 147715) |
+++ sql/connection.h (working copy) |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2012 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. |
@@ -12,6 +12,7 @@ |
#include "base/basictypes.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
+#include "base/threading/thread_restrictions.h" |
#include "base/time.h" |
#include "sql/sql_export.h" |
@@ -320,6 +321,14 @@ |
// sqlite3_open. The string can also be sqlite's special ":memory:" string. |
bool OpenInternal(const std::string& file_name); |
+ // Check whether the current thread is allowed to make IO calls, but only |
+ // if database wasn't open in memory. Function is inlined to be a no-op in |
+ // official build. |
+ void AssertIOAllowed() { |
+ if (!in_memory_) |
+ base::ThreadRestrictions::AssertIOAllowed(); |
+ } |
+ |
// Internal helper for DoesTableExist and DoesIndexExist. |
bool DoesTableOrIndexExist(const char* name, const char* type) const; |
@@ -355,6 +364,10 @@ |
// no longer be active. |
void Close(); |
+ // Check whether the current thread is allowed to make IO calls, but only |
+ // if database wasn't open in memory. |
+ void AssertIOAllowed() { if (connection_) connection_->AssertIOAllowed(); } |
+ |
private: |
friend class base::RefCounted<StatementRef>; |
@@ -417,6 +430,10 @@ |
// a rollback instead of a commit. |
bool needs_rollback_; |
+ // True if database is open with OpenInMemory(), False if database is open |
+ // with Open(). |
+ bool in_memory_; |
+ |
// This object handles errors resulting from all forms of executing sqlite |
// commands or statements. It can be null which means default handling. |
scoped_refptr<ErrorDelegate> error_delegate_; |