Commit Graph

209 Commits

Author SHA1 Message Date
Florian Bruhin
91c909cb80 Merge remote-tracking branch 'origin/pr/3212' 2017-11-19 14:24:40 +01:00
Artur Shaikhullin
b184d2f94d dirty initial port of chrome caretbrowser extension 2017-11-16 19:25:15 +06:00
Ulrik de Muelenaere
b37517e55f Fix error in stylesheet.js on older QtWebEngine 2017-11-09 19:28:36 +02:00
Florian Bruhin
180fb0d65a Fix handling of caret position with Qt 5.10
With Chromium 61 in Qt 5.10, we get null when getting .selectionStart on a
non-text element, like changed in the WhatWG HTML standard:
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-textarea/input-selectionstart

See https://www.chromestatus.com/feature/5740194741354496

Older QtWebEngines and QtWebKit raise InvalidStateError instead.

This also changes the surrounding code and API so None is used to say "there's
no caret position available", which seems like a nicer API.
2017-11-08 16:27:26 +01:00
Ulrik de Muelenaere
ce1494e5ec Update stylesheet.js to ES6 2017-11-03 12:17:35 +02:00
Ulrik de Muelenaere
72c57d16f4 Merge branch 'master' into stylesheet 2017-11-03 12:13:52 +02:00
Florian Bruhin
a14ef88acf Remove some obsolete/deprecated eslint customizations 2017-11-02 20:00:29 +01:00
plexigras
6e624bcd3c
Merge branch 'master' into es6ify-js 2017-11-02 16:44:25 +01:00
Florian Bruhin
9a69ccc9e3 Merge remote-tracking branch 'origin/pr/3100' 2017-11-02 11:32:45 +01:00
Luca Benci
bc0c877b87 Formatting 2017-10-31 23:21:37 +01:00
plexigras
fa8476f762 keep old pac_utils.js 2017-10-31 16:40:09 +01:00
plexigras
905c984148 change some lambdas to functions 2017-10-31 12:54:26 +01:00
plexigras
d4d791f14e es6ified js 2017-10-31 11:53:35 +01:00
Ulrik de Muelenaere
95b41b311f Disable ESLint no-bitwise rule 2017-10-30 22:24:59 +02:00
Ulrik de Muelenaere
3adc2e0f83 Add filter to NodeIterator checking for styled nodes 2017-10-30 19:56:12 +02:00
Ulrik de Muelenaere
34b27437d0 Clarify function names in stylesheet.js 2017-10-30 19:55:37 +02:00
Ulrik de Muelenaere
2fe1a1db89 Remove unused variable 2017-10-29 00:23:11 +02:00
Ulrik de Muelenaere
51d48f6b00 Rewrite user stylesheet injection for WebEngine
This now works correctly in XML documents. The stylesheet is applied at
document creation to reduce flickering, and is updated if the
user_stylesheets setting is changed after page load.
2017-10-28 22:16:29 +02:00
Luca Benci
2947b75ab9 Make eslint happy 2017-10-27 19:52:10 +02:00
Luca Benci
ff7edf79e7 Rethrow exception if we can't handle it 2017-10-25 22:53:54 +02:00
Luca Benci
ae2dad7d18 Only catch the correct exception 2017-10-25 22:43:17 +02:00
Luca Benci
3fd7fb3e14 Do not assume elem.selectionStart exists 2017-10-25 22:38:44 +02:00
Florian Bruhin
8504d41db3 Use Qt API for QtWebEngine scrolling
See #2233
Fixes #2822
2017-10-20 08:58:28 +02:00
Florian Bruhin
5dacf1431f eslint: Disable multiline-comment-style 2017-10-14 21:41:56 +02:00
Luca Benci
f43a597370 Add cursor_position to serialize_elem output 2017-10-12 22:42:40 +02:00
Florian Bruhin
1a381bf0a5 eslint: Report unused disables 2017-09-29 22:29:18 +02:00
Florian Bruhin
a283a1bb65 Merge branch 'master' into new-config 2017-09-09 10:52:02 +02:00
Florian Bruhin
1938520878 eslint: Turn off function-paren-newline 2017-09-04 15:48:33 +02:00
Ryan Roden-Corrent
71b71dbc58 Merge remote-tracking branch 'upstream/master' into HEAD 2017-08-06 18:13:49 -04:00
Ryan Roden-Corrent
8745f80d90 Fix qute://history SQL bug.
The javascript history page was requesting the new start_time in ms, but
the python code was expecting seconds. This is fixed by removing all the
millisecond translations in the python code and only translating to
milliseconds in the javascript code that formats dates.
2017-07-13 08:54:21 -04:00
Florian Bruhin
d7036fe8a8 Clarify history_session_interval and rename it to _gap_interval
"session" is already overloaded enough.
2017-07-04 15:08:04 +02:00
Ryan Roden-Corrent
e201a42383 Fix eslint errors 2017-06-19 07:44:11 -04:00
Ryan Roden-Corrent
eb61269068 Fix qute://history javascript for SQL.
Returning "next" was no longer possible as the SQL query does not fetch
more items than necessary. This is solved by using a start time, a
limit, and an offset. The offset is needed to prevent fetching duplicate
items if multiple entries have the same timestamp.

