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

Side by Side Diff: chrome/browser/chromeos/contacts/contact_database.h

Issue 190063004: chromeos: Delete old, unused contacts code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge again Created 6 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 CHROME_BROWSER_CHROMEOS_CONTACTS_CONTACT_DATABASE_H_
6 #define CHROME_BROWSER_CHROMEOS_CONTACTS_CONTACT_DATABASE_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "base/callback.h"
13 #include "base/compiler_specific.h"
14 #include "base/files/file_path.h"
15 #include "base/memory/ref_counted.h"
16 #include "base/memory/scoped_ptr.h"
17 #include "base/memory/scoped_vector.h"
18 #include "base/memory/weak_ptr.h"
19
20 namespace base {
21 class SequencedTaskRunner;
22 }
23
24 namespace leveldb {
25 class DB;
26 }
27
28 namespace contacts {
29
30 class Contact;
31 class UpdateMetadata;
32 typedef std::vector<const Contact*> ContactPointers;
33
34 // Interface for classes providing persistent storage of Contact objects.
35 class ContactDatabaseInterface {
36 public:
37 typedef std::vector<std::string> ContactIds;
38 typedef base::Callback<void(bool success)> InitCallback;
39 typedef base::Callback<void(bool success)> SaveCallback;
40 typedef base::Callback<void(bool success,
41 scoped_ptr<ScopedVector<Contact> >,
42 scoped_ptr<UpdateMetadata>)>
43 LoadCallback;
44
45 // Asynchronously destroys the object after all in-progress file operations
46 // have completed.
47 virtual void DestroyOnUIThread() {}
48
49 // Asynchronously initializes the object. |callback| will be invoked on the
50 // UI thread when complete.
51 virtual void Init(const base::FilePath& database_dir,
52 InitCallback callback) = 0;
53
54 // Asynchronously saves |contacts_to_save| and |metadata| to the database and
55 // removes contacts with IDs contained in |contact_ids_to_delete|. If
56 // |is_full_update| is true, all existing contacts in the database not present
57 // in |contacts_to_save| will be removed. |callback| will be invoked on the
58 // UI thread when complete. The caller must not make changes to the
59 // underlying passed-in Contact objects until the callback has been invoked.
60 virtual void SaveContacts(scoped_ptr<ContactPointers> contacts_to_save,
61 scoped_ptr<ContactIds> contact_ids_to_delete,
62 scoped_ptr<UpdateMetadata> metadata,
63 bool is_full_update,
64 SaveCallback callback) = 0;
65
66 // Asynchronously loads all contacts from the database and invokes |callback|
67 // when complete.
68 virtual void LoadContacts(LoadCallback callback) = 0;
69
70 protected:
71 virtual ~ContactDatabaseInterface() {}
72 };
73
74 class ContactDatabase : public ContactDatabaseInterface {
75 public:
76 ContactDatabase();
77
78 // ContactDatabaseInterface implementation.
79 virtual void DestroyOnUIThread() OVERRIDE;
80 virtual void Init(const base::FilePath& database_dir,
81 InitCallback callback) OVERRIDE;
82 virtual void SaveContacts(scoped_ptr<ContactPointers> contacts_to_save,
83 scoped_ptr<ContactIds> contact_ids_to_delete,
84 scoped_ptr<UpdateMetadata> metadata,
85 bool is_full_update,
86 SaveCallback callback) OVERRIDE;
87 virtual void LoadContacts(LoadCallback callback) OVERRIDE;
88
89 protected:
90 virtual ~ContactDatabase();
91
92 private:
93 // Are we currently being run by |task_runner_|?
94 bool IsRunByTaskRunner() const;
95
96 // Deletes |this|.
97 void DestroyFromTaskRunner();
98
99 // Passes the supplied parameters to |callback| after being called on the UI
100 // thread. Used for replies sent in response to |task_runner_|'s tasks, so
101 // that weak_ptrs can be used to avoid running the replies after the
102 // ContactDatabase has been deleted.
103 void RunInitCallback(InitCallback callback, const bool* success);
104 void RunSaveCallback(SaveCallback callback, const bool* success);
105 void RunLoadCallback(LoadCallback callback,
106 const bool* success,
107 scoped_ptr<ScopedVector<Contact> > contacts,
108 scoped_ptr<UpdateMetadata> metadata);
109
110 // Initializes the database in |database_dir| and updates |success|.
111 void InitFromTaskRunner(const base::FilePath& database_dir, bool* success);
112
113 // Saves data to disk and updates |success|.
114 void SaveContactsFromTaskRunner(scoped_ptr<ContactPointers> contacts_to_save,
115 scoped_ptr<ContactIds> contact_ids_to_delete,
116 scoped_ptr<UpdateMetadata> metadata,
117 bool is_full_update,
118 bool* success);
119
120 // Loads contacts from disk and updates |success|.
121 void LoadContactsFromTaskRunner(bool* success,
122 ScopedVector<Contact>* contacts,
123 UpdateMetadata* metadata);
124
125 // Used to run blocking tasks in-order.
126 scoped_refptr<base::SequencedTaskRunner> task_runner_;
127
128 scoped_ptr<leveldb::DB> db_;
129
130 // Note: This should remain the last member so it'll be destroyed and
131 // invalidate its weak pointers before any other members are destroyed.
132 base::WeakPtrFactory<ContactDatabase> weak_ptr_factory_;
133
134 DISALLOW_COPY_AND_ASSIGN(ContactDatabase);
135 };
136
137 } // namespace contacts
138
139 #endif // CHROME_BROWSER_CHROMEOS_CONTACTS_CONTACT_DATABASE_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/contacts/contact.proto ('k') | chrome/browser/chromeos/contacts/contact_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698