OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSION_FUNCTION_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSION_FUNCTION_H_ |
6 #define CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSION_FUNCTION_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSION_FUNCTION_H_ |
7 | 7 |
8 #include "chrome/browser/extensions/chrome_extension_function_details.h" | 8 #include "chrome/browser/extensions/chrome_extension_function_details.h" |
9 #include "extensions/browser/extension_function.h" | 9 #include "extensions/browser/extension_function.h" |
10 | 10 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 // This method can return NULL if there is no matching browser, which can | 47 // This method can return NULL if there is no matching browser, which can |
48 // happen if only incognito windows are open, or early in startup or shutdown | 48 // happen if only incognito windows are open, or early in startup or shutdown |
49 // shutdown when there are no active windows. | 49 // shutdown when there are no active windows. |
50 // | 50 // |
51 // TODO(stevenjb): Replace this with GetExtensionWindowController(). | 51 // TODO(stevenjb): Replace this with GetExtensionWindowController(). |
52 Browser* GetCurrentBrowser(); | 52 Browser* GetCurrentBrowser(); |
53 | 53 |
54 // Same as above but uses WindowControllerList instead of BrowserList. | 54 // Same as above but uses WindowControllerList instead of BrowserList. |
55 extensions::WindowController* GetExtensionWindowController(); | 55 extensions::WindowController* GetExtensionWindowController(); |
56 | 56 |
57 // Gets the "current" web contents if any. If there is no associated web | 57 // ExtensionFunction: |
58 // contents then defaults to the foremost one. | |
59 content::WebContents* GetAssociatedWebContents() override; | 58 content::WebContents* GetAssociatedWebContents() override; |
| 59 void SetError(const std::string& error) override; |
| 60 const std::string& GetError() const override; |
| 61 |
| 62 protected: |
| 63 ~ChromeUIThreadExtensionFunction() override; |
60 | 64 |
61 // Responds with success/failure. |results_| or |error_| should be set | 65 // Responds with success/failure. |results_| or |error_| should be set |
62 // accordingly. | 66 // accordingly. |
63 void SendResponse(bool success); | 67 void SendResponse(bool success); |
64 | 68 |
65 protected: | 69 // Sets a single Value as the results of the function. |
66 ~ChromeUIThreadExtensionFunction() override; | 70 void SetResult(std::unique_ptr<base::Value> result); |
| 71 |
| 72 // Sets multiple Values as the results of the function. |
| 73 void SetResultList(std::unique_ptr<base::ListValue> results); |
| 74 |
| 75 // Exposed versions of ExtensionFunction::results_ and |
| 76 // ExtensionFunction::error_ that are curried into the response. |
| 77 // These need to keep the same name to avoid breaking existing |
| 78 // implementations, but this should be temporary with crbug.com/648275 |
| 79 // and crbug.com/634140. |
| 80 std::unique_ptr<base::ListValue> results_; |
| 81 std::string error_; |
67 | 82 |
68 private: | 83 private: |
69 ChromeExtensionFunctionDetails chrome_details_; | 84 ChromeExtensionFunctionDetails chrome_details_; |
70 }; | 85 }; |
71 | 86 |
72 // A chrome specific analog to AsyncExtensionFunction. This has access to a | 87 // A chrome specific analog to AsyncExtensionFunction. This has access to a |
73 // chrome Profile. | 88 // chrome Profile. |
74 // | 89 // |
75 // DEPRECATED: Please consider inherting UIThreadExtensionFunction or | 90 // DEPRECATED: Please consider inherting UIThreadExtensionFunction or |
76 // AsyncExtensionFunction directly. Then if you need access to Chrome details, | 91 // AsyncExtensionFunction directly. Then if you need access to Chrome details, |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 static bool ValidationFailure(ChromeSyncExtensionFunction* function); | 132 static bool ValidationFailure(ChromeSyncExtensionFunction* function); |
118 | 133 |
119 private: | 134 private: |
120 // If you're hitting a compile error here due to "final" - great! You're doing | 135 // If you're hitting a compile error here due to "final" - great! You're doing |
121 // the right thing, you just need to extend ChromeUIThreadExtensionFunction | 136 // the right thing, you just need to extend ChromeUIThreadExtensionFunction |
122 // instead of ChromeSyncExtensionFunction. | 137 // instead of ChromeSyncExtensionFunction. |
123 ResponseAction Run() final; | 138 ResponseAction Run() final; |
124 }; | 139 }; |
125 | 140 |
126 #endif // CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSION_FUNCTION_H_ | 141 #endif // CHROME_BROWSER_EXTENSIONS_CHROME_EXTENSION_FUNCTION_H_ |
OLD | NEW |