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());
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void WebFrame::SetLayoutZoomLevelLimits(double min_level, double max_level) {
|
||||
web_frame_->view()->zoomLimitsChanged(min_level, max_level);
|
||||
}
|
||||
|
||||
v8::Local<v8::Value> WebFrame::RegisterEmbedderCustomElement(
|
||||
const base::string16& name, v8::Local<v8::Object> options) {
|
||||
blink::WebExceptionCode c = 0;
|
||||
|
@ -227,7 +231,10 @@ void WebFrame::BuildPrototype(
|
|||
.SetMethod("getZoomLevel", &WebFrame::GetZoomLevel)
|
||||
.SetMethod("setZoomFactor", &WebFrame::SetZoomFactor)
|
||||
.SetMethod("getZoomFactor", &WebFrame::GetZoomFactor)
|
||||
.SetMethod("setZoomLevelLimits", &WebFrame::SetZoomLevelLimits)
|
||||
.SetMethod("setVisualZoomLevelLimits",
|
||||
&WebFrame::SetVisualZoomLevelLimits)
|
||||
.SetMethod("setLayoutZoomLevelLimits",
|
||||
&WebFrame::SetLayoutZoomLevelLimits)
|
||||
.SetMethod("registerEmbedderCustomElement",
|
||||
&WebFrame::RegisterEmbedderCustomElement)
|
||||
.SetMethod("registerElementResizeCallback",
|
||||
|
@ -244,7 +251,9 @@ void WebFrame::BuildPrototype(
|
|||
.SetMethod("insertText", &WebFrame::InsertText)
|
||||
.SetMethod("executeJavaScript", &WebFrame::ExecuteJavaScript)
|
||||
.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
|
||||
|
|
|
@ -45,7 +45,8 @@ class WebFrame : public mate::Wrappable<WebFrame> {
|
|||
double SetZoomFactor(double factor);
|
||||
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(
|
||||
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
|
||||
* `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()`
|
||||
|
||||
|
|
|
@ -44,7 +44,22 @@ Returns `Number` - The current zoom level.
|
|||
* `minimumLevel` 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)`
|
||||
|
||||
|
|
|
@ -86,6 +86,31 @@ webContents.openDevTools({detach: true})
|
|||
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
|
||||
|
||||
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.
|
||||
const webFrameMethods = [
|
||||
'insertText',
|
||||
'setLayoutZoomLevelLimits',
|
||||
'setVisualZoomLevelLimits',
|
||||
'setZoomFactor',
|
||||
'setZoomLevel',
|
||||
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
|
||||
'setZoomLevelLimits'
|
||||
]
|
||||
const webFrameMethodsWithResult = [
|
||||
|
|
|
@ -390,8 +390,11 @@ var registerWebViewElement = function () {
|
|||
'insertText',
|
||||
'send',
|
||||
'sendInputEvent',
|
||||
'setLayoutZoomLevelLimits',
|
||||
'setVisualZoomLevelLimits',
|
||||
'setZoomFactor',
|
||||
'setZoomLevel',
|
||||
// TODO(kevinsawicki): Remove in 2.0, deprecate before then with warnings
|
||||
'setZoomLevelLimits'
|
||||
]
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ const {BrowserWindow, protocol, ipcMain} = remote
|
|||
|
||||
describe('webFrame module', function () {
|
||||
var fixtures = path.resolve(__dirname, 'fixtures')
|
||||
|
||||
describe('webFrame.registerURLSchemeAsPrivileged', function () {
|
||||
it('supports fetch api by default', function (done) {
|
||||
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