From 77a3805e3b7c6ee7daeb2db660bb4b2789b33da2 Mon Sep 17 00:00:00 2001 From: Soren Stoutner Date: Wed, 8 Mar 2023 10:20:23 -0700 Subject: [PATCH] Add a File > New Tab action. --- doc/index.docbook | 250 +++++++++++++++++++++++++++----- src/ui.rcs/browserwindowui.rc | 6 + src/uis/DomainSettingsDialog.ui | 4 +- src/uis/SettingsPrivacy.ui | 2 +- src/windows/BrowserWindow.cpp | 43 ++++-- src/windows/BrowserWindow.h | 4 +- 6 files changed, 255 insertions(+), 54 deletions(-) diff --git a/doc/index.docbook b/doc/index.docbook index 5a08451..6974073 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -81,18 +81,57 @@ To distinguish between the Android and the PC version, the website, issue tracker, and code base refer to this version as Privacy Browser PC. - There is a list of feature requests and known bugs at redmine.stoutner.com. - Users should anticipate that all the current features of Privacy Browser Android - will also be implemented in Privacy Browser PC. - There is no need at this point to create features requests for these as they will be added as I start working on each feature and have a better idea of how they will be implemented. - However, each feature that has already been implemented should be bug free. - If you discover a bug that is not already documented at redmine.stoutner.com please add it. The best place to discuss the development of Privacy Browser is on the forum. I also frequently post on my Mastodon account regarding the development status. + + + + Qt WebEngine + + + Privacy Browser uses Qt WebEngine to render websites. + Qt WebEngine is based on the Chromium Blink source code. + Because Privacy Browser is built on the KDE Framework, + it currently uses the Qt 5 packages. + + + + The current Qt 5 packages are in long-term support mode. + Qt WebEngine 5.15.x is based on Chromium 87.0.4280.144 from a feature perspective. + Security fixes are backported with each release every couple of months. + + + + + + Bugs and Missing Features + + + There is a list of feature requests and known bugs at redmine.stoutner.com. + Users should anticipate that all the current features of Privacy Browser Android + will also be implemented in Privacy Browser PC. + There is no need at this point to create features requests for these as they will be added as I start working on each feature and have a better idea of how they will be implemented. + However, each feature that has already been implemented should be bug free. + If you discover a bug that is not already documented at redmine.stoutner.com please add it. + + + + Below is a list of known prominent bugs or missing features in this alpha release. + + + + The page zoom is momentarily reset every time a new URL is loaded. + If domain settings change the user agent, loading of the new URL is interrupted and the + previous site is reloaded. + Browser error messages are not displayed unless JavaScript is enabled. + Bookmarks are not yet implemented. + Blocklists are not yet implemented. + + @@ -100,35 +139,161 @@ Using &privacybrowser; - - Here's a screenshot of &privacybrowser; - + + + + + + Screenshot + + + + + + + JavaScript + + + JavaScript allows web pages to run scripts (programs) on your device. It allows web pages to function more like apps, but it also allows web pages to spy on you. + Most of the tracking on the internet does not work when JavaScript is disabled. + JavaScript can be toggled by clicking on the privacy shield, which is blue if JavaScript is disabled and red when it is enabled. + - + - Screenshot + JavaScript - - - + + + - - More &privacybrowser; features + + + Local Storage - It slices! It dices! and it comes with a free toaster! + Local storage + in Privacy Browser encompasses cookies, DOM storage, IndexedDB, service workers, and the filesystem API. + Local storage can be toggled through an action on the toolbar. + + + Cookies + + + + + + + + Cookies + + + + + + Cookies + allow websites to store small pieces of information for a specific host that are sent in the HTTP header every time the browser connects to that host. + Privacy Browser allows a maximum of 180 cookies with a maximum size of 4096 bytes per cookie to be set per domain. + Cookies are often used to track users across the web, particularly third-party cookies (which are completely blocked in Privacy Browser). + They are also used as a security mechanism on websites where you log in to identify it is you as you browse from page to page on a site. + + + + Durable cookies are shared with all tabs that are opened after they are made durable and are preserved even when Privacy Browser is restarted. + This allows users to stay logged in to sites of their choosing. No cookies are durable by default. Making a cookie durable requires specific user interaction. + + + + All other cookies are specific to the tab where they are created and are destroyed when the tab is closed. + + + + + + DOM storage + + + DOM (Document Object Model) storage, also knows as web storage, allows web pages to store information on a client device. + The storage capacity is larger than for cookies and the data is not automatically sent in the headers with every HTTP request. + In Privacy Browser, each website is allowed to store a 5 MB of data in DOM storage. + DOM storage requires JavaScript to function, and, in addition, requires an extra toggle to be enabled. + In Privacy Browser, DOM storage is limited to the tab where it is created and is destroyed when the tab is closed. + + + + + + IndexedDB + + + IndexedDB + provides web pages with a local database where they can store “significant amounts of structured data”. + There is disagreement on the internet about the maximum size of an IndexedDB database, probably because the various rendering engines keep changing their mind. + But it is usually listed at somewhere between 20% and 80% of your entire hard drive with each individual domain limited to some segment of that. + IndexedDB requires JavaScript to function. + In Privacy Browser, this database is limited to the tab where it is created and is destroyed when the tab is closed. + + + + + + Service Workers + + + Service workers are offline JavaScript proxies of a website. They have their own cache that is usually hidden and hard to clear. + They were designed by people who want the web browser to become the operating system and run full “apps”. + In Privacy Browser, service workers are limited to the tab where they are created and are destroyed when the tab is closed. + + + + + + Filesystem API + + + The filesystem API grants the browser direct access to the files on your system. + Like service workers, the filesystem API is a summarily bad idea thought up by those who want the browser to become an operating system. + Even when JavaScript and local storage are enabled, the filesystem API does not work in Privacy Browser. + + + + + + + User Agent + - The Squiggle Tool - - - - - Squiggle - - is used to draw squiggly lines all over the &privacybrowser; main window. It's not a bug, it's a feature! + The user agent is a text string that is sent as part of every HTTP header that identifies the browser to the web server. + Privacy Browser's default user agent is PrivacyBrowser/1.0. + Qt WebEngine 5.15.12’s default user agent is Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.15.12 Chrome/87.0.4280.144 Safari/537.36. + + + + Over the years user agents have become quite lengthy, + partially because they tend to include a brief history of the internet. + In the modern world they serve almost no good purpose, but some web developers still think they need them so they can send different version of their website to different browsers. + Some servers refuse to function correctly if they don't like the user agent that is sent. + + + + At some point in the future Privacy Browser will send no user agent by default. + Not only is that currently impossible because the Qt WebEngine doesn't allow you to not send a user agent (I will probably have to fork it to enable that functionality), + but even web servers that don't care what the user agent is often refuse to send an answer if there is no user agent at all. + Getting rid of this relic of the internet is going to take some time and a retraining of common expectations. + + + + + + Domain Settings + + + Domain setting make it easy to automatically change JavaScript, local storage, user agent, and other settings when the domain changes. + Domain settings for the current domain can be accessed through the domain settings button at the far right of the URL line edit. + Domain settings for all domains can be accessed through the settings menu. When domain settings are active, the URL line edit will have a green background. @@ -137,33 +302,50 @@ Command Reference - + + The main &privacybrowser; window + The File Menu - - + + + + + + &Ctrl;T + + File + New Tab + + + + + + Create a new tab. + + + + + + &Ctrl;N File - New + New Window - Creates a new document + Create a new window. diff --git a/src/ui.rcs/browserwindowui.rc b/src/ui.rcs/browserwindowui.rc index 2ee3cd7..186b784 100644 --- a/src/ui.rcs/browserwindowui.rc +++ b/src/ui.rcs/browserwindowui.rc @@ -30,6 +30,12 @@ + + + + + + On-The-Fly Settings diff --git a/src/uis/DomainSettingsDialog.ui b/src/uis/DomainSettingsDialog.ui index addcbde..d498a10 100644 --- a/src/uis/DomainSettingsDialog.ui +++ b/src/uis/DomainSettingsDialog.ui @@ -1,7 +1,7 @@