web_request_api_interface.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright (c) 2020 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #ifndef ELECTRON_SHELL_BROWSER_NET_WEB_REQUEST_API_INTERFACE_H_
  5. #define ELECTRON_SHELL_BROWSER_NET_WEB_REQUEST_API_INTERFACE_H_
  6. #include <set>
  7. #include <string>
  8. #include "net/base/completion_once_callback.h"
  9. #include "services/network/public/cpp/resource_request.h"
  10. namespace extensions {
  11. struct WebRequestInfo;
  12. } // namespace extensions
  13. namespace electron {
  14. // Defines the interface for WebRequest API, implemented by api::WebRequestNS.
  15. class WebRequestAPI {
  16. public:
  17. virtual ~WebRequestAPI() = default;
  18. using BeforeSendHeadersCallback =
  19. base::OnceCallback<void(const std::set<std::string>& removed_headers,
  20. const std::set<std::string>& set_headers,
  21. int error_code)>;
  22. virtual bool HasListener() const = 0;
  23. virtual int OnBeforeRequest(extensions::WebRequestInfo* info,
  24. const network::ResourceRequest& request,
  25. net::CompletionOnceCallback callback,
  26. GURL* new_url) = 0;
  27. virtual int OnBeforeSendHeaders(extensions::WebRequestInfo* info,
  28. const network::ResourceRequest& request,
  29. BeforeSendHeadersCallback callback,
  30. net::HttpRequestHeaders* headers) = 0;
  31. virtual int OnHeadersReceived(
  32. extensions::WebRequestInfo* info,
  33. const network::ResourceRequest& request,
  34. net::CompletionOnceCallback callback,
  35. const net::HttpResponseHeaders* original_response_headers,
  36. scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
  37. GURL* allowed_unsafe_redirect_url) = 0;
  38. virtual void OnSendHeaders(extensions::WebRequestInfo* info,
  39. const network::ResourceRequest& request,
  40. const net::HttpRequestHeaders& headers) = 0;
  41. virtual void OnBeforeRedirect(extensions::WebRequestInfo* info,
  42. const network::ResourceRequest& request,
  43. const GURL& new_location) = 0;
  44. virtual void OnResponseStarted(extensions::WebRequestInfo* info,
  45. const network::ResourceRequest& request) = 0;
  46. virtual void OnErrorOccurred(extensions::WebRequestInfo* info,
  47. const network::ResourceRequest& request,
  48. int net_error) = 0;
  49. virtual void OnCompleted(extensions::WebRequestInfo* info,
  50. const network::ResourceRequest& request,
  51. int net_error) = 0;
  52. virtual void OnRequestWillBeDestroyed(extensions::WebRequestInfo* info) = 0;
  53. };
  54. } // namespace electron
  55. #endif // ELECTRON_SHELL_BROWSER_NET_WEB_REQUEST_API_INTERFACE_H_