Merge pull request #8041 from electron/webview-zoom-factor
Add new method to set layout-based zoom level limit
This commit is contained in:
commit
95ab4815de
8 changed files with 86 additions and 6 deletions
|
@ -88,10 +88,14 @@ double WebFrame::GetZoomFactor() const {
|
||||||
return blink::WebView::zoomLevelToZoomFactor(GetZoomLevel());
|
return blink::WebView::zoomLevelToZoomFactor(GetZoomLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebFrame::SetZoomLevelLimits(double min_level, double max_level) {
|
void WebFrame::SetVisualZoomLevelLimits(double min_level, double max_level) {
|
||||||
web_frame_->view()->setDefaultPageScaleLimits(min_level, max_level);
|
web_frame_->view()->setDefaultPageScaleLimits(min_level, max_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebFrame::SetLayoutZoomLevelLimits(double min_level, double max_level) {
|
||||||
|
web_frame_->view()->zoomLimitsChanged(min_level, max_level);
|
||||||
|
}
|
||||||
|
|
||||||
v8::Local<v8::Value> WebFrame::RegisterEmbedderCustomElement(
|
v8::Local<v8::Value> WebFrame::RegisterEmbedderCustomElement(
|
||||||
const base::string16& name, v8::Local<v8::Object> options) {
|
const base::string16& name, v8::Local<v8::Object> options) {
|
||||||
blink::WebExceptionCode c = 0;
|
blink::WebExceptionCode c = 0;
|
||||||
|
@ -227,7 +231,10 @@ void WebFrame::BuildPrototype(
|
||||||
.SetMethod("getZoomLevel", &WebFrame::GetZoomLevel)
|
.SetMethod("getZoomLevel", &WebFrame::GetZoomLevel)
|
||||||
.SetMethod("setZoomFactor", &WebFrame::SetZoomFactor)
|
.SetMethod("setZoomFactor", &WebFrame::SetZoomFactor)
|
||||||
.SetMethod("getZoomFactor", &WebFrame::GetZoomFactor)
|
.SetMethod("getZoomFactor", &WebFrame::GetZoomFactor)
|
||||||
.SetMethod("setZoomLevelLimits", &WebFrame::SetZoomLevelLimits)
|
.SetMethod("setVisualZoomLevelLimits",
|
||||||
|
&WebFrame::SetVisualZoomLevelLimits)
|
||||||
|
.SetMethod("setLayoutZoomLevelLimits",
|
||||||
|
&WebFrame::SetLayoutZoomLevelLimits)
|
||||||
.SetMethod("registerEmbedderCustomElement",
|
.SetMethod("registerEmbedderCustomElement",
|
||||||
&WebFrame::RegisterEmbedderCustomElement)
|
&WebFrame::RegisterEmbedderCustomElement)
|
||||||
.SetMethod("registerElementResizeCallback",
|
.SetMethod("registerElementResizeCallback",
|
||||||
|
@ -244,7 +251,9 @@ void WebFrame::BuildPrototype(
|
||||||
.SetMethod("insertText", &WebFrame::InsertText)
|
.SetMethod("insertText", &WebFrame::InsertText)
|
||||||
.SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript)
|
.SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript)
|
||||||
.SetMethod("getResourceUsage", &WebFrame::GetResourceUsage)
|
.SetMethod("getResourceUsage", &WebFrame::GetResourceUsage)
|
||||||
.SetMethod("clearCache", &WebFrame::ClearCache);
|
.SetMethod("clearCache", &WebFrame::ClearCache)
|
||||||
|
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
|
||||||
|
.SetMethod("setZoomLevelLimits", &WebFrame::SetVisualZoomLevelLimits);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace api
|
} // namespace api
|
||||||
|
|
|
@ -45,7 +45,8 @@ class WebFrame : public mate::Wrappable<WebFrame> {
|
||||||
double SetZoomFactor(double factor);
|
double SetZoomFactor(double factor);
|
||||||
double GetZoomFactor() const;
|
double GetZoomFactor() const;
|
||||||
|
|
||||||
void SetZoomLevelLimits(double min_level, double max_level);
|
void SetVisualZoomLevelLimits(double min_level, double max_level);
|
||||||
|
void SetLayoutZoomLevelLimits(double min_level, double max_level);
|
||||||
|
|
||||||
v8::Local<v8::Value> RegisterEmbedderCustomElement(
|
v8::Local<v8::Value> RegisterEmbedderCustomElement(
|
||||||
const base::string16& name, v8::Local<v8::Object> options);
|
const base::string16& name, v8::Local<v8::Object> options);
|
||||||
|
|
|
@ -691,7 +691,22 @@ Sends a request to get current zoom level, the `callback` will be called with
|
||||||
* `minimumLevel` Number
|
* `minimumLevel` Number
|
||||||
* `maximumLevel` Number
|
* `maximumLevel` Number
|
||||||
|
|
||||||
Sets the maximum and minimum zoom level.
|
**Deprecated:** Call `setVisualZoomLevelLimits` instead to set the visual zoom
|
||||||
|
level limits. This method will be removed in Electron 2.0.
|
||||||
|
|
||||||
|
#### `contents.setVisualZoomLevelLimits(minimumLevel, maximumLevel)`
|
||||||
|
|
||||||
|
* `minimumLevel` Number
|
||||||
|
* `maximumLevel` Number
|
||||||
|
|
||||||
|
Sets the maximum and minimum pinch-to-zoom level.
|
||||||
|
|
||||||
|
#### `contents.setLayoutZoomLevelLimits(minimumLevel, maximumLevel)`
|
||||||
|
|
||||||
|
* `minimumLevel` Number
|
||||||
|
* `maximumLevel` Number
|
||||||
|
|
||||||
|
Sets the maximum and minimum layout-based (i.e. non-visual) zoom level.
|
||||||
|
|
||||||
#### `contents.undo()`
|
#### `contents.undo()`
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,22 @@ Returns `Number` - The current zoom level.
|
||||||
* `minimumLevel` Number
|
* `minimumLevel` Number
|
||||||
* `maximumLevel` Number
|
* `maximumLevel` Number
|
||||||
|
|
||||||
Sets the maximum and minimum zoom level.
|
**Deprecated:** Call `setVisualZoomLevelLimits` instead to set the visual zoom
|
||||||
|
level limits. This method will be removed in Electron 2.0.
|
||||||
|
|
||||||
|
### `webFrame.setVisualZoomLevelLimits(minimumLevel, maximumLevel)`
|
||||||
|
|
||||||
|
* `minimumLevel` Number
|
||||||
|
* `maximumLevel` Number
|
||||||
|
|
||||||
|
Sets the maximum and minimum pinch-to-zoom level.
|
||||||
|
|
||||||
|
### `webFrame.setLayoutZoomLevelLimits(minimumLevel, maximumLevel)`
|
||||||
|
|
||||||
|
* `minimumLevel` Number
|
||||||
|
* `maximumLevel` Number
|
||||||
|
|
||||||
|
Sets the maximum and minimum layout-based (i.e. non-visual) zoom level.
|
||||||
|
|
||||||
### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)`
|
### `webFrame.setSpellCheckProvider(language, autoCorrectWord, provider)`
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,31 @@ webContents.openDevTools({detach: true})
|
||||||
webContents.openDevTools({mode: 'detach'})
|
webContents.openDevTools({mode: 'detach'})
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
// Deprecated
|
||||||
|
webContents.setZoomLevelLimits(1, 2)
|
||||||
|
// Replace with
|
||||||
|
webContents.setVisualZoomLevelLimits(1, 2)
|
||||||
|
```
|
||||||
|
|
||||||
|
## `webFrame`
|
||||||
|
|
||||||
|
```js
|
||||||
|
// Deprecated
|
||||||
|
webFrame.setZoomLevelLimits(1, 2)
|
||||||
|
// Replace with
|
||||||
|
webFrame.setVisualZoomLevelLimits(1, 2)
|
||||||
|
```
|
||||||
|
|
||||||
|
## `<webview>`
|
||||||
|
|
||||||
|
```js
|
||||||
|
// Deprecated
|
||||||
|
webview.setZoomLevelLimits(1, 2)
|
||||||
|
// Replace with
|
||||||
|
webview.setVisualZoomLevelLimits(1, 2)
|
||||||
|
```
|
||||||
|
|
||||||
## Node Headers URL
|
## Node Headers URL
|
||||||
|
|
||||||
This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url`
|
This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url`
|
||||||
|
|
|
@ -100,8 +100,11 @@ WebContents.prototype.sendToAll = function (channel, ...args) {
|
||||||
// Following methods are mapped to webFrame.
|
// Following methods are mapped to webFrame.
|
||||||
const webFrameMethods = [
|
const webFrameMethods = [
|
||||||
'insertText',
|
'insertText',
|
||||||
|
'setLayoutZoomLevelLimits',
|
||||||
|
'setVisualZoomLevelLimits',
|
||||||
'setZoomFactor',
|
'setZoomFactor',
|
||||||
'setZoomLevel',
|
'setZoomLevel',
|
||||||
|
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
|
||||||
'setZoomLevelLimits'
|
'setZoomLevelLimits'
|
||||||
]
|
]
|
||||||
const webFrameMethodsWithResult = [
|
const webFrameMethodsWithResult = [
|
||||||
|
|
|
@ -390,8 +390,11 @@ var registerWebViewElement = function () {
|
||||||
'insertText',
|
'insertText',
|
||||||
'send',
|
'send',
|
||||||
'sendInputEvent',
|
'sendInputEvent',
|
||||||
|
'setLayoutZoomLevelLimits',
|
||||||
|
'setVisualZoomLevelLimits',
|
||||||
'setZoomFactor',
|
'setZoomFactor',
|
||||||
'setZoomLevel',
|
'setZoomLevel',
|
||||||
|
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
|
||||||
'setZoomLevelLimits'
|
'setZoomLevelLimits'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ const {BrowserWindow, protocol, ipcMain} = remote
|
||||||
|
|
||||||
describe('webFrame module', function () {
|
describe('webFrame module', function () {
|
||||||
var fixtures = path.resolve(__dirname, 'fixtures')
|
var fixtures = path.resolve(__dirname, 'fixtures')
|
||||||
|
|
||||||
describe('webFrame.registerURLSchemeAsPrivileged', function () {
|
describe('webFrame.registerURLSchemeAsPrivileged', function () {
|
||||||
it('supports fetch api by default', function (done) {
|
it('supports fetch api by default', function (done) {
|
||||||
webFrame.registerURLSchemeAsPrivileged('file')
|
webFrame.registerURLSchemeAsPrivileged('file')
|
||||||
|
@ -126,4 +127,12 @@ describe('webFrame module', function () {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('supports setting the visual and layout zoom level limits', function () {
|
||||||
|
assert.doesNotThrow(function () {
|
||||||
|
webFrame.setZoomLevelLimits(1, 100)
|
||||||
|
webFrame.setVisualZoomLevelLimits(1, 50)
|
||||||
|
webFrame.setLayoutZoomLevelLimits(0, 25)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue