feat: add V8CacheOptions webpreference (#23842)

* feat: add V8CacheOptions webpreference

* address review comments
This commit is contained in:
Robo 2020-05-31 20:09:23 -07:00 committed by GitHub
parent aa8d81511f
commit f67aff2704
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 0 deletions

View file

@ -387,6 +387,13 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
Default is `true`.
* `enableWebSQL` Boolean (optional) - Whether to enable the [WebSQL api](https://www.w3.org/TR/webdatabase/).
Default is `true`.
* `v8CacheOptions` String (optional) - Enforces the v8 code caching policy
used by blink. Accepted values are
* `none` - Disables code caching
* `code` - Heuristic based code caching
* `bypassHeatCheck` - Bypass code caching heuristics but with lazy compilation
* `bypassHeatCheckAndEagerCompile` - Same as above except compilation is eager.
Default policy is `code`.
When setting minimum or maximum window size with `minWidth`/`maxWidth`/
`minHeight`/`maxHeight`, it only constrains the users. It won't prevent you from

View file

@ -26,6 +26,7 @@
#include "shell/common/gin_converters/value_converter.h"
#include "shell/common/gin_helper/dictionary.h"
#include "shell/common/options_switches.h"
#include "third_party/blink/public/mojom/v8_cache_options.mojom.h"
#if defined(OS_WIN)
#include "ui/gfx/switches.h"
@ -485,6 +486,23 @@ void WebContentsPreferences::OverrideWebkitPrefs(
std::string encoding;
if (GetAsString(&preference_, "defaultEncoding", &encoding))
prefs->default_encoding = encoding;
std::string v8_cache_options;
if (GetAsString(&preference_, "v8CacheOptions", &v8_cache_options)) {
if (v8_cache_options == "none") {
prefs->v8_cache_options = blink::mojom::V8CacheOptions::kNone;
} else if (v8_cache_options == "code") {
prefs->v8_cache_options = blink::mojom::V8CacheOptions::kCode;
} else if (v8_cache_options == "bypassHeatCheck") {
prefs->v8_cache_options =
blink::mojom::V8CacheOptions::kCodeWithoutHeatCheck;
} else if (v8_cache_options == "bypassHeatCheckAndEagerCompile") {
prefs->v8_cache_options =
blink::mojom::V8CacheOptions::kFullCodeWithoutHeatCheck;
} else {
prefs->v8_cache_options = blink::mojom::V8CacheOptions::kDefault;
}
}
}
WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPreferences)