| 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 EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ | 5 #ifndef EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ |
| 6 #define EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ | 6 #define EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 // Some legacy APIs do rely on it though, like webstorePrivate. | 315 // Some legacy APIs do rely on it though, like webstorePrivate. |
| 316 ResponseValue ErrorWithArguments(scoped_ptr<base::ListValue> args, | 316 ResponseValue ErrorWithArguments(scoped_ptr<base::ListValue> args, |
| 317 const std::string& error); | 317 const std::string& error); |
| 318 // Bad message. A ResponseValue equivalent to EXTENSION_FUNCTION_VALIDATE(), | 318 // Bad message. A ResponseValue equivalent to EXTENSION_FUNCTION_VALIDATE(), |
| 319 // so this will actually kill the renderer and not respond at all. | 319 // so this will actually kill the renderer and not respond at all. |
| 320 ResponseValue BadMessage(); | 320 ResponseValue BadMessage(); |
| 321 | 321 |
| 322 // ResponseActions. | 322 // ResponseActions. |
| 323 // | 323 // |
| 324 // Respond to the extension immediately with |result|. | 324 // Respond to the extension immediately with |result|. |
| 325 ResponseAction RespondNow(ResponseValue result); | 325 ResponseAction RespondNow(ResponseValue result) WARN_UNUSED_RESULT; |
| 326 // Don't respond now, but promise to call Respond(...) later. | 326 // Don't respond now, but promise to call Respond(...) later. |
| 327 ResponseAction RespondLater(); | 327 ResponseAction RespondLater() WARN_UNUSED_RESULT; |
| 328 | 328 |
| 329 // This is the return value of the EXTENSION_FUNCTION_VALIDATE macro, which | 329 // This is the return value of the EXTENSION_FUNCTION_VALIDATE macro, which |
| 330 // needs to work from Run(), RunAsync(), and RunSync(). The former of those | 330 // needs to work from Run(), RunAsync(), and RunSync(). The former of those |
| 331 // has a different return type (ResponseAction) than the latter two (bool). | 331 // has a different return type (ResponseAction) than the latter two (bool). |
| 332 static ResponseAction ValidationFailure(ExtensionFunction* function); | 332 static ResponseAction ValidationFailure(ExtensionFunction* function) |
| 333 WARN_UNUSED_RESULT; |
| 333 | 334 |
| 334 // If RespondLater() was used, functions must at some point call Respond() | 335 // If RespondLater() was used, functions must at some point call Respond() |
| 335 // with |result| as their result. | 336 // with |result| as their result. |
| 336 void Respond(ResponseValue result); | 337 void Respond(ResponseValue result); |
| 337 | 338 |
| 338 virtual ~ExtensionFunction(); | 339 virtual ~ExtensionFunction(); |
| 339 | 340 |
| 340 // Helper method for ExtensionFunctionDeleteTraits. Deletes this object. | 341 // Helper method for ExtensionFunctionDeleteTraits. Deletes this object. |
| 341 virtual void Destruct() const = 0; | 342 virtual void Destruct() const = 0; |
| 342 | 343 |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 // | 582 // |
| 582 // AsyncExtensionFunctions implement this method. Return true to indicate that | 583 // AsyncExtensionFunctions implement this method. Return true to indicate that |
| 583 // nothing has gone wrong yet; SendResponse must be called later. Return false | 584 // nothing has gone wrong yet; SendResponse must be called later. Return false |
| 584 // to respond immediately with an error. | 585 // to respond immediately with an error. |
| 585 virtual bool RunAsync() = 0; | 586 virtual bool RunAsync() = 0; |
| 586 | 587 |
| 587 // ValidationFailure override to match RunAsync(). | 588 // ValidationFailure override to match RunAsync(). |
| 588 static bool ValidationFailure(AsyncExtensionFunction* function); | 589 static bool ValidationFailure(AsyncExtensionFunction* function); |
| 589 | 590 |
| 590 private: | 591 private: |
| 591 ResponseAction Run() override; | 592 ResponseAction Run() final; |
| 592 }; | 593 }; |
| 593 | 594 |
| 594 // A SyncExtensionFunction is an ExtensionFunction that runs synchronously | 595 // A SyncExtensionFunction is an ExtensionFunction that runs synchronously |
| 595 // *relative to the browser's UI thread*. Note that this has nothing to do with | 596 // *relative to the browser's UI thread*. Note that this has nothing to do with |
| 596 // running synchronously relative to the extension process. From the extension | 597 // running synchronously relative to the extension process. From the extension |
| 597 // process's point of view, the function is still asynchronous. | 598 // process's point of view, the function is still asynchronous. |
| 598 // | 599 // |
| 599 // This kind of function is convenient for implementing simple APIs that just | 600 // This kind of function is convenient for implementing simple APIs that just |
| 600 // need to interact with things on the browser UI thread. | 601 // need to interact with things on the browser UI thread. |
| 601 class SyncExtensionFunction : public UIThreadExtensionFunction { | 602 class SyncExtensionFunction : public UIThreadExtensionFunction { |
| 602 public: | 603 public: |
| 603 SyncExtensionFunction(); | 604 SyncExtensionFunction(); |
| 604 | 605 |
| 605 protected: | 606 protected: |
| 606 ~SyncExtensionFunction() override; | 607 ~SyncExtensionFunction() override; |
| 607 | 608 |
| 608 // Deprecated: Override UIThreadExtensionFunction and implement Run() instead. | 609 // Deprecated: Override UIThreadExtensionFunction and implement Run() instead. |
| 609 // | 610 // |
| 610 // SyncExtensionFunctions implement this method. Return true to respond | 611 // SyncExtensionFunctions implement this method. Return true to respond |
| 611 // immediately with success, false to respond immediately with an error. | 612 // immediately with success, false to respond immediately with an error. |
| 612 virtual bool RunSync() = 0; | 613 virtual bool RunSync() = 0; |
| 613 | 614 |
| 614 // ValidationFailure override to match RunSync(). | 615 // ValidationFailure override to match RunSync(). |
| 615 static bool ValidationFailure(SyncExtensionFunction* function); | 616 static bool ValidationFailure(SyncExtensionFunction* function); |
| 616 | 617 |
| 617 private: | 618 private: |
| 618 ResponseAction Run() override; | 619 ResponseAction Run() final; |
| 619 }; | 620 }; |
| 620 | 621 |
| 621 class SyncIOThreadExtensionFunction : public IOThreadExtensionFunction { | 622 class SyncIOThreadExtensionFunction : public IOThreadExtensionFunction { |
| 622 public: | 623 public: |
| 623 SyncIOThreadExtensionFunction(); | 624 SyncIOThreadExtensionFunction(); |
| 624 | 625 |
| 625 protected: | 626 protected: |
| 626 ~SyncIOThreadExtensionFunction() override; | 627 ~SyncIOThreadExtensionFunction() override; |
| 627 | 628 |
| 628 // Deprecated: Override IOThreadExtensionFunction and implement Run() instead. | 629 // Deprecated: Override IOThreadExtensionFunction and implement Run() instead. |
| 629 // | 630 // |
| 630 // SyncIOThreadExtensionFunctions implement this method. Return true to | 631 // SyncIOThreadExtensionFunctions implement this method. Return true to |
| 631 // respond immediately with success, false to respond immediately with an | 632 // respond immediately with success, false to respond immediately with an |
| 632 // error. | 633 // error. |
| 633 virtual bool RunSync() = 0; | 634 virtual bool RunSync() = 0; |
| 634 | 635 |
| 635 // ValidationFailure override to match RunSync(). | 636 // ValidationFailure override to match RunSync(). |
| 636 static bool ValidationFailure(SyncIOThreadExtensionFunction* function); | 637 static bool ValidationFailure(SyncIOThreadExtensionFunction* function); |
| 637 | 638 |
| 638 private: | 639 private: |
| 639 ResponseAction Run() override; | 640 ResponseAction Run() final; |
| 640 }; | 641 }; |
| 641 | 642 |
| 642 #endif // EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ | 643 #endif // EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ |
| OLD | NEW |