Add webFrame.setIsolatedWorldSecurityOrigin
Move vector to cc file
Map executed javascript in isolated world to url
Some 💅
Documentation
Use WebSource[] as argument in executeJavaScriptInIsolatedWorld
Refactor and lint with @poiru’s comments
Remove duplicate call
Typo
Lint
This commit is contained in:
parent
389edb6229
commit
ae7b96991c
4 changed files with 82 additions and 13 deletions
|
@ -33,7 +33,7 @@ namespace mate {
|
||||||
template <>
|
template <>
|
||||||
struct Converter<blink::WebLocalFrame::ScriptExecutionType> {
|
struct Converter<blink::WebLocalFrame::ScriptExecutionType> {
|
||||||
static bool FromV8(v8::Isolate* isolate,
|
static bool FromV8(v8::Isolate* isolate,
|
||||||
v8::Handle<v8::Value> val,
|
v8::Local<v8::Value> val,
|
||||||
blink::WebLocalFrame::ScriptExecutionType* out) {
|
blink::WebLocalFrame::ScriptExecutionType* out) {
|
||||||
std::string execution_type;
|
std::string execution_type;
|
||||||
if (!ConvertFromV8(isolate, val, &execution_type))
|
if (!ConvertFromV8(isolate, val, &execution_type))
|
||||||
|
@ -51,6 +51,7 @@ struct Converter<blink::WebLocalFrame::ScriptExecutionType> {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace mate
|
} // namespace mate
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
@ -251,17 +252,34 @@ void WebFrame::ExecuteJavaScript(const base::string16& code,
|
||||||
callback.release());
|
callback.release());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebFrame::ExecuteJavaScriptInIsolatedWorld(int world_id,
|
void WebFrame::ExecuteJavaScriptInIsolatedWorld(
|
||||||
const base::string16& code,
|
int world_id,
|
||||||
mate::Arguments* args) {
|
const std::vector<mate::Dictionary>& scripts,
|
||||||
|
mate::Arguments* args) {
|
||||||
std::vector<blink::WebScriptSource> sources;
|
std::vector<blink::WebScriptSource> sources;
|
||||||
sources.push_back(blink::WebScriptSource(blink::WebString::FromUTF16(code)));
|
|
||||||
|
for (const auto& script : scripts) {
|
||||||
|
base::string16 code;
|
||||||
|
base::string16 url;
|
||||||
|
int start_line = 1;
|
||||||
|
script.Get("url", &url);
|
||||||
|
script.Get("startLine", &start_line);
|
||||||
|
|
||||||
|
if (!script.Get("code", &code)) {
|
||||||
|
args->ThrowError("Invalid 'code'");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sources.emplace_back(blink::WebScriptSource(
|
||||||
|
blink::WebString::FromUTF16(code),
|
||||||
|
blink::WebURL(GURL(url)), start_line));
|
||||||
|
}
|
||||||
|
|
||||||
bool has_user_gesture = false;
|
bool has_user_gesture = false;
|
||||||
args->GetNext(&has_user_gesture);
|
args->GetNext(&has_user_gesture);
|
||||||
|
|
||||||
blink::WebLocalFrame::ScriptExecutionType scriptExecutionType =
|
blink::WebLocalFrame::ScriptExecutionType scriptExecutionType =
|
||||||
blink::WebLocalFrame::kSynchronous;
|
blink::WebLocalFrame::kSynchronous;
|
||||||
args->GetNext(&scriptExecutionType);
|
args->GetNext(&scriptExecutionType);
|
||||||
|
|
||||||
ScriptExecutionCallback::CompletionCallback completion_callback;
|
ScriptExecutionCallback::CompletionCallback completion_callback;
|
||||||
|
@ -274,6 +292,14 @@ void WebFrame::ExecuteJavaScriptInIsolatedWorld(int world_id,
|
||||||
scriptExecutionType, callback.release());
|
scriptExecutionType, callback.release());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebFrame::SetIsolatedWorldSecurityOrigin(int world_id,
|
||||||
|
const std::string& origin_url) {
|
||||||
|
web_frame_->SetIsolatedWorldSecurityOrigin(
|
||||||
|
world_id,
|
||||||
|
blink::WebSecurityOrigin::CreateFromString(
|
||||||
|
blink::WebString::FromUTF8(origin_url)));
|
||||||
|
}
|
||||||
|
|
||||||
void WebFrame::SetIsolatedWorldContentSecurityPolicy(int world_id,
|
void WebFrame::SetIsolatedWorldContentSecurityPolicy(int world_id,
|
||||||
const std::string& security_policy) {
|
const std::string& security_policy) {
|
||||||
web_frame_->SetIsolatedWorldContentSecurityPolicy(
|
web_frame_->SetIsolatedWorldContentSecurityPolicy(
|
||||||
|
@ -337,6 +363,8 @@ void WebFrame::BuildPrototype(
|
||||||
.SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript)
|
.SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript)
|
||||||
.SetMethod("executeJavaScriptInIsolatedWorld",
|
.SetMethod("executeJavaScriptInIsolatedWorld",
|
||||||
&WebFrame::ExecuteJavaScriptInIsolatedWorld)
|
&WebFrame::ExecuteJavaScriptInIsolatedWorld)
|
||||||
|
.SetMethod("setIsolatedWorldSecurityOrigin",
|
||||||
|
&WebFrame::SetIsolatedWorldSecurityOrigin)
|
||||||
.SetMethod("setIsolatedWorldContentSecurityPolicy",
|
.SetMethod("setIsolatedWorldContentSecurityPolicy",
|
||||||
&WebFrame::SetIsolatedWorldContentSecurityPolicy)
|
&WebFrame::SetIsolatedWorldContentSecurityPolicy)
|
||||||
.SetMethod("setIsolatedWorldHumanReadableName",
|
.SetMethod("setIsolatedWorldHumanReadableName",
|
||||||
|
|
|
@ -19,6 +19,7 @@ class WebLocalFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace mate {
|
namespace mate {
|
||||||
|
class Dictionary;
|
||||||
class Arguments;
|
class Arguments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,15 +73,19 @@ class WebFrame : public mate::Wrappable<WebFrame> {
|
||||||
void InsertText(const std::string& text);
|
void InsertText(const std::string& text);
|
||||||
void InsertCSS(const std::string& css);
|
void InsertCSS(const std::string& css);
|
||||||
|
|
||||||
// Excecuting scripts.
|
// Executing scripts.
|
||||||
void ExecuteJavaScript(const base::string16& code, mate::Arguments* args);
|
void ExecuteJavaScript(const base::string16& code, mate::Arguments* args);
|
||||||
void ExecuteJavaScriptInIsolatedWorld(int world_id,
|
void ExecuteJavaScriptInIsolatedWorld(
|
||||||
const base::string16& code,
|
int world_id,
|
||||||
mate::Arguments* args);
|
const std::vector<mate::Dictionary>& scripts,
|
||||||
|
mate::Arguments* args);
|
||||||
void SetIsolatedWorldContentSecurityPolicy(int world_id,
|
|
||||||
const std::string& security_policy);
|
|
||||||
|
|
||||||
|
// Isolated world related methods
|
||||||
|
void SetIsolatedWorldSecurityOrigin(int world_id,
|
||||||
|
const std::string& origin_url);
|
||||||
|
void SetIsolatedWorldContentSecurityPolicy(
|
||||||
|
int world_id,
|
||||||
|
const std::string& security_policy);
|
||||||
void SetIsolatedWorldHumanReadableName(int world_id,
|
void SetIsolatedWorldHumanReadableName(int world_id,
|
||||||
const std::string& name);
|
const std::string& name);
|
||||||
|
|
||||||
|
|
5
docs/api/structures/web-source.md
Normal file
5
docs/api/structures/web-source.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# WebSource Object
|
||||||
|
|
||||||
|
* `code` String
|
||||||
|
* `url` String (optional)
|
||||||
|
* `startLine` Integer (optional) - Default is 1.
|
|
@ -145,6 +145,37 @@ In the browser window some HTML APIs like `requestFullScreen` can only be
|
||||||
invoked by a gesture from the user. Setting `userGesture` to `true` will remove
|
invoked by a gesture from the user. Setting `userGesture` to `true` will remove
|
||||||
this limitation.
|
this limitation.
|
||||||
|
|
||||||
|
### `webFrame.executeJavaScriptInIsolatedWorld(worldId, scripts[, userGesture, callback])`
|
||||||
|
|
||||||
|
* `worldId` Integer
|
||||||
|
* `scripts` [WebSource[]](structures/web-source.md)
|
||||||
|
* `userGesture` Boolean (optional) - Default is `false`.
|
||||||
|
* `callback` Function (optional) - Called after script has been executed.
|
||||||
|
* `result` Any
|
||||||
|
|
||||||
|
Work like `executeJavaScript` but evaluates `scripts` in isolated context.
|
||||||
|
|
||||||
|
### `webFrame.setIsolatedWorldContentSecurityPolicy(worldId, csp)`
|
||||||
|
|
||||||
|
* `worldId` Integer
|
||||||
|
* `csp` String
|
||||||
|
|
||||||
|
Set the content security policy of the isolated world.
|
||||||
|
|
||||||
|
### `webFrame.setIsolatedWorldHumanReadableName(worldId, name)`
|
||||||
|
|
||||||
|
* `worldId` Integer
|
||||||
|
* `name` String
|
||||||
|
|
||||||
|
Set the name of the isolated world. Useful in devtools.
|
||||||
|
|
||||||
|
### `webFrame.setIsolatedWorldSecurityOrigin(worldId, securityOrigin)`
|
||||||
|
|
||||||
|
* `worldId` Integer
|
||||||
|
* `securityOrigin` String
|
||||||
|
|
||||||
|
Set the security origin of the isolated world.
|
||||||
|
|
||||||
### `webFrame.getResourceUsage()`
|
### `webFrame.getResourceUsage()`
|
||||||
|
|
||||||
Returns `Object`:
|
Returns `Object`:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue