Commit Graph

4529 Commits

Author SHA1 Message Date
Florian Bruhin
2eeaef83ba Add tests for :zoom-* with --quiet 2018-10-05 16:25:26 +02:00
Florian Bruhin
fb491c1578 Add test for :yank --quiet 2018-10-05 16:23:31 +02:00
Florian Bruhin
616cd0a59c Fix and test remaining PDF.js OSError issues 2018-10-05 16:06:39 +02:00
Florian Bruhin
b5b4fda676 Fix issues with PDF.js path changes 2018-10-05 14:05:54 +02:00
Milo Gertjejansen
7f0ae252cd New config: More powerful :config- commands: add #4283
Made requested changes:

- Separated list add and dict add commands.
- Separated list and dict completion models.
- Created tests for each command.
- Simplified the configmodel options by breaking them into a separate
function to do work that is similar.
- General simplification of both add commands.

Continues #2794
2018-10-04 18:42:33 -05:00
Florian Bruhin
28ca292b9e Fix lint 2018-10-04 19:35:38 +02:00
Florian Bruhin
6c245ca7a0 Merge remote-tracking branch 'origin/pr/4220' 2018-10-04 19:34:03 +02:00
Florian Bruhin
923b726e38 Merge remote-tracking branch 'origin/pr/4220' 2018-10-04 19:28:01 +02:00
Florian Bruhin
29142f763c Use a proper data dir for PDF.js 2018-10-04 16:54:44 +02:00
Ryan Roden-Corrent
a5b3670477
Fix pylint/flake8 errors in configtypes. 2018-10-03 21:44:10 -04:00
Ryan Roden-Corrent
59f9d31d4b
Fix up configtypes based on code review.
- Remove stray statements
- add an early bail-out if we can't parse a color function
- add more test cases
2018-10-03 17:41:48 -04:00
Ryan Roden-Corrent
66cc5f5ea4
Add support for more values in QtColor config type.
Recent changes in the completion highlighter mandate that
config.val.colors.completion.match be changed from a QssColor to a
QtColor. However, the latter accepts fewer formats. To avoid breaking
configs, this allows QtColors to be specified using all the same formats
as QssColors, excluding gradients.

I separated the QssColor and QtColor tests as the previous approach of
generating the tests made adding tests for QtColor more complicated.

While working on this I discovered that Qt's css parser is potentially
broken around parsing hsv percentages and filed
https://bugreports.qt.io/browse/QTBUG-70897.

For consistency, I made our parser similarly broken.

You can show the bug in qutebrowser right now by noting that the
following have different effects:

```
set colors.completion.odd.bg 'hsv(100%, 100%, 100%)'
set colors.completion.odd.bg 'hsv(358, 255, 255)'
```
2018-10-02 17:30:43 -04:00
Florian Bruhin
1cedfc5470 Add test 2018-10-02 13:38:28 +02:00
Jay Kamat
2b35d04607
Select text node in tests to imitate real selections 2018-09-30 23:29:24 -07:00
Florian Bruhin
4b495303f9 Merge remote-tracking branch 'origin/pr/4191' 2018-09-30 22:01:57 +02:00
Florian Bruhin
b8be4e5915 Merge remote-tracking branch 'origin/pr/4266' 2018-09-30 21:52:35 +02:00
Florian Bruhin
96f28c6f72 Show errors on invalid --mode argument for :hint 2018-09-30 11:45:59 +02:00
Jay Kamat
322b053cbf
Merge branch 'master' of https://github.com/qutebrowser/qutebrowser into jay/visible-update-titles 2018-09-29 12:29:50 -07:00
Jay Kamat
a5f9115b2f
Only apply visibility toggle if we have >10 tabs 2018-09-29 12:26:42 -07:00
zaowen
5b089d0460 Minor requested changes 2018-09-29 02:00:42 -06:00
Florian Bruhin
f780974d07 Allow fallback=False with config.get/get_obj 2018-09-28 16:40:08 +02:00
Florian Bruhin
5527d27ba7 Merge remote-tracking branch 'origin/pr/4189' 2018-09-28 13:02:45 +02:00
Jay Kamat
3081d017ce
Move tabbedbrowser test to tabwidget 2018-09-27 23:30:54 -07:00
Jay Kamat
de148bb778
Fix tabwidget tests 2018-09-27 19:59:43 -07:00
Jay Kamat
14e55eae49
Merge remote-tracking branch 'upstream/master' into jay/max-tab 2018-09-27 19:03:15 -07:00
Jay Kamat
d64771b8e3
Clean up tab min/max width tests 2018-09-27 18:57:26 -07:00
Florian Bruhin
f3408710ba Fix webkitelem tests 2018-09-27 23:09:44 +02:00
Florian Bruhin
718376f154 Refactor JS escaping
This renames javascript.convert_js_arg() to javascript.to_js() and uses that
instead of string_escape() where possible.
2018-09-27 16:36:28 +02:00
Florian Bruhin
38a4734b9a Merge remote-tracking branch 'origin/pr/4204' 2018-09-27 16:28:30 +02:00
Florian Bruhin
905863f74e Fix lint 2018-09-27 10:08:50 +02:00
Florian Bruhin
56b8447fb9 Use callback.assert_called_with() 2018-09-27 10:06:50 +02:00
Jay Kamat
e01682f51d
Add tabs.max_width setting 2018-09-26 21:39:45 -07:00
Florian Bruhin
a27a8ada4d Use qtbot.wait_callback 2018-09-26 11:45:45 +02:00
Florian Bruhin
73cba046e5 Use wait argument with qtbot.assert_not_emitted 2018-09-26 11:27:58 +02:00
Florian Bruhin
a292664ca0 Merge remote-tracking branch 'origin/pr/4218' 2018-09-26 11:20:45 +02:00
Florian Bruhin
133ed5604e Fix lint 2018-09-26 08:43:13 +02:00
Florian Bruhin
62ea8f6ec2 Merge remote-tracking branch 'origin/pr/4245' 2018-09-26 08:42:54 +02:00
Florian Bruhin
d5826b8458 Skip visible/invisible test on Windows
See #4230
2018-09-26 08:34:31 +02:00
Florian Bruhin
9ab3188b43 Disable SSL download test on Qt 5.11.2
See #4240

Remains to be seen if it looks better on Qt 5.12, but it seems like it?
2018-09-24 18:15:06 +02:00
Florian Bruhin
04e7b89978 Add delay after zooming
It looks like zooming happens asynchronously, so we need to make sure we scroll
after zoomed in.

See #4025
2018-09-24 16:39:18 +02:00
Florian Bruhin
12a4ad18be Ignore another Chromium error
See #4025
2018-09-24 12:18:30 +02:00
Florian Bruhin
9eccaea09c Normalize mhtml for Qt 5.12
See #4025
2018-09-24 11:04:18 +02:00
Florian Bruhin
87c6b361f8 Compare strings in mhtml tests 2018-09-24 10:25:33 +02:00
Florian Bruhin
165ed19bef Qt 5.12: Ignore new warnings from in_progress_cache_impl.cc
Fixes #4247
2018-09-24 10:24:41 +02:00
Jay Kamat
77703c5263
Add benchmark for _tab_pinned 2018-09-23 22:58:48 -07:00
Florian Bruhin
25e7ee1dd0 Fix wrong signal order in test_question
This never raised because of a pytest-qt bug.
2018-09-23 21:03:03 +02:00
Florian Bruhin
1e32d1e01f Fix PDFJS/qutescheme end2end tests 2018-09-23 17:40:10 +02:00
Ryan Roden-Corrent
0fed563a02
Use QSyntaxHighlighter for completion.
This is a more "Qt" way of highlighting syntax, and works around the
problems of #4199 without resorting to complicated html escaping.

The tests are more straightforward with less mocking, but do involve
testing a private class.
2018-09-22 12:13:28 -04:00
Jay Kamat
f0568ece57
Make convert_js_arg public and use it for dispatch_element in webkit 2018-09-21 18:08:04 -07:00
Zarthur
b41d7ba203
Merge branch 'master' into master 2018-09-20 11:02:27 -06:00
zaowen
a75587f270 blah 2018-09-20 10:51:33 -06:00
zaowen
5ecfe43ebb ci dumb 2018-09-20 10:49:37 -06:00
zaowen
c4cca4755e Add adblock import directory unit test 2018-09-20 10:38:50 -06:00
Ryan Roden-Corrent
2eacf4bd94
Clean up completiondelegate tests.
Respond to code review comments to reduce mocking and clean up comments.
2018-09-18 20:40:06 -04:00
Ellis
398519762b Merge branch 'master' of https://github.com/qutebrowser/qutebrowser 2018-09-18 13:33:30 -04:00
Ellis
343de2db51 Added case for whitelisted url with * wildcard 2018-09-18 13:33:05 -04:00
Florian Bruhin
c56b950cc5 Don't open any error pages in test_invocations 2018-09-18 17:25:24 +02:00
Florian Bruhin
46435bcd2f Use always/never instead of force-on/force-off 2018-09-18 11:12:50 +02:00
Florian Bruhin
17c7663ad0 Make content.headers.referer work on QtWebEngine 2018-09-17 19:40:18 +02:00
Florian Bruhin
bd21686e0d Add webrtc_ip_handling_policy setting
This exposes all possible values, but before
https://codereview.qt-project.org/#/c/240121/ we won't be able to change those
at runtime (or enable URL patterns, which thankfully weren't enabled for the
old setting).

