OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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_API_WEB_REQUEST_WEB_REQUEST_API_H_ | 5 #ifndef EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_API_H_ |
6 #define EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_API_H_ | 6 #define EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_API_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
11 #include <string> | 11 #include <string> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/memory/singleton.h" | 14 #include "base/memory/singleton.h" |
15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 16 #include "base/strings/string_util.h" |
16 #include "base/time/time.h" | 17 #include "base/time/time.h" |
17 #include "content/public/common/resource_type.h" | 18 #include "content/public/common/resource_type.h" |
18 #include "extensions/browser/api/declarative/rules_registry.h" | 19 #include "extensions/browser/api/declarative/rules_registry.h" |
19 #include "extensions/browser/api/declarative_webrequest/request_stage.h" | 20 #include "extensions/browser/api/declarative_webrequest/request_stage.h" |
20 #include "extensions/browser/api/web_request/web_request_api_helpers.h" | 21 #include "extensions/browser/api/web_request/web_request_api_helpers.h" |
21 #include "extensions/browser/api/web_request/web_request_permissions.h" | 22 #include "extensions/browser/api/web_request/web_request_permissions.h" |
22 #include "extensions/browser/browser_context_keyed_api_factory.h" | 23 #include "extensions/browser/browser_context_keyed_api_factory.h" |
23 #include "extensions/browser/event_router.h" | 24 #include "extensions/browser/event_router.h" |
24 #include "extensions/browser/extension_function.h" | 25 #include "extensions/browser/extension_function.h" |
25 #include "extensions/common/url_pattern_set.h" | 26 #include "extensions/common/url_pattern_set.h" |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 // respective rules registry. | 482 // respective rules registry. |
482 std::map<RulesRegistryKey, | 483 std::map<RulesRegistryKey, |
483 scoped_refptr<extensions::WebRequestRulesRegistry> > rules_registries_; | 484 scoped_refptr<extensions::WebRequestRulesRegistry> > rules_registries_; |
484 | 485 |
485 scoped_ptr<extensions::WebRequestEventRouterDelegate> | 486 scoped_ptr<extensions::WebRequestEventRouterDelegate> |
486 web_request_event_router_delegate_; | 487 web_request_event_router_delegate_; |
487 | 488 |
488 DISALLOW_COPY_AND_ASSIGN(ExtensionWebRequestEventRouter); | 489 DISALLOW_COPY_AND_ASSIGN(ExtensionWebRequestEventRouter); |
489 }; | 490 }; |
490 | 491 |
| 492 class WebRequestInternalFunction : public SyncIOThreadExtensionFunction { |
| 493 public: |
| 494 WebRequestInternalFunction() {} |
| 495 |
| 496 protected: |
| 497 ~WebRequestInternalFunction() override {} |
| 498 |
| 499 const std::string& extension_id_safe() const { |
| 500 return extension() ? extension_id() : base::EmptyString(); |
| 501 } |
| 502 }; |
| 503 |
491 class WebRequestInternalAddEventListenerFunction | 504 class WebRequestInternalAddEventListenerFunction |
492 : public SyncIOThreadExtensionFunction { | 505 : public WebRequestInternalFunction { |
493 public: | 506 public: |
494 DECLARE_EXTENSION_FUNCTION("webRequestInternal.addEventListener", | 507 DECLARE_EXTENSION_FUNCTION("webRequestInternal.addEventListener", |
495 WEBREQUESTINTERNAL_ADDEVENTLISTENER) | 508 WEBREQUESTINTERNAL_ADDEVENTLISTENER) |
496 | 509 |
497 protected: | 510 protected: |
498 ~WebRequestInternalAddEventListenerFunction() override {} | 511 ~WebRequestInternalAddEventListenerFunction() override {} |
499 | 512 |
500 // ExtensionFunction: | 513 // ExtensionFunction: |
501 bool RunSync() override; | 514 bool RunSync() override; |
502 }; | 515 }; |
503 | 516 |
504 class WebRequestInternalEventHandledFunction | 517 class WebRequestInternalEventHandledFunction |
505 : public SyncIOThreadExtensionFunction { | 518 : public WebRequestInternalFunction { |
506 public: | 519 public: |
507 DECLARE_EXTENSION_FUNCTION("webRequestInternal.eventHandled", | 520 DECLARE_EXTENSION_FUNCTION("webRequestInternal.eventHandled", |
508 WEBREQUESTINTERNAL_EVENTHANDLED) | 521 WEBREQUESTINTERNAL_EVENTHANDLED) |
509 | 522 |
510 protected: | 523 protected: |
511 ~WebRequestInternalEventHandledFunction() override {} | 524 ~WebRequestInternalEventHandledFunction() override {} |
512 | 525 |
513 // Unblocks the network request and sets |error_| such that the developer | 526 // Unblocks the network request and sets |error_| such that the developer |
514 // console will show the respective error message. Use this function to handle | 527 // console will show the respective error message. Use this function to handle |
515 // incorrect requests from the extension that cannot be detected by the schema | 528 // incorrect requests from the extension that cannot be detected by the schema |
516 // validator. | 529 // validator. |
517 void RespondWithError( | 530 void RespondWithError( |
518 const std::string& event_name, | 531 const std::string& event_name, |
519 const std::string& sub_event_name, | 532 const std::string& sub_event_name, |
520 uint64 request_id, | 533 uint64 request_id, |
521 scoped_ptr<ExtensionWebRequestEventRouter::EventResponse> response, | 534 scoped_ptr<ExtensionWebRequestEventRouter::EventResponse> response, |
522 const std::string& error); | 535 const std::string& error); |
523 | 536 |
524 // ExtensionFunction: | 537 // ExtensionFunction: |
525 bool RunSync() override; | 538 bool RunSync() override; |
526 }; | 539 }; |
527 | 540 |
528 class WebRequestHandlerBehaviorChangedFunction | 541 class WebRequestHandlerBehaviorChangedFunction |
529 : public SyncIOThreadExtensionFunction { | 542 : public WebRequestInternalFunction { |
530 public: | 543 public: |
531 DECLARE_EXTENSION_FUNCTION("webRequest.handlerBehaviorChanged", | 544 DECLARE_EXTENSION_FUNCTION("webRequest.handlerBehaviorChanged", |
532 WEBREQUEST_HANDLERBEHAVIORCHANGED) | 545 WEBREQUEST_HANDLERBEHAVIORCHANGED) |
533 | 546 |
534 protected: | 547 protected: |
535 ~WebRequestHandlerBehaviorChangedFunction() override {} | 548 ~WebRequestHandlerBehaviorChangedFunction() override {} |
536 | 549 |
537 // ExtensionFunction: | 550 // ExtensionFunction: |
538 void GetQuotaLimitHeuristics( | 551 void GetQuotaLimitHeuristics( |
539 extensions::QuotaLimitHeuristics* heuristics) const override; | 552 extensions::QuotaLimitHeuristics* heuristics) const override; |
540 // Handle quota exceeded gracefully: Only warn the user but still execute the | 553 // Handle quota exceeded gracefully: Only warn the user but still execute the |
541 // function. | 554 // function. |
542 void OnQuotaExceeded(const std::string& error) override; | 555 void OnQuotaExceeded(const std::string& error) override; |
543 bool RunSync() override; | 556 bool RunSync() override; |
544 }; | 557 }; |
545 | 558 |
546 #endif // EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_API_H_ | 559 #endif // EXTENSIONS_BROWSER_API_WEB_REQUEST_WEB_REQUEST_API_H_ |
OLD | NEW |