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

Side by Side Diff: chrome/browser/extensions/extension_settings_noop_storage.cc

Issue 7189029: Implement an initial extension settings API. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Use base::Closure for storage callback, style fixes, mac/windows fixes Created 9 years, 6 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) 2011 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 #include "chrome/browser/extensions/extension_settings_noop_storage.h"
6
7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h"
10 #include "base/task.h"
11
12 namespace {
13
14 // Calls OnSuccess() of a callback with settings, after posting back to the UI
15 // thread.
16 class SuccessResultClosure {
Matt Perry 2011/06/23 19:14:11 it seems like a closure class is unnecessary here.
Matt Perry 2011/06/23 19:14:11 btw, in general, your use of closures is not a com
not at google - send to devlin 2011/06/27 08:51:02 Done. Yeah it all came from me not realising how
17 public:
18 // Ownership of callback is taken.
19 SuccessResultClosure(
20 ExtensionSettingsStorage::Callback* callback, DictionaryValue* settings)
21 : callback_(callback), settings_(settings) {
22 }
23
24 ~SuccessResultClosure() {}
25
26 void Run() {
27 MessageLoop::current()->PostTask(
28 FROM_HERE,
29 base::Bind(&SuccessResultClosure::Run2, base::Unretained(this)));
30 }
31
32 private:
33 DISALLOW_COPY_AND_ASSIGN(SuccessResultClosure);
34
35 void Run2() {
36 callback_->OnSuccess(settings_);
37 delete this;
38 }
39
40 scoped_ptr<ExtensionSettingsStorage::Callback> callback_;
41 DictionaryValue* settings_;
42 };
43
44 } // namespace
45
46 void ExtensionSettingsNoopStorage::Get(
47 const std::string& key, ExtensionSettingsStorage::Callback* callback) {
48 (new SuccessResultClosure(callback, new DictionaryValue()))->Run();
49 }
50
51 void ExtensionSettingsNoopStorage::Get(
52 const ListValue& keys, ExtensionSettingsStorage::Callback* callback) {
53 (new SuccessResultClosure(callback, new DictionaryValue()))->Run();
54 }
55
56 void ExtensionSettingsNoopStorage::Get(
57 ExtensionSettingsStorage::Callback* callback) {
58 (new SuccessResultClosure(callback, new DictionaryValue()))->Run();
59 }
60
61 void ExtensionSettingsNoopStorage::Set(
62 const std::string& key,
63 const Value& value,
64 ExtensionSettingsStorage::Callback* callback) {
65 DictionaryValue* settings = new DictionaryValue();
66 settings->Set(key, value.DeepCopy());
67 (new SuccessResultClosure(callback, settings))->Run();
68 }
69
70 void ExtensionSettingsNoopStorage::Set(
71 const DictionaryValue& values,
72 ExtensionSettingsStorage::Callback* callback) {
73 (new SuccessResultClosure(callback, values.DeepCopy()))->Run();
74 }
75
76 void ExtensionSettingsNoopStorage::Remove(
77 const std::string& key, ExtensionSettingsStorage::Callback *callback) {
78 (new SuccessResultClosure(callback, new DictionaryValue()))->Run();
79 }
80
81 void ExtensionSettingsNoopStorage::Remove(
82 const ListValue& keys, ExtensionSettingsStorage::Callback *callback) {
83 (new SuccessResultClosure(callback, new DictionaryValue()))->Run();
84 }
85
86 void ExtensionSettingsNoopStorage::Clear(
87 ExtensionSettingsStorage::Callback* callback) {
88 (new SuccessResultClosure(callback, new DictionaryValue()))->Run();
89 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698