Two of the history tests that relied on qute://history were changed to
rely on qute://history/data instead to make them less failure-prone.
2017-06-19 07:44:11 -04:00
Florian Bruhin
695a2656fe Rename webelem.js functions to match WebEngineElem
Fixes #2726
2017-06-16 23:14:17 +02:00
Florian Bruhin
b687ede25c Adjust eslintrc for eslint 4.0 2017-06-12 09:23:20 +02:00
Florian Bruhin
822623f2ed Finally update copyrights... 2017-05-09 21:37:03 +02:00
Jay Kamat
c9953b9f0d
Add support for follow_selected via fake-clicks 2017-05-08 22:31:29 -07:00
Florian Bruhin
a5b1c293a4 Ignore comment position with eslint 2017-04-28 20:29:20 +02:00
Florian Bruhin
421aa0d319 Also try harder to get text content 2017-04-28 19:11:02 +02:00
Florian Bruhin
0c653c4703 Handle elem.className in webelem.js 2017-04-28 14:48:30 +02:00
Florian Bruhin
513f83d446 Try harder to get tag name from element
This could happen for any of the attributes, but for tagName this actually
happens in the wild... Since elem.tagName is equal to elem.nodeName we just try
to use this.

Fixes #2569
2017-04-28 14:48:30 +02:00
Imran Sobir
18082526f4 Show hostname in history page. 2017-04-24 10:59:11 +05:00
Florian Bruhin
7652b6ae03 Merge commit '724e6b29c38a55f722f17997379f1ebe190fa6db' 2017-03-20 09:11:47 +01:00
Imran Sobir
724e6b29c3 Make session interval configurable. 2017-03-16 12:11:16 +05:00
Imran Sobir
fb97c6dffc Send history item atime in milliseconds. 2017-03-16 12:03:40 +05:00
Imran Sobir
ccbf8572c3 Check for null when receiving history. 2017-03-09 22:16:46 +05:00
Imran Sobir
19b7f779ef Fix ambiguity in history table ID. 2017-03-09 21:41:57 +05:00
Florian Bruhin
bc0a9cd94d Move cursor to end with input elements on QtWebEngine 2017-03-01 17:30:48 +01:00
Imran Sobir
9e6b0240f6 Put javascript in module, fix lint errors 2017-02-28 19:23:31 +05:00
Imran Sobir
e8db008671 Move qute:history javascript to own file. 2017-02-27 22:44:13 +05:00
Florian Bruhin
9656449545 Merge branch 'master' of https://github.com/kiryl/qutebrowser into kiryl-master 2017-02-25 17:53:05 +01:00
Florian Bruhin
23183bd918 Fix hinting in ACE editors 2017-02-24 15:12:35 +01:00
Florian Bruhin
3feb4211fe Don't show hints for opacity: 0 elements
Fixes #2347
2017-02-24 09:13:25 +01:00
Kirill A. Shutemov
ac3c8bb319 pac_utils.js: remove excessive escaping
Looks like the implementation was derived from Mozilla's
nsProxyAutoConfig.js, which is evaluated twice. It requires double
escaping.

In our case excessive escaping is harmful.

In particular it makes ip-matching regexp in isInNet() invalid and makes
it really slow as we go to dnsResolve() all the time, even when it's not
needed.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
2017-02-21 15:23:27 +03:00
Kirill A. Shutemov
13213724b0 PAC: fix isPlainHostName()
Fix isPlainHostName() implementation and add test-case for it.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
2017-02-21 12:16:46 +03:00
Florian Bruhin
348a50ad69 Fix inserting text with QtWebEngine
The insertText event doesn't seem to be available with newer Chromium releases,
which means this broke (probably with Qt 5.7.1).

