feat: migrate webRequest module to NetworkService (Part 4) (#19679)

* chore: use gin in WebRequest

* Add stubs for APIs
This commit is contained in:
Cheng Zhao 2019-08-11 13:24:51 +09:00 committed by GitHub
parent bc0a2d1b28
commit 2dffc9f6eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 255 additions and 23 deletions

View file

@ -5,9 +5,12 @@
#ifndef SHELL_BROWSER_API_ATOM_API_WEB_REQUEST_NS_H_
#define SHELL_BROWSER_API_ATOM_API_WEB_REQUEST_NS_H_
#include "base/values.h"
#include "gin/arguments.h"
#include "gin/handle.h"
#include "gin/wrappable.h"
#include "native_mate/dictionary.h"
#include "native_mate/handle.h"
#include "shell/browser/api/trackable_object.h"
namespace electron {
@ -15,17 +18,46 @@ class AtomBrowserContext;
namespace api {
class WebRequestNS : public mate::TrackableObject<WebRequestNS> {
class WebRequestNS : public gin::Wrappable<WebRequestNS> {
public:
static mate::Handle<WebRequestNS> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
static gin::WrapperInfo kWrapperInfo;
static void BuildPrototype(v8::Isolate* isolate,
v8::Local<v8::FunctionTemplate> prototype);
static gin::Handle<WebRequestNS> Create(v8::Isolate* isolate,
AtomBrowserContext* browser_context);
// gin::Wrappable:
gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
const char* GetTypeName() override;
private:
WebRequestNS(v8::Isolate* isolate, AtomBrowserContext* browser_context);
~WebRequestNS() override;
enum SimpleEvent {
kOnSendHeaders,
kOnBeforeRedirect,
kOnResponseStarted,
kOnCompleted,
kOnErrorOccurred,
};
enum ResponseEvent {
kOnBeforeRequest,
kOnBeforeSendHeaders,
kOnHeadersReceived,
};
using SimpleListener = base::RepeatingCallback<void(const base::Value&)>;
using ResponseCallback = base::OnceCallback<void(const base::Value&)>;
using ResponseListener =
base::RepeatingCallback<void(const base::Value&, ResponseCallback)>;
template <SimpleEvent event>
void SetSimpleListener(gin::Arguments* args);
template <ResponseEvent event>
void SetResponseListener(gin::Arguments* args);
template <typename Listener, typename Event>
void SetListener(Event event, gin::Arguments* args);
};
} // namespace api