OLD | NEW |
---|---|
(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 } | |
OLD | NEW |