In theory, it'd be possible to handle the "public-interface-only" value via
QWebEngineSettings without requiring a restart, but it isn't worth the trouble.

Closes #4201
2018-09-17 18:39:41 +02:00
Florian Bruhin
6fe09c12da Add a setting for Chromium's low-end device mode
See #4039
See #2377
2018-09-17 18:39:41 +02:00
Florian Bruhin
574d7c6a11 Add settings for process models
See #4039, #2377
Fixes #4040
2018-09-17 17:22:51 +02:00
Florian Bruhin
e105edebf5 Wait for follow_selected_done 2018-09-15 20:46:11 +02:00
Ryan Roden-Corrent
4f733333c3
Remove unused imports in test_completiondelegate. 2018-09-15 14:45:18 -04:00
Florian Bruhin
f817e5d271 Fix typo 2018-09-15 20:41:56 +02:00
Florian Bruhin
abff44def6 Get rid of end-of-doc-workaround in caret browsing
In Qt < 5.10 (and also sometimes on Windows), we get extra spaces or newlines
when moving to the end of the document. However, this only happens *sometimes*,
and manual testing confirms that with the current workaround, we actually lose
the last char in the selection.

I'm not sure what's happening there, but instead of making things worse with
the workaround, let's just be a bit less strict with the checking there and
accept both variants... This seems like some Chromium bug we can't do much
about.
2018-09-15 20:39:35 +02:00
Ryan Roden-Corrent
102c6b99dd
Don't highlight html escapes in completion.
Resolves #4199.

To avoid accidentally highlighting characters that were introduced by
html escaping the text before feeding it to setHtml, we can't just
escape the whole string before adding the highlighting. Instead, we need
to break the string up on the pattern, format and escape the individual
parts, then join them back together.

re.escape includes empty strings if there is a match at the start/end,
which ensures that matches always land on odd indices:

https://docs.python.org/3/library/re.html#re.split

> If there are capturing groups in the separator and it matches at the
> start of the string, the result will start with an empty string. The
> same holds for the end of the string
2018-09-15 14:06:28 -04:00
Ryan Roden-Corrent
4f99af5876
Don't escape quotes in completion text.
Resolves the example case in #4199, but not the larger problem. We don't
need to escape quotes as we don't put the string in an attribute value.
From the docs at
https://docs.python.org/3/library/html.html#html.escape:

