1// Copyright 2013 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#ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CONNECTION_H_
6#define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CONNECTION_H_
7
8#include "base/memory/ref_counted.h"
9#include "content/browser/indexed_db/indexed_db_database.h"
10#include "content/browser/indexed_db/indexed_db_database_callbacks.h"
11
12namespace content {
13class IndexedDBCallbacks;
14class IndexedDBDatabaseError;
15
16class CONTENT_EXPORT IndexedDBConnection {
17 public:
18  IndexedDBConnection(scoped_refptr<IndexedDBDatabase> db,
19                      scoped_refptr<IndexedDBDatabaseCallbacks> callbacks);
20  virtual ~IndexedDBConnection();
21
22  // These methods are virtual to allow subclassing in unit tests.
23  virtual void ForceClose();
24  virtual void Close();
25  virtual bool IsConnected();
26
27  void VersionChangeIgnored();
28
29  IndexedDBDatabase* database() { return database_.get(); }
30  IndexedDBDatabaseCallbacks* callbacks() { return callbacks_.get(); }
31
32 private:
33  // NULL in some unit tests, and after the connection is closed.
34  scoped_refptr<IndexedDBDatabase> database_;
35
36  // The callbacks_ member is cleared when the connection is closed.
37  // May be NULL in unit tests.
38  scoped_refptr<IndexedDBDatabaseCallbacks> callbacks_;
39
40  DISALLOW_COPY_AND_ASSIGN(IndexedDBConnection);
41};
42
43}  // namespace content
44
45#endif  // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CONNECTION_H_
46