Fixes #2183
Fixes #2217
2017-02-06 08:06:58 +01:00
Florian Bruhin
545539f28d Do more sophisticated clicking for hints with QtWebEngine
We now use click() or focus() in JS if possible, or manually follow links in a
href attribute.

While this probably introduces some new corner cases, it fixes a handful of
older ones:

- window.open() in JS can now be handled correctly as we don't need hacks in
  createWindow anymore.
- Focusing input fields with images now works - fixes #1613, #1879
- Hinting now works better on QtWebEngine with Qt 5.8 - fixes #2273

Also see #70.
2017-02-03 23:21:57 +01:00
Florian Bruhin
61e598552e eslint: Turn off prefer-destructuring 2017-01-08 15:36:51 +01:00
Florian Bruhin
16c8c1b189 Document how webelem.js works 2017-01-07 12:21:22 +01:00
Nikolay Amiantov
a7d96e0b85 Ignore ESLint warnings for Mozilla's PAC utils 2016-12-07 02:01:19 +03:00
Nikolay Amiantov
87890dab20 Add PAC files support 2016-12-07 02:01:19 +03:00
Florian Bruhin
ea44c6d4b9 eslint: Turn off capitalized-comments 2016-11-26 11:48:57 +01:00
Florian Bruhin
25358bb5fc Clean up webelem.text/set_text
webelem.text() was only used without use_js=True from webelem.__str__.
Now we instead default to the use_js=True behavior and renamed the
method from text() to value().

The old behavior is instead directly implemented in __str__.

This changes how webelem.value (aka text) handles elements for which
is_content_editable() returns True, but I haven't found any cases where
this makes a difference.

This also fixes getting existing text from elements with QtWebEngine,
which closes #1957.
2016-11-16 12:34:27 +01:00
Kevin Velghe
59536828a1 Implement hint target "current" for webengine 2016-10-17 23:33:44 +02:00
Kevin Velghe
ed91e1d4c8 Implement __setitem__ in WebEngineElement 2016-10-17 14:14:45 +02:00
Florian Bruhin
4407ef032a Clean up JS 2016-10-03 07:01:22 +02:00
Florian Bruhin
323d5fc9e7 Also fix scroll.to_perc with position:absolute 2016-10-03 06:59:35 +02:00
Florian Bruhin
fc0b62f122 Revert "scroll.js --> fix scroll measures"
This reverts commit 0c5d95c943.

Using those values is probably okay as long as we adjust for the
off-by-one errors which will follow in the next commit.
2016-10-03 06:51:57 +02:00
Spreadyy
0c5d95c943 scroll.js --> fix scroll measures
scroll measures failed a travis test where document.documentElement.offsetHeight and document.documentElement.scrollHeight diffed by one pixel when the browser zoomed. --> Removed offsetHeight.
2016-09-29 08:59:46 +02:00
Spreadyy
f2e471597d Lint test failed --> edited line length 2016-09-27 23:24:12 +02:00
Spreadyy
a22ae2818c Fix scroll JS for xkcd.
Fix wrong scroll.height for xkcd. Solution according to:
http://stackoverflow.com/questions/1145850/how-to-get-height-of-entire-document-with-javascript
2016-09-27 11:41:47 +02:00
Florian Bruhin
b45f940e72 Move some scroll logic from JS to Python 2016-09-09 14:19:21 +02:00
Florian Bruhin
fca37abf55 QtWebEngine: Implement webelem.classes 2016-09-07 12:31:48 +02:00
Florian Bruhin
948fa033c7 Implement :insert-text for QtWebEngine 2016-09-07 11:20:32 +02:00
Florian Bruhin
919196714b QtWebEngine: Implement WebEngineScroller.at_bottom 2016-09-07 09:32:51 +02:00
Florian Bruhin
927f378c6d Fix eslint 2016-08-18 16:52:53 +02:00
Florian Bruhin
dbb3929bf3 QtWebEngine: Serialize element correctly (find_id) 2016-08-18 15:58:46 +02:00
Florian Bruhin
1ec59f3f0e Add FIXME 2016-08-18 12:46:55 +02:00
Florian Bruhin
9226e3eece QtWebEngine: Implement only_visible for find_all 2016-08-18 12:40:21 +02:00
Florian Bruhin
b596c4da27 eslint: Enable long lines with URLs 2016-08-18 12:40:21 +02:00
Florian Bruhin
274fe58d6d Simplify webelem.js
serialize_elem() now takes care of assigning IDs.
2016-08-18 12:40:21 +02:00
Florian Bruhin
58d2d30e9a Add initial hinting implementation 2016-08-18 12:40:21 +02:00
Florian Bruhin
1138d068e6 Move insert-mode-on-click to tab API / mouse.py
This also implements the feature for QtWebEngine.
2016-08-16 16:22:18 +02:00
Florian Bruhin
eef76dde86 eslint: Disable no-warning-comments 2016-08-16 15:21:37 +02:00
Florian Bruhin
e7d08db6c3 eslint: Turn off sort-keys 2016-08-12 20:58:20 +02:00
Florian Bruhin
a23f3a24b3 scroll.js: Use window.inner{Width,Height}
It seems with document.documentElement.client{Height,Width} we
sometimes (e.g. without <!DOCTYPE html)...) get the full element height
instead of the viewport height.

