OLD | NEW |
---|---|
(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_WEB_RESOURCE_JSON_ASYNCHRONOUS_UNPACKER_H_ | |
6 #define CHROME_BROWSER_WEB_RESOURCE_JSON_ASYNCHRONOUS_UNPACKER_H_ | |
7 | |
8 #include <string> | |
9 | |
10 #include "base/values.h" | |
11 | |
12 // A delegate interface for users of JSONAsynchronousUnpacker. | |
13 class JSONAsynchronousUnpackerDelegate { | |
14 public: | |
15 virtual ~JSONAsynchronousUnpackerDelegate() {} | |
16 | |
17 // This will be called when the response is parsed properly. |parsed_json| | |
18 // contains the decoded information. | |
19 virtual void OnUnpackFinished(const DictionaryValue& parsed_json) = 0; | |
20 | |
21 // This will be called if there is an error while parsing the data. | |
22 virtual void OnUnpackError(const std::string& error_message) = 0; | |
23 }; | |
24 | |
25 // This class coordinates a web resource unpack and parse task which is run | |
26 // asynchronously. Results are sent back to the delegate via one of its | |
27 // OnUnpack<xxx> method. | |
Miranda Callahan
2012/07/09 14:24:30
nit: s/method/methods.
noyau (Ping after 24h)
2012/07/09 15:23:57
Done.
| |
28 class JSONAsynchronousUnpacker { | |
29 public: | |
30 // Creates a WebResourceServiceUnpacker appropriate for the platform. The | |
31 // delegate must be kept around until one of the delegate method is called. | |
Miranda Callahan
2012/07/09 14:24:30
nit: s/method/methods.
noyau (Ping after 24h)
2012/07/09 15:23:57
Done.
| |
32 // In case the delegate is no longer valid, ClearDelegate() must be called. | |
33 static JSONAsynchronousUnpacker* | |
34 Create(JSONAsynchronousUnpackerDelegate* delegate); | |
35 | |
36 virtual ~JSONAsynchronousUnpacker() {} | |
37 | |
38 // Start the decoding. The concrete implementation should delete itself after | |
39 // calling the delegate method. | |
40 virtual void Start(const std::string& json_data) = 0; | |
41 | |
42 // If the delegate is going away it needs to inform the unpacker about it. | |
43 void ClearDelegate() { | |
44 delegate_ = NULL; | |
45 }; | |
46 | |
47 protected: | |
48 explicit JSONAsynchronousUnpacker(JSONAsynchronousUnpackerDelegate* delegate) | |
49 : delegate_(delegate) { | |
50 } | |
51 | |
52 JSONAsynchronousUnpackerDelegate* delegate_; | |
53 }; | |
54 | |
55 #endif // CHROME_BROWSER_WEB_RESOURCE_JSON_ASYNCHRONOUS_UNPACKER_H_ | |
OLD | NEW |