> If the optional flag quote is true, the characters (") and (') are also
> translated; this helps for inclusion in an HTML attribute value
> delimited by quotes, as in <a href="...">.

Escaping quotes means we end up with a literal &#x27; in the completion
view wherever there is a quote in the source text.

However, problem in #4199, where unexpected parts of the text are
highlighted, can also happen with '<', '>', and '&', which still must be
escaped.
2018-09-15 13:39:49 -04:00
Ryan Roden-Corrent
28c8e5682a
Unit test CompletionItemDelegate.paint.
There were no unit tests for this whole module. It is difficult to test
due to all the private logic and Qt dependencies, but with a lot of
mocking we can at least validate some of the text handling.

This is a setup to start testing the solution to #4199.

I picked '{' and '}' as placeholders in the test data because they draw
the eye to the 'highlighted' part, and vim even highlights them with
python syntax highlighting. It could be confusing though, as they look
like format strings but are not used that way.
2018-09-15 13:34:07 -04:00
Florian Bruhin
e47bf7a137 Remove duplicate test 2018-09-15 15:49:48 +02:00
Florian Bruhin
f14b37a3c4 Use os.pardir 2018-09-15 15:48:40 +02:00
Florian Bruhin
9edbcfb828 Share setup between webkit_tab and webengine_tab 2018-09-14 23:42:20 +02:00
Florian Bruhin
d74daf9294 Fix lint 2018-09-14 22:52:40 +02:00
Florian Bruhin
5ea8e766f5 Run all :follow-selected tests with/without JS 2018-09-14 22:49:18 +02:00
Florian Bruhin
b5af448196 Fix test_follow_selected_without_a_selection on QtWebKit 2018-09-14 22:46:31 +02:00
Florian Bruhin
4ae78d9bb2 Revert "Revert "Make sure we wait until follow_selected is done""
This reverts commit 200c11625f.
2018-09-14 22:40:47 +02:00
Florian Bruhin
200c11625f Revert "Make sure we wait until follow_selected is done"
This reverts commit bc45aa33e0.
2018-09-14 21:58:42 +02:00
Florian Bruhin
8d066690e6 Fix :follow-selected tests 2018-09-14 21:57:37 +02:00
Florian Bruhin
bc45aa33e0 Make sure we wait until follow_selected is done 2018-09-14 20:18:33 +02:00
Florian Bruhin
afe16d3a7c Avoid using qapp with autouse=True 2018-09-13 22:49:25 +02:00
Florian Bruhin
68af23b76e Try getting selection multiple times 2018-09-13 22:41:30 +02:00
Florian Bruhin
62458c7a84 Register a qute://testdata/ scheme for unit tests
This is more lightweight than running a webserver (probably about the same as
file://), but allows us to use relative links in files.
2018-09-13 22:32:00 +02:00
Jesko Dujmovic
25e396faea
Merge branch 'master' into master 2018-09-13 22:06:04 +02:00
Florian Bruhin
f9327731b8 Handle UTF-8 byte order marks in Greasemonkey scripts
See e.g. https://github.com/jerone/UserScripts/issues/135
2018-09-12 23:54:32 +02:00
Florian Bruhin
91b8002dd5 Clean up workaround for sqlite opening errors
Now that we know the real cause, we can be a bit stricter with our workaround.
2018-09-12 16:06:57 +02:00
Florian Bruhin
c2a072f9fe Fix handling of sqlite out of memory errors
The "error_code == -1" check never passed, as error_code (confusingly) is a
string of a number.
2018-09-12 01:36:50 +02:00
Florian Bruhin
d80d9eb26c Allow downloading from PDF.js
When we click the download button in PDF.js, it downloads a blob://qute:...
URL. We can detect that and force a download rather than opening it in PDF.js
again.

Note that what actually happens depends on the Qt version and backend:

QtWebKit (any Qt version):
Downloads always work properly (regardless of Qt version).

QtWebEngine, Qt 5.7.1:
Downloads work.

QtWebEngine, Qt 5.9 - 5.11:
Downloads won't work as we need to tell PDF.js to not use blob: URLs:
https://bugreports.qt.io/browse/QTBUG-70420 - in theory, PDF.js could fall back
to downloading the existing qute:// URL, but it has a whitelist of schemes
which does not include qute://... Since it's not in that whitelist, it just
ends up doing nothing at all.

QtWebEngine, Qt 5.12:
Downloads should hopefully work properly again, as we can register the qute://
scheme with Chromium, which allows us to use blob:// URLs.
2018-09-10 13:15:39 +02:00
Florian Bruhin
02641b86fc Don't tell PDF.js to disable createObjectURL on Qt 5.7.1
Looks like things actually work fine there...
2018-09-10 13:01:01 +02:00
Florian Bruhin
bb96f8d297 Fix PDF.js test when no PDF.js is installed 2018-09-10 09:36:29 +02:00
Florian Bruhin
9b04c4b8e0 Add missing tests for qute://pdfjs 2018-09-09 19:22:39 +02:00
Florian Bruhin
b4077a8543 Fix lint 2018-09-09 18:39:22 +02:00
Florian Bruhin
b96898db37 Simplify and lock down PDF.js filename handling 2018-09-09 18:35:09 +02:00
Florian Bruhin
8cfa46f539 100% test coverage for browser.pdfjs 2018-09-09 18:35:09 +02:00
Florian Bruhin
3e25262437 Remove old backend patching 2018-09-09 18:35:09 +02:00
Florian Bruhin
490fe5e1a3 Add utils.guess_mimetype 2018-09-09 18:35:09 +02:00
Florian Bruhin
24148c649e Fix lint and tests 2018-09-09 18:35:09 +02:00
Florian Bruhin
3ad7ae2a2c Remove fix_urls which isn't needed anymore
With qute://pdfjs/web/viewer.html we can use relative URLs
2018-09-09 18:35:09 +02:00
Florian Bruhin
bbcb87e434 Get PDF.js to work
We need to use the /web/viewer.html path so relative references are correct.
2018-09-09 18:35:09 +02:00
Florian Bruhin
7206dde19c Revert "Simplify getting pdfjs main page"
This reverts commit 9c731bde85627308fdde4730b0181a014096cb47.

We need to set some PDF.js options, so we can't just use the default viewer
with ?file=...
2018-09-09 18:35:09 +02:00
Florian Bruhin
8f19820a7a Remove pdfjs.fix_urls
Now that we use qute://pdfjs to show the viewer, we don't need to rewrite any
URLs.
2018-09-09 18:35:09 +02:00