Index: sql/connection.h |
diff --git a/sql/connection.h b/sql/connection.h |
index 65020a04ebb86e0842f1048d119e2d88185b4fbf..1aef0644932a2ed2c502861a05470791d4b444db 100644 |
--- a/sql/connection.h |
+++ b/sql/connection.h |
@@ -12,6 +12,7 @@ |
#include "base/basictypes.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
#include "base/threading/thread_restrictions.h" |
#include "base/time.h" |
#include "sql/sql_export.h" |
@@ -78,9 +79,9 @@ class Connection; |
// the OnError() callback. |
// The tipical usage is to centralize the code designed to handle database |
// corruption, low-level IO errors or locking violations. |
-class SQL_EXPORT ErrorDelegate : public base::RefCounted<ErrorDelegate> { |
+class SQL_EXPORT ErrorDelegate { |
public: |
- ErrorDelegate(); |
+ virtual ~ErrorDelegate(); |
// |error| is an sqlite result code as seen in sqlite\preprocessed\sqlite3.h |
// |connection| is db connection where the error happened and |stmt| is |
@@ -94,11 +95,6 @@ class SQL_EXPORT ErrorDelegate : public base::RefCounted<ErrorDelegate> { |
// re-tried then returning SQLITE_OK is appropiate; otherwise is recomended |
// that you return the original |error| or the appropiae error code. |
virtual int OnError(int error, Connection* connection, Statement* stmt) = 0; |
- |
- protected: |
- friend class base::RefCounted<ErrorDelegate>; |
- |
- virtual ~ErrorDelegate(); |
}; |
class SQL_EXPORT Connection { |
@@ -142,8 +138,9 @@ class SQL_EXPORT Connection { |
// Sets the object that will handle errors. Recomended that it should be set |
// before calling Open(). If not set, the default is to ignore errors on |
// release and assert on debug builds. |
+ // Takes ownership of |delegate|. |
void set_error_delegate(ErrorDelegate* delegate) { |
- error_delegate_ = delegate; |
+ error_delegate_.reset(delegate); |
} |
// Initialization ------------------------------------------------------------ |
@@ -445,7 +442,7 @@ class SQL_EXPORT Connection { |
// 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_; |
+ scoped_ptr<ErrorDelegate> error_delegate_; |
DISALLOW_COPY_AND_ASSIGN(Connection); |
}; |