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 26 matching lines...) Expand all Loading... |
37 class RenderViewHost; | 37 class RenderViewHost; |
38 class WebContents; | 38 class WebContents; |
39 } | 39 } |
40 | 40 |
41 namespace extensions { | 41 namespace extensions { |
42 class ExtensionFunctionDispatcher; | 42 class ExtensionFunctionDispatcher; |
43 class ExtensionMessageFilter; | 43 class ExtensionMessageFilter; |
44 class QuotaLimitHeuristic; | 44 class QuotaLimitHeuristic; |
45 } | 45 } |
46 | 46 |
| 47 namespace IPC { |
| 48 class Sender; |
| 49 } |
| 50 |
47 #ifdef NDEBUG | 51 #ifdef NDEBUG |
48 #define EXTENSION_FUNCTION_VALIDATE(test) \ | 52 #define EXTENSION_FUNCTION_VALIDATE(test) \ |
49 do { \ | 53 do { \ |
50 if (!(test)) { \ | 54 if (!(test)) { \ |
51 bad_message_ = true; \ | 55 bad_message_ = true; \ |
52 return ValidationFailure(this); \ | 56 return ValidationFailure(this); \ |
53 } \ | 57 } \ |
54 } while (0) | 58 } while (0) |
55 #else // NDEBUG | 59 #else // NDEBUG |
56 #define EXTENSION_FUNCTION_VALIDATE(test) CHECK(test) | 60 #define EXTENSION_FUNCTION_VALIDATE(test) CHECK(test) |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 const std::string& message); | 425 const std::string& message); |
422 | 426 |
423 friend struct content::BrowserThread::DeleteOnThread< | 427 friend struct content::BrowserThread::DeleteOnThread< |
424 content::BrowserThread::UI>; | 428 content::BrowserThread::UI>; |
425 friend class base::DeleteHelper<UIThreadExtensionFunction>; | 429 friend class base::DeleteHelper<UIThreadExtensionFunction>; |
426 | 430 |
427 virtual ~UIThreadExtensionFunction(); | 431 virtual ~UIThreadExtensionFunction(); |
428 | 432 |
429 virtual void SendResponse(bool success) OVERRIDE; | 433 virtual void SendResponse(bool success) OVERRIDE; |
430 | 434 |
| 435 // Sets the Blob UUIDs whose ownership is being transferred to the renderer. |
| 436 void SetTransferredBlobUUIDs(const std::vector<std::string>& blob_uuids); |
| 437 |
431 // The dispatcher that will service this extension function call. | 438 // The dispatcher that will service this extension function call. |
432 base::WeakPtr<extensions::ExtensionFunctionDispatcher> dispatcher_; | 439 base::WeakPtr<extensions::ExtensionFunctionDispatcher> dispatcher_; |
433 | 440 |
434 // The RenderViewHost we will send responses to. | 441 // The RenderViewHost we will send responses to. |
435 content::RenderViewHost* render_view_host_; | 442 content::RenderViewHost* render_view_host_; |
436 | 443 |
437 // The RenderFrameHost we will send responses to. | 444 // The RenderFrameHost we will send responses to. |
438 // NOTE: either render_view_host_ or render_frame_host_ will be set, as we | 445 // NOTE: either render_view_host_ or render_frame_host_ will be set, as we |
439 // port code to use RenderFrames for OOPIF. See http://crbug.com/304341. | 446 // port code to use RenderFrames for OOPIF. See http://crbug.com/304341. |
440 content::RenderFrameHost* render_frame_host_; | 447 content::RenderFrameHost* render_frame_host_; |
441 | 448 |
442 // The content::BrowserContext of this function's extension. | 449 // The content::BrowserContext of this function's extension. |
443 content::BrowserContext* context_; | 450 content::BrowserContext* context_; |
444 | 451 |
445 private: | 452 private: |
446 class RenderHostTracker; | 453 class RenderHostTracker; |
447 | 454 |
448 virtual void Destruct() const OVERRIDE; | 455 virtual void Destruct() const OVERRIDE; |
449 | 456 |
| 457 // TODO(tommycli): Remove once RenderViewHost is gone. |
| 458 IPC::Sender* GetIPCSender(); |
| 459 int GetRoutingID(); |
| 460 |
450 scoped_ptr<RenderHostTracker> tracker_; | 461 scoped_ptr<RenderHostTracker> tracker_; |
451 | 462 |
452 DelegateForTests* delegate_; | 463 DelegateForTests* delegate_; |
| 464 |
| 465 // The blobs transferred to the renderer process. |
| 466 std::vector<std::string> transferred_blob_uuids_; |
453 }; | 467 }; |
454 | 468 |
455 // Extension functions that run on the IO thread. This type of function avoids | 469 // Extension functions that run on the IO thread. This type of function avoids |
456 // a roundtrip to and from the UI thread (because communication with the | 470 // a roundtrip to and from the UI thread (because communication with the |
457 // extension process happens on the IO thread). It's intended to be used when | 471 // extension process happens on the IO thread). It's intended to be used when |
458 // performance is critical (e.g. the webRequest API which can block network | 472 // performance is critical (e.g. the webRequest API which can block network |
459 // requests). Generally, UIThreadExtensionFunction is more appropriate and will | 473 // requests). Generally, UIThreadExtensionFunction is more appropriate and will |
460 // be easier to use and interface with the rest of the browser. | 474 // be easier to use and interface with the rest of the browser. |
461 class IOThreadExtensionFunction : public ExtensionFunction { | 475 class IOThreadExtensionFunction : public ExtensionFunction { |
462 public: | 476 public: |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 virtual bool RunSync() = 0; | 581 virtual bool RunSync() = 0; |
568 | 582 |
569 // ValidationFailure override to match RunSync(). | 583 // ValidationFailure override to match RunSync(). |
570 static bool ValidationFailure(SyncIOThreadExtensionFunction* function); | 584 static bool ValidationFailure(SyncIOThreadExtensionFunction* function); |
571 | 585 |
572 private: | 586 private: |
573 virtual ResponseAction Run() OVERRIDE; | 587 virtual ResponseAction Run() OVERRIDE; |
574 }; | 588 }; |
575 | 589 |
576 #endif // EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ | 590 #endif // EXTENSIONS_BROWSER_EXTENSION_FUNCTION_H_ |
OLD | NEW |