Fixes #1821.
2016-08-11 11:57:20 +02:00
Florian Bruhin
e7584b9e1e scroll.js: Add commented debug output 2016-08-10 21:44:16 +02:00
Florian Bruhin
fefea4944a QtWebEngine: Make :open-editor work 2016-08-09 16:00:59 +02:00
Florian Bruhin
ca67e2be3c QtWebEngine js: Get rid of webelem.get_element()
Let's do separate JS functions instead so we can easily access them via
utils.javascript.assemble.
2016-08-09 16:00:20 +02:00
Florian Bruhin
1e5b6caa4b QtWebEngine js: Save element in focus_element() 2016-08-09 15:59:57 +02:00
Florian Bruhin
b82823d76a js: Don't leak to global ns in position_caret.js 2016-08-09 13:36:46 +02:00
Florian Bruhin
6b7a39685e Modularize javascript code
We now load the JS code as a QWebEngineScript, which sets up
window._qutebrowser with various "modules". That means we don't have to
pass the whole module every time we want to execute something.
2016-08-09 13:17:44 +02:00
Florian Bruhin
1d9113124b Move .eslintrc to qutebrowser/javascript 2016-08-09 11:04:50 +02:00
Florian Bruhin
4da53480c2 Re-enable and reconfigure eslint 2016-08-09 11:00:26 +02:00
Florian Bruhin
80016006c4 Use and enforce "use strict"; for JS 2016-08-09 09:55:14 +02:00
Florian Bruhin
9a17591fb7 Start getting :open-editor to work with WebEngine
It doesn't actually work yet (as it claims the field is not editable),
but at least does not crash when the backend limitation for the command
is removed.
2016-08-08 16:24:34 +02:00
Florian Bruhin
b8e2d5f8f6 Add initial WebEngineElement implementation
This allows :navigate prev/next to work correctly via the javascript
bridge.
2016-08-08 15:02:58 +02:00
Florian Bruhin
0169f3a24f Add _qutebrowser_ prefix for custom JS functions
With QtWebKit or QtWebEngine with Qt < 5.7, the functions end up in the
page's namespace. We can't easily avoid this, but at least we can name
them in a way which reduces conflicts.
2016-08-05 10:31:07 +02:00
Florian Bruhin
695864281b QtWebEngine: Implement pixel scroll position in JS 2016-07-15 13:04:44 +02:00
Florian Bruhin
7adc8ab2d6 QtWebEngine: Implement scroll position based on JS 2016-07-15 12:52:27 +02:00
Florian Bruhin
c83a8a64dc QtWebEngine: Implement scroll.delta_page 2016-07-13 11:26:53 +02:00
Florian Bruhin
b78b89f04f QtWebEngine: Implement :scroll-perc via JS 2016-07-13 10:55:04 +02:00
Florian Bruhin
a960658617 js: Fix more lint. 2015-05-12 07:16:16 +02:00
Florian Bruhin
28ec7b4698 js: Fix radix parameters. 2015-05-12 07:16:13 +02:00
Florian Bruhin
d1e88c5e8d js: Add 'var'. 2015-05-12 07:16:10 +02:00
Florian Bruhin
3f21ac6b6a js: Use an IIFE. 2015-05-12 07:16:10 +02:00
Florian Bruhin
7a67af24f0 js: Fix some lint. 2015-05-12 07:16:08 +02:00
Florian Bruhin
1f94e0fee6 js: Remove obsolete argument to createTreeWalker.
"createNodeIterator() and createTreeWalker() now have optional arguments and
lack a fourth argument which is no longer relevant given entity references
never made it into the DOM."
2015-05-11 20:33:42 +02:00
Artur Shaik
57cad14714 Move JS snippet in external js file. 2015-05-07 12:41:02 +06:00