8000 Add new method to set layout-based zoom level limit by anaisbetts · Pull Request #8041 · electron/electron · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Add new method to set layout-base 8000 d zoom level limit #8041

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Nov 22, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions atom/renderer/api/atom_api_web_frame.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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",
Expand All @@ -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
Expand Down
3 changes: 2 additions & 1 deletion atom/renderer/api/atom_api_web_frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
17 changes: 16 additions & 1 deletion docs/api/web-contents.md
Original file line number Diff line number Diff line change
Expand Up @@ -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()`

Expand Down
17 changes: 16 additions & 1 deletion docs/api/web-frame.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)`

Expand Down
25 changes: 25 additions & 0 deletions docs/tutorial/planned-breaking-changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
3 changes: 3 additions & 0 deletions lib/browser/api/web-contents.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand Down
3 changes: 3 additions & 0 deletions lib/renderer/web-view/web-view.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'
]

Expand Down
9 changes: 9 additions & 0 deletions spec/api-web-frame-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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)
})
})
})
0