diff options
Diffstat (limited to 'src/webenginequick/doc')
30 files changed, 6503 insertions, 0 deletions
diff --git a/src/webenginequick/doc/QtWebEngineDoc b/src/webenginequick/doc/QtWebEngineDoc new file mode 100644 index 000000000..0737885f1 --- /dev/null +++ b/src/webenginequick/doc/QtWebEngineDoc @@ -0,0 +1,2 @@ +#include <QtWebEngine/QtWebEngine> +#include <QtWebEngineWidgets/QtWebEngineWidgets> diff --git a/src/webenginequick/doc/images/qtwebengine-architecture.png b/src/webenginequick/doc/images/qtwebengine-architecture.png Binary files differnew file mode 100644 index 000000000..979a0ad3f --- /dev/null +++ b/src/webenginequick/doc/images/qtwebengine-architecture.png diff --git a/src/webenginequick/doc/images/qtwebengine-model.png b/src/webenginequick/doc/images/qtwebengine-model.png Binary files differnew file mode 100644 index 000000000..0bbd556f1 --- /dev/null +++ b/src/webenginequick/doc/images/qtwebengine-model.png diff --git a/src/webenginequick/doc/images/qtwebengine-model.qmodel b/src/webenginequick/doc/images/qtwebengine-model.qmodel new file mode 100644 index 000000000..f3d5cb52b --- /dev/null +++ b/src/webenginequick/doc/images/qtwebengine-model.qmodel @@ -0,0 +1,626 @@ +<?xml version="1.0" encoding="UTF-8"?> +<qmt> + <project> + <uid>{b4b96dcf-b444-4b48-96a0-0ced0222fbe4}</uid> + <root-package> + <instance> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{4b17cf3d-b45a-4ca8-b6c2-f0a9db0a0d9e}</uid> + </MElement> + </base-MElement> + <name>qtwebengine-model</name> + <children> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{d0623590-2a20-468b-9ec5-51987e78ae47}</uid> + <target> + <instance type="MCanvasDiagram"> + <MCanvasDiagram> + <base-MDiagram> + <MDiagram> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{d0623590-2a20-468b-9ec5-51987e78ae47}</uid> + </MElement> + </base-MElement> + <name>qtwebengine-model</name> + </MObject> + </base-MObject> + <elements> + <qlist> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</uid> + </DElement> + </base-DElement> + <object>{3507c733-97ee-4b84-835b-4d90f039ca72}</object> + <name>View</name> + <pos>x:260;y:70</pos> + <rect>x:-45;y:-30;w:90;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</uid> + </DElement> + </base-DElement> + <object>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</object> + <name>Profile</name> + <pos>x:415;y:155</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{54c2f051-8fdb-48f2-b528-2caa8fd1f854}</uid> + </DElement> + </base-DElement> + <object>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</object> + <name>History</name> + <pos>x:110;y:155</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{ae2fed61-96c0-4755-aad1-2d02fbc6e36e}</uid> + </DElement> + </base-DElement> + <object>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</object> + <name>Settings</name> + <pos>x:260;y:240</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{95fafacc-66c7-42d0-b27e-e92a69964adf}</uid> + </DElement> + </base-DElement> + <object>{e3429382-8484-481e-8690-792b1c1a257e}</object> + <a>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</a> + <b>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{673bc9c1-a5ff-44ba-b9a6-d17807014a8e}</uid> + </DElement> + </base-DElement> + <object>{e505b9c3-2332-4056-b3f0-dbd71a5ccbae}</object> + <a>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</a> + <b>{54c2f051-8fdb-48f2-b528-2caa8fd1f854}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{78e57691-4776-4e73-b0f0-232a1e80da10}</uid> + </DElement> + </base-DElement> + <object>{9cfdd75f-182e-4511-bf4c-19f30309318e}</object> + <a>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</a> + <b>{ae2fed61-96c0-4755-aad1-2d02fbc6e36e}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{e76fa55e-b2df-4713-9fab-78434c3c7ed3}</uid> + </DElement> + </base-DElement> + <object>{ff72261f-19e3-4983-b10c-856f6070637b}</object> + <name>Action</name> + <pos>x:260;y:155</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{305524c2-f2c7-44ba-b30b-51fbfdc81063}</uid> + </DElement> + </base-DElement> + <object>{911f495e-313f-4b28-95d6-440b06a05a83}</object> + <a>{e1622bc8-530c-4d18-ba77-202bad11f1e0}</a> + <b>{e76fa55e-b2df-4713-9fab-78434c3c7ed3}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{28ea46b1-ce73-432f-89a6-a97821dbac59}</uid> + </DElement> + </base-DElement> + <object>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</object> + <name>Script</name> + <pos>x:415;y:240</pos> + <rect>x:-45;y:-30;w:90;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{41e806b6-c8fd-4ae5-865d-db55feeb5570}</uid> + </DElement> + </base-DElement> + <object>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</object> + <name>Cookie</name> + <pos>x:555;y:240</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{99a53c8d-8dc1-4ee5-83bf-ec2ff2677817}</uid> + </DElement> + </base-DElement> + <object>{dc399de7-f3b9-4071-84af-b6e5dfa3affe}</object> + <a>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</a> + <b>{28ea46b1-ce73-432f-89a6-a97821dbac59}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{f3833f3d-d01b-4c7c-bfde-91d014aff654}</uid> + </DElement> + </base-DElement> + <object>{4dc013fb-ced4-4cc0-99e3-3f4a32acebf7}</object> + <a>{0bb9e92a-910d-4a32-877b-fd7e37710f79}</a> + <b>{41e806b6-c8fd-4ae5-865d-db55feeb5570}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + </qlist> + </elements> + <last-modified>1455888691589</last-modified> + <toolbarid>General</toolbarid> + </MDiagram> + </base-MDiagram> + </MCanvasDiagram> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{3507c733-97ee-4b84-835b-4d90f039ca72}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{3507c733-97ee-4b84-835b-4d90f039ca72}</uid> + </MElement> + </base-MElement> + <name>View</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{e3429382-8484-481e-8690-792b1c1a257e}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{e3429382-8484-481e-8690-792b1c1a257e}</uid> + </MElement> + </base-MElement> + <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a> + <b>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{e505b9c3-2332-4056-b3f0-dbd71a5ccbae}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{e505b9c3-2332-4056-b3f0-dbd71a5ccbae}</uid> + </MElement> + </base-MElement> + <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a> + <b>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{4d826dd3-e455-46f3-8dfc-bb74551f3f00}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{4d826dd3-e455-46f3-8dfc-bb74551f3f00}</uid> + </MElement> + </base-MElement> + <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a> + <b>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{911f495e-313f-4b28-95d6-440b06a05a83}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{911f495e-313f-4b28-95d6-440b06a05a83}</uid> + </MElement> + </base-MElement> + <a>{3507c733-97ee-4b84-835b-4d90f039ca72}</a> + <b>{ff72261f-19e3-4983-b10c-856f6070637b}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</uid> + </MElement> + </base-MElement> + <name>Profile</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{9cfdd75f-182e-4511-bf4c-19f30309318e}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{9cfdd75f-182e-4511-bf4c-19f30309318e}</uid> + </MElement> + </base-MElement> + <a>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</a> + <b>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{dc399de7-f3b9-4071-84af-b6e5dfa3affe}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{dc399de7-f3b9-4071-84af-b6e5dfa3affe}</uid> + </MElement> + </base-MElement> + <a>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</a> + <b>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{4dc013fb-ced4-4cc0-99e3-3f4a32acebf7}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{4dc013fb-ced4-4cc0-99e3-3f4a32acebf7}</uid> + </MElement> + </base-MElement> + <a>{ab5f0d96-cf38-430d-bef3-b7bd78952fdb}</a> + <b>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{999dd0f9-53f0-47bd-90ea-714c0dea50d7}</uid> + </MElement> + </base-MElement> + <name>History</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{b2ea9c4f-8b35-46c3-b2a5-3f22d72069e7}</uid> + </MElement> + </base-MElement> + <name>Settings</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{ff72261f-19e3-4983-b10c-856f6070637b}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{ff72261f-19e3-4983-b10c-856f6070637b}</uid> + </MElement> + </base-MElement> + <name>Action</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{f1e3fd14-d433-4d95-8ea4-1c4b5aaf4334}</uid> + </MElement> + </base-MElement> + <name>Script</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{96788086-5e67-482c-ac8b-0f2a7f0729ff}</uid> + </MElement> + </base-MElement> + <name>Cookie</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </children> + </MObject> + </base-MObject> + </MPackage> + </instance> + </root-package> + </project> +</qmt> diff --git a/src/webenginequick/doc/images/qtwebengine-modules-model.qmodel b/src/webenginequick/doc/images/qtwebengine-modules-model.qmodel new file mode 100644 index 000000000..c1d64b617 --- /dev/null +++ b/src/webenginequick/doc/images/qtwebengine-modules-model.qmodel @@ -0,0 +1,500 @@ +<?xml version="1.0" encoding="UTF-8"?> +<qmt> + <project> + <uid>{4a2bfe98-50e2-435d-8702-93dc2ccbd56b}</uid> + <root-package> + <instance> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{11ff33c5-f533-494d-9add-55ea216b97a6}</uid> + </MElement> + </base-MElement> + <name>qtwebengine-modules-model</name> + <children> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{9e8325b8-5731-4c87-9203-fe941456ee06}</uid> + <target> + <instance type="MCanvasDiagram"> + <MCanvasDiagram> + <base-MDiagram> + <MDiagram> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{9e8325b8-5731-4c87-9203-fe941456ee06}</uid> + </MElement> + </base-MElement> + <name>qtwebengine-modules-model</name> + </MObject> + </base-MObject> + <elements> + <qlist> + <item> + <instance type="DPackage"> + <DPackage> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{aee48ad9-14be-47bb-8ebf-1a9b44f1e219}</uid> + </DElement> + </base-DElement> + <object>{4d3871a4-ad9d-4b1a-ab68-acfce8ba5f00}</object> + <name>Qt WebEngine Module</name> + <pos>x:300;y:70</pos> + <rect>x:-275;y:-145;w:550;h:290</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + <stereotype-display>0</stereotype-display> + </DObject> + </base-DObject> + </DPackage> + </instance> + </item> + <item> + <instance type="DPackage"> + <DPackage> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{b667049f-5302-4e68-8679-c26a7c4c37af}</uid> + </DElement> + </base-DElement> + <object>{71104fca-42f0-4145-bf3a-afed38493c8b}</object> + <context>Qt WebEngine Module</context> + <name>Qt WebEngine </name> + <pos>x:300;y:15</pos> + <rect>x:-75;y:-35;w:150;h:70</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DPackage> + </instance> + </item> + <item> + <instance type="DPackage"> + <DPackage> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{6d84908c-9500-4b4f-95b8-b723ff8f2fc3}</uid> + </DElement> + </base-DElement> + <object>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</object> + <context>Qt WebEngine Module</context> + <name> Qt WebEngine Widgets</name> + <pos>x:105;y:15</pos> + <rect>x:-75;y:-35;w:150;h:70</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DPackage> + </instance> + </item> + <item> + <instance type="DPackage"> + <DPackage> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{d1260089-4eb6-4465-ac5f-e36ba1ef2311}</uid> + </DElement> + </base-DElement> + <object>{c0946aaa-51df-48db-9ceb-351cd32089be}</object> + <context>Qt WebEngine Module</context> + <name> Qt WebEngine Process</name> + <pos>x:495;y:15</pos> + <rect>x:-75;y:-35;w:150;h:70</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DPackage> + </instance> + </item> + <item> + <instance type="DPackage"> + <DPackage> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{7e01513b-4cfc-4154-b445-a9b341b392a3}</uid> + </DElement> + </base-DElement> + <object>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</object> + <context>Qt WebEngine Module</context> + <name>Qt WebEngine Core</name> + <pos>x:300;y:150</pos> + <rect>x:-270;y:-60;w:540;h:120</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DPackage> + </instance> + </item> + <item> + <instance type="DPackage"> + <DPackage> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{620a2a3d-3a6c-4afc-a9ba-e2a0651b81b8}</uid> + </DElement> + </base-DElement> + <object>{ce1e329b-b2ec-465f-bbc7-3cc75160da1a}</object> + <context>Qt WebEngine Core</context> + <name>Chromium</name> + <pos>x:300;y:165</pos> + <rect>x:-260;y:-35;w:520;h:70</rect> + <auto-sized>false</auto-sized> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DPackage> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{d0b02baa-0ce3-437e-a962-0896efb0b2d0}</uid> + </DElement> + </base-DElement> + <object>{342a09ff-ab96-40d2-b9f9-300d1f2a067b}</object> + <a>{6d84908c-9500-4b4f-95b8-b723ff8f2fc3}</a> + <b>{7e01513b-4cfc-4154-b445-a9b341b392a3}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{e59a5c27-7bda-44f6-8b7d-a729c2d04ff5}</uid> + </DElement> + </base-DElement> + <object>{45bf7ccd-aafc-4ec1-a846-bb2661aa9def}</object> + <a>{b667049f-5302-4e68-8679-c26a7c4c37af}</a> + <b>{7e01513b-4cfc-4154-b445-a9b341b392a3}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{8ae66be6-ad8a-442f-a85d-58e53a684249}</uid> + </DElement> + </base-DElement> + <object>{6875416f-210d-4957-b0dc-d1a92a4238ef}</object> + <a>{d1260089-4eb6-4465-ac5f-e36ba1ef2311}</a> + <b>{7e01513b-4cfc-4154-b445-a9b341b392a3}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + </qlist> + </elements> + <last-modified>1469021602971</last-modified> + <toolbarid>General</toolbarid> + </MDiagram> + </base-MDiagram> + </MCanvasDiagram> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{4d3871a4-ad9d-4b1a-ab68-acfce8ba5f00}</uid> + <target> + <instance type="MPackage"> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{4d3871a4-ad9d-4b1a-ab68-acfce8ba5f00}</uid> + </MElement> + </base-MElement> + <name>Qt WebEngine Module</name> + <children> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{71104fca-42f0-4145-bf3a-afed38493c8b}</uid> + <target> + <instance type="MPackage"> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{71104fca-42f0-4145-bf3a-afed38493c8b}</uid> + </MElement> + </base-MElement> + <name>Qt WebEngine </name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{45bf7ccd-aafc-4ec1-a846-bb2661aa9def}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{45bf7ccd-aafc-4ec1-a846-bb2661aa9def}</uid> + </MElement> + </base-MElement> + <a>{71104fca-42f0-4145-bf3a-afed38493c8b}</a> + <b>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MPackage> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</uid> + <target> + <instance type="MPackage"> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</uid> + </MElement> + </base-MElement> + <name> Qt WebEngine Widgets</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{342a09ff-ab96-40d2-b9f9-300d1f2a067b}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{342a09ff-ab96-40d2-b9f9-300d1f2a067b}</uid> + </MElement> + </base-MElement> + <a>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</a> + <b>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{483712c1-3ec0-4271-b02e-b268de07897b}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{483712c1-3ec0-4271-b02e-b268de07897b}</uid> + </MElement> + </base-MElement> + <a>{8e8c6646-1175-4ee1-aa02-cd5669cdf92a}</a> + <b>{71104fca-42f0-4145-bf3a-afed38493c8b}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MPackage> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{c0946aaa-51df-48db-9ceb-351cd32089be}</uid> + <target> + <instance type="MPackage"> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{c0946aaa-51df-48db-9ceb-351cd32089be}</uid> + </MElement> + </base-MElement> + <name> Qt WebEngine Process</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{6875416f-210d-4957-b0dc-d1a92a4238ef}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{6875416f-210d-4957-b0dc-d1a92a4238ef}</uid> + </MElement> + </base-MElement> + <a>{c0946aaa-51df-48db-9ceb-351cd32089be}</a> + <b>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MPackage> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</uid> + <target> + <instance type="MPackage"> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{6ee7f00e-5dc3-4f45-a3ca-428390b4c74c}</uid> + </MElement> + </base-MElement> + <name>Qt WebEngine Core</name> + <children> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{ce1e329b-b2ec-465f-bbc7-3cc75160da1a}</uid> + <target> + <instance type="MPackage"> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{ce1e329b-b2ec-465f-bbc7-3cc75160da1a}</uid> + </MElement> + </base-MElement> + <name>Chromium</name> + </MObject> + </base-MObject> + </MPackage> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </children> + </MObject> + </base-MObject> + </MPackage> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </children> + </MObject> + </base-MObject> + </MPackage> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </children> + </MObject> + </base-MObject> + </MPackage> + </instance> + </root-package> + </project> +</qmt> diff --git a/src/webenginequick/doc/images/qtwebenginewidgets-model.png b/src/webenginequick/doc/images/qtwebenginewidgets-model.png Binary files differnew file mode 100644 index 000000000..c334b84c9 --- /dev/null +++ b/src/webenginequick/doc/images/qtwebenginewidgets-model.png diff --git a/src/webenginequick/doc/images/qtwebenginewidgets-model.qmodel b/src/webenginequick/doc/images/qtwebenginewidgets-model.qmodel new file mode 100644 index 000000000..aa59f7b8f --- /dev/null +++ b/src/webenginequick/doc/images/qtwebenginewidgets-model.qmodel @@ -0,0 +1,789 @@ +<?xml version="1.0" encoding="UTF-8"?> +<qmt> + <project> + <uid>{388ed80a-d45a-4746-9b42-b201bdfbe66d}</uid> + <root-package> + <instance> + <MPackage> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{cf413898-e1a1-48a2-be84-dee757d150e1}</uid> + </MElement> + </base-MElement> + <name>qtwebenginewidgets-model</name> + <children> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{cb7c93b6-ed69-4e54-bca7-23edd2432e88}</uid> + <target> + <instance type="MCanvasDiagram"> + <MCanvasDiagram> + <base-MDiagram> + <MDiagram> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{cb7c93b6-ed69-4e54-bca7-23edd2432e88}</uid> + </MElement> + </base-MElement> + <name>qtwebenginewidgets-model</name> + </MObject> + </base-MObject> + <elements> + <qlist> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{9d9a12d1-d237-4d4f-9b55-bdbbc99bd2b1}</uid> + </DElement> + </base-DElement> + <object>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</object> + <name>View</name> + <pos>x:235;y:-280</pos> + <rect>x:-45;y:-30;w:90;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</uid> + </DElement> + </base-DElement> + <object>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</object> + <name>Page</name> + <pos>x:235;y:-195</pos> + <rect>x:-45;y:-30;w:90;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{e6d92a82-f898-448f-945e-26b508249746}</uid> + </DElement> + </base-DElement> + <object>{99e69e48-e844-4fc0-942c-aacef280c616}</object> + <name>History</name> + <pos>x:90;y:-110</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{9ba8a864-bd21-48e5-9df4-c7065d3ab474}</uid> + </DElement> + </base-DElement> + <object>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</object> + <name>Settings</name> + <pos>x:235;y:-20</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{62872913-7080-421b-b12c-d3c094faa37d}</uid> + </DElement> + </base-DElement> + <object>{8afe2dfe-878f-4c40-9f07-c6128611f853}</object> + <name>Profile</name> + <pos>x:380;y:-110</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{54a21438-6274-4484-9225-97a47d3514ea}</uid> + </DElement> + </base-DElement> + <object>{8e94476c-6a26-4bbc-b134-54a7203a0242}</object> + <a>{9d9a12d1-d237-4d4f-9b55-bdbbc99bd2b1}</a> + <b>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{b3f6b700-e506-471b-9341-78a57b55fb20}</uid> + </DElement> + </base-DElement> + <object>{48d2b9ae-8462-4c93-9772-77f2520e2bcb}</object> + <a>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</a> + <b>{e6d92a82-f898-448f-945e-26b508249746}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{5870be46-b8c5-480b-89d0-2ecd38fea9e1}</uid> + </DElement> + </base-DElement> + <object>{2ec57f83-da38-4ed1-970c-d416a5f76425}</object> + <a>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</a> + <b>{62872913-7080-421b-b12c-d3c094faa37d}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{9140249c-7a62-4e4d-846a-398e794e34c6}</uid> + </DElement> + </base-DElement> + <object>{9c6691bd-75e5-40af-a662-ecb04e60744e}</object> + <a>{62872913-7080-421b-b12c-d3c094faa37d}</a> + <b>{9ba8a864-bd21-48e5-9df4-c7065d3ab474}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{97fe6f5f-a947-4c62-880d-e2d9258814dd}</uid> + </DElement> + </base-DElement> + <object>{2dfae517-4615-42b9-bb33-63369291468f}</object> + <name>Script</name> + <pos>x:380;y:-20</pos> + <rect>x:-45;y:-30;w:90;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{3cb4f4a2-0a1d-4adb-8b72-c438a8102a2b}</uid> + </DElement> + </base-DElement> + <object>{8f64c8e2-637e-482e-8565-1bbdcd203709}</object> + <name>Action</name> + <pos>x:235;y:-110</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{c962daa4-09b9-411d-a0d1-d1c7b9bd1489}</uid> + </DElement> + </base-DElement> + <object>{31cff752-95b7-4994-a5fc-8794dd8a013f}</object> + <a>{62872913-7080-421b-b12c-d3c094faa37d}</a> + <b>{97fe6f5f-a947-4c62-880d-e2d9258814dd}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{a8f88107-5699-4e25-8945-1113d642fdd0}</uid> + </DElement> + </base-DElement> + <object>{acca28ee-b184-4cbe-9aaa-befeac08c3bd}</object> + <a>{81687d47-fbb1-4843-a394-7d7e5e57a2ff}</a> + <b>{3cb4f4a2-0a1d-4adb-8b72-c438a8102a2b}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + <item> + <instance type="DComponent"> + <DComponent> + <base-DObject> + <DObject> + <base-DElement> + <DElement> + <uid>{6208171a-1515-424a-bb4e-5f115b4c21fa}</uid> + </DElement> + </base-DElement> + <object>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</object> + <name>Cookie</name> + <pos>x:525;y:-20</pos> + <rect>x:-50;y:-30;w:100;h:60</rect> + <visual-role>0</visual-role> + </DObject> + </base-DObject> + </DComponent> + </instance> + </item> + <item> + <instance type="DDependency"> + <DDependency> + <base-DRelation> + <DRelation> + <base-DElement> + <DElement> + <uid>{57732b45-63fc-4d87-91fe-c9e9cbdd69ee}</uid> + </DElement> + </base-DElement> + <object>{b98164e7-ff69-40e7-ac1b-fe4985f451e7}</object> + <a>{62872913-7080-421b-b12c-d3c094faa37d}</a> + <b>{6208171a-1515-424a-bb4e-5f115b4c21fa}</b> + </DRelation> + </base-DRelation> + </DDependency> + </instance> + </item> + </qlist> + </elements> + <last-modified>1455889165432</last-modified> + <toolbarid>General</toolbarid> + </MDiagram> + </base-MDiagram> + </MCanvasDiagram> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</uid> + </MElement> + </base-MElement> + <name>View</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{8e94476c-6a26-4bbc-b134-54a7203a0242}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{8e94476c-6a26-4bbc-b134-54a7203a0242}</uid> + </MElement> + </base-MElement> + <a>{1a4983f6-27db-4f8c-90ed-f72df621c50f}</a> + <b>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</uid> + </MElement> + </base-MElement> + <name>Page</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{48d2b9ae-8462-4c93-9772-77f2520e2bcb}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{48d2b9ae-8462-4c93-9772-77f2520e2bcb}</uid> + </MElement> + </base-MElement> + <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a> + <b>{99e69e48-e844-4fc0-942c-aacef280c616}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{2ec57f83-da38-4ed1-970c-d416a5f76425}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{2ec57f83-da38-4ed1-970c-d416a5f76425}</uid> + </MElement> + </base-MElement> + <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a> + <b>{8afe2dfe-878f-4c40-9f07-c6128611f853}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{30d6d5e4-eb6b-4816-817d-5a921f823dae}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{30d6d5e4-eb6b-4816-817d-5a921f823dae}</uid> + </MElement> + </base-MElement> + <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a> + <b>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{0011e11e-283e-4ad9-94b0-749d4465eac8}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{0011e11e-283e-4ad9-94b0-749d4465eac8}</uid> + </MElement> + </base-MElement> + <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a> + <b>{2dfae517-4615-42b9-bb33-63369291468f}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{c354a766-0dba-439d-9f6c-538772784181}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{c354a766-0dba-439d-9f6c-538772784181}</uid> + </MElement> + </base-MElement> + <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a> + <b>{8f64c8e2-637e-482e-8565-1bbdcd203709}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{acca28ee-b184-4cbe-9aaa-befeac08c3bd}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{acca28ee-b184-4cbe-9aaa-befeac08c3bd}</uid> + </MElement> + </base-MElement> + <a>{e9446d69-de53-47ab-974e-1b8ae8b6edd7}</a> + <b>{8f64c8e2-637e-482e-8565-1bbdcd203709}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{99e69e48-e844-4fc0-942c-aacef280c616}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{99e69e48-e844-4fc0-942c-aacef280c616}</uid> + </MElement> + </base-MElement> + <name>History</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{bca413d3-d869-44ce-a68d-38e8ba6de291}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{bca413d3-d869-44ce-a68d-38e8ba6de291}</uid> + </MElement> + </base-MElement> + <a>{99e69e48-e844-4fc0-942c-aacef280c616}</a> + <b>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</uid> + </MElement> + </base-MElement> + <name>Settings</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{8afe2dfe-878f-4c40-9f07-c6128611f853}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{8afe2dfe-878f-4c40-9f07-c6128611f853}</uid> + </MElement> + </base-MElement> + <name>Profile</name> + <relations> + <handles> + <handles> + <qlist> + <item> + <handle> + <uid>{9c6691bd-75e5-40af-a662-ecb04e60744e}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{9c6691bd-75e5-40af-a662-ecb04e60744e}</uid> + </MElement> + </base-MElement> + <a>{8afe2dfe-878f-4c40-9f07-c6128611f853}</a> + <b>{6b572233-bf3a-43a2-bfe2-e61d57a59a2e}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{31cff752-95b7-4994-a5fc-8794dd8a013f}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{31cff752-95b7-4994-a5fc-8794dd8a013f}</uid> + </MElement> + </base-MElement> + <a>{8afe2dfe-878f-4c40-9f07-c6128611f853}</a> + <b>{2dfae517-4615-42b9-bb33-63369291468f}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{b98164e7-ff69-40e7-ac1b-fe4985f451e7}</uid> + <target> + <instance type="MDependency"> + <MDependency> + <base-MRelation> + <MRelation> + <base-MElement> + <MElement> + <uid>{b98164e7-ff69-40e7-ac1b-fe4985f451e7}</uid> + </MElement> + </base-MElement> + <a>{8afe2dfe-878f-4c40-9f07-c6128611f853}</a> + <b>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</b> + </MRelation> + </base-MRelation> + </MDependency> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </relations> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{2dfae517-4615-42b9-bb33-63369291468f}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{2dfae517-4615-42b9-bb33-63369291468f}</uid> + </MElement> + </base-MElement> + <name>Script</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{8f64c8e2-637e-482e-8565-1bbdcd203709}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{8f64c8e2-637e-482e-8565-1bbdcd203709}</uid> + </MElement> + </base-MElement> + <name>Action</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + <item> + <handle> + <uid>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</uid> + <target> + <instance type="MComponent"> + <MComponent> + <base-MObject> + <MObject> + <base-MElement> + <MElement> + <uid>{b19ba8d3-84ca-4718-b62c-575aa5d95c95}</uid> + </MElement> + </base-MElement> + <name>Cookie</name> + </MObject> + </base-MObject> + </MComponent> + </instance> + </target> + </handle> + </item> + </qlist> + </handles> + </handles> + </children> + </MObject> + </base-MObject> + </MPackage> + </instance> + </root-package> + </project> +</qmt> diff --git a/src/webenginequick/doc/qtwebengine.qdocconf b/src/webenginequick/doc/qtwebengine.qdocconf new file mode 100644 index 000000000..be5db9c19 --- /dev/null +++ b/src/webenginequick/doc/qtwebengine.qdocconf @@ -0,0 +1,90 @@ +include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) +include($QT_INSTALL_DOCS/config/exampleurl-qtwebengine.qdocconf) + +project = QtWebEngine +description = Qt WebEngine Reference Documentation +version = $QT_VERSION + +qhp.projects = QtWebEngine + +qhp.QtWebEngine.file = qtwebengine.qhp +qhp.QtWebEngine.namespace = org.qt-project.qtwebengine.$QT_VERSION_TAG +qhp.QtWebEngine.virtualFolder = qtwebengine +qhp.QtWebEngine.indexTitle = Qt WebEngine +qhp.QtWebEngine.indexRoot = + +qhp.QtWebEngine.filterAttributes = qtwebengine $QT_VERSION qtrefdoc +qhp.QtWebEngine.customFilters.Qt.name = QtWebEngine $QT_VERSION +qhp.QtWebEngine.customFilters.Qt.filterAttributes = qtwebengine $QT_VERSION + +qhp.QtWebEngine.subprojects = classes qmltypes examples + +qhp.QtWebEngine.subprojects.classes.title = C++ Classes and Namespaces +qhp.QtWebEngine.subprojects.classes.indexTitle = Qt WebEngine C++ Classes and Namespaces +qhp.QtWebEngine.subprojects.classes.selectors = class group:qtwebengine-namespaces doc:headerfile +qhp.QtWebEngine.subprojects.classes.sortPages = true + +qhp.QtWebEngine.subprojects.qmltypes.title = QML Types +qhp.QtWebEngine.subprojects.qmltypes.indexTitle = Qt WebEngine QML Types +qhp.QtWebEngine.subprojects.qmltypes.selectors = qmltype +qhp.QtWebEngine.subprojects.qmltypes.sortPages = true + +qhp.QtWebEngine.subprojects.examples.title = Examples +qhp.QtWebEngine.subprojects.examples.indexTitle = Qt WebEngine Examples +qhp.QtWebEngine.subprojects.examples.selectors = doc:example +qhp.QtWebEngine.subprojects.examples.sortPages = true + +manifestmeta.highlighted.names += "QtWebEngine/WebEngine Widgets Simple Browser Example" \ + "QtWebEngine/WebEngine Quick Nano Browser" + +tagfile = ../../../doc/qtwebengine/qtwebengine.tags + +# Custom module header for clang that pulls in also QtWebEngineWidgets +moduleheader = QtWebEngineDoc + +# Additional include paths for clang +includepaths = -I . + +depends += qtcore \ + qtgui \ + qtlocation \ + qtnetwork \ + qtplatformheaders \ + qtprintsupport \ + qtpositioning \ + qtqml \ + qtquick \ + qtquickcontrols \ + qtdoc \ + qtwebchannel \ + qtwebview \ + qtwidgets + +headerdirs += .. \ + ../../core/api \ + ../../webenginewidgets/api + +sourcedirs += .. \ + ../../core/api \ + ../../core/doc \ + ../../webenginewidgets/api \ + ../../webenginewidgets/doc + +exampledirs += . \ + ../../../examples \ + snippets \ + ../../core/doc/snippets \ + ../../webenginewidgets/doc/snippets + +examples.fileextensions += *.aff *.dic *.html + +imagedirs += images + +navigation.landingpage = "Qt WebEngine" +navigation.cppclassespage = "Qt WebEngine C++ Classes and Namespaces" +navigation.qmltypespage = "Qt WebEngine QML Types" + +# \QWE macro expands to 'Qt WebEngine' without auto-linking anywhere. +macro.QWE = "Qt \\WebEngine" + +Cpp.ignoretokens += Q_WEBENGINE_EXPORT Q_WEBENGINECORE_EXPORT QWEBENGINEWIDGETS_EXPORT diff --git a/src/webenginequick/doc/snippets/qtwebengine_build_snippet.qdoc b/src/webenginequick/doc/snippets/qtwebengine_build_snippet.qdoc new file mode 100644 index 000000000..35bc480bb --- /dev/null +++ b/src/webenginequick/doc/snippets/qtwebengine_build_snippet.qdoc @@ -0,0 +1,35 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [0] +QT += webengine +//! [0] + + +//! [1] +#include <QtWebEngine> +//! [1] diff --git a/src/webenginequick/doc/snippets/qtwebengine_webengineview_newviewrequested.qml b/src/webenginequick/doc/snippets/qtwebengine_webengineview_newviewrequested.qml new file mode 100644 index 000000000..e7e6790f2 --- /dev/null +++ b/src/webenginequick/doc/snippets/qtwebengine_webengineview_newviewrequested.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtQuick.Window 2.1 +import QtWebEngine 1.1 + +//! [0] +QtObject { + id: windowParent + // Create the initial browsing windows and open the startup page. + Component.onCompleted: { + var firstWindow = windowComponent.createObject(windowParent); + firstWindow.webView.loadHtml('<input type="button" value="Click!" onclick="window.open("http://qt.io")">'); + } + + property Component windowComponent: Window { + // Destroy on close to release the Window's QML resources. + // Because it was created with a parent, it won't be garbage-collected. + onClosing: destroy() + visible: true + + property WebEngineView webView: webView_ + WebEngineView { + id: webView_ + anchors.fill: parent + + // Handle the signal. Dynamically create the window and + // use its WebEngineView as the destination of our request. + onNewViewRequested: function(request) { + var newWindow = windowComponent.createObject(windowParent); + request.openIn(newWindow.webView); + } + } + } +} +//! [0] diff --git a/src/webenginequick/doc/src/context_menu_request.qdoc b/src/webenginequick/doc/src/context_menu_request.qdoc new file mode 100644 index 000000000..cc812dcf2 --- /dev/null +++ b/src/webenginequick/doc/src/context_menu_request.qdoc @@ -0,0 +1,218 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype ContextMenuRequest + \instantiates QQuickWebEngineContextMenuRequest + \inqmlmodule QtWebEngine + \since QtWebEngine 1.4 + + \brief A request for showing a context menu. + + A ContextMenuRequest is passed as an argument of the + WebEngineView::contextMenuRequested signal. It provides further + information about the context of the request. The position of the + request origin can be found via the \l x and \l y properties. + + The \l accepted property of the request indicates whether the request + is handled by the user code or the default context menu should + be displayed. + + The following code uses a custom menu to handle the request: + + \code + WebEngineView { + id: view + // ... + onContextMenuRequested: function(request) { + request.accepted = true; + myMenu.x = request.x; + myMenu.y = request.y; + myMenu.trigger.connect(view.triggerWebAction); + myMenu.popup(); + } + // ... + } + \endcode +*/ + +/*! + \qmlproperty point ContextMenuRequest::position + \readonly + + The position of the user action from where the context + menu request originates. +*/ + +/*! + \qmlproperty string ContextMenuRequest::selectedText + \readonly + + The selected text the context menu was created for. +*/ + +/*! + \qmlproperty string ContextMenuRequest::linkText + \readonly + + The text of the link if the context menu was requested for a link. +*/ + +/*! + \qmlproperty url ContextMenuRequest::linkUrl + \readonly + + The URL of the link if the selected web page content is a link. + It is not guaranteed to be a valid URL. +*/ + +/*! + \qmlproperty url ContextMenuRequest::mediaUrl + \readonly + + The URL of media if the selected web content is a media element. +*/ + +/*! + \qmlproperty enumeration ContextMenuRequest::mediaType + \readonly + + The type of the media element or \c MediaTypeNone if + the selected web page content is not a media element. + + \value ContextMenuRequest.MediaTypeNone + Not a media. + \value ContextMenuRequest.MediaTypeImage + An image. + \value ContextMenuRequest.MediaTypeVideo + A video. + \value ContextMenuRequest.MediaTypeAudio + An audio element. + \value ContextMenuRequest.MediaTypeCanvas + A canvas. + \value ContextMenuRequest.MediaTypeFile + A file. + \value ContextMenuRequest.MediaTypePlugin + A plugin. +*/ + +/*! + \qmlproperty bool ContextMenuRequest::isContentEditable + \readonly + + Indicates whether the selected web content is editable. +*/ + +/*! + \qmlproperty string ContextMenuRequest::misspelledWord + \readonly + + If the context is a word considered misspelled by the spell-checker, + returns the misspelled word. +*/ + +/*! + \qmlproperty stringlist ContextMenuRequest::spellCheckerSuggestions + \readonly + + If the context is a word considered misspelled by the spell-checker, + returns a list of suggested replacements. +*/ + +/*! + \qmlproperty bool ContextMenuRequest::accepted + + Indicates whether the context menu request has been + handled by the signal handler. + + If the property is \c false after any signal handlers + for WebEngineView::contextMenuRequested have been executed, + a default context menu will be shown. + To prevent this, set \c{request.accepted} to \c true. + + The default is \c false. + + \note The default content of the context menu depends on the + web element for which the request was actually generated. +*/ + +/*! + \qmlproperty flags ContextMenuRequest::mediaFlags + \readonly + \since QtWebEngine 1.7 + + The current media element's status and its available operations. + \c MediaNone if the selected web page content is not a media element. + + \value ContextMenuRequest.MediaInError + An error occurred. + \value ContextMenuRequest.MediaPaused + Media is paused. + \value ContextMenuRequest.MediaMuted + Media is muted. + \value ContextMenuRequest.MediaLoop + Media can be looped. + \value ContextMenuRequest.MediaCanSave + Media can be saved. + \value ContextMenuRequest.MediaHasAudio + Media has audio. + \value ContextMenuRequest.MediaCanToggleControls + Media can show controls. + \value ContextMenuRequest.MediaControls + Media controls are shown. + \value ContextMenuRequest.MediaCanPrint + Media is printable. + \value ContextMenuRequest.MediaCanRotate + Media is rotatable. +*/ + +/*! + \qmlproperty flags ContextMenuRequest::editFlags + \readonly + \since QtWebEngine 1.7 + + The available edit operations in the current context or \c CanDoNone if no actions are available. + + \value ContextMenuRequest.CanUndo + Undo is available. + \value ContextMenuRequest.CanRedo + Redo is available. + \value ContextMenuRequest.CanCut + Cut is available. + \value ContextMenuRequest.CanCopy + Copy is available. + \value ContextMenuRequest.CanPaste + Paste is available. + \value ContextMenuRequest.CanDelete + Delete is available. + \value ContextMenuRequest.CanSelectAll + Select All is available. + \value ContextMenuRequest.CanTranslate + Translate is available. + \value ContextMenuRequest.CanEditRichly + Context is richly editable. +*/ diff --git a/src/webenginequick/doc/src/external-resources.qdoc b/src/webenginequick/doc/src/external-resources.qdoc new file mode 100644 index 000000000..7878ed9f8 --- /dev/null +++ b/src/webenginequick/doc/src/external-resources.qdoc @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \externalpage http://www.chromium.org + \title Chromium Project +*/ + +/*! + \externalpage https://developers.google.com/web/tools/chrome-devtools + \title Chrome DevTools +*/ + +/*! + \externalpage https://developers.google.com/web/tools/javascript/console/console-write + \title Chrome console API +*/ + +/*! + \externalpage http://ffmpeg.org/ + \title FFmpeg +*/ + +/*! + \externalpage http://www.openh264.org/ + \title OpenH264 Project Homepage +*/ + +/*! + \externalpage http://html5demos.com/drag + \title HTML5 Demos - Drag and Drop +*/ + +/*! + \externalpage http://html5demos.com/drag-anything + \title HTML5 Demos - Simple Drag and Drop +*/ + +/*! + \externalpage http://html5demos.com/dnd-upload + \title HTML5 Demos - Drag and Drop, Automatic Upload +*/ + +/*! + \externalpage http://html5demos.com/file-api + \title HTML5 Demos - File API +*/ + +/*! + \externalpage http://www.widevine.com + \title Widevine CDM +*/ + +/*! + \externalpage http://demo.castlabs.com/ + \title castLabs +*/ + +/*! + \externalpage http://ssdemo04.swankmp.net/ + \title Swank Motion Pictures, Inc. +*/ + +/*! + \externalpage https://bitmovin.com/demos/drm + \title Bitmovin Player +*/ + +/*! + \externalpage https://sourceforge.net/projects/hunspell/ + \title Hunspell Project +*/ + +/*! + \externalpage https://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1 + \title RFC 2616 section 19.5.1 +*/ + +/*! + \externalpage https://www.iana.org/assignments/uri-schemes/prov/view-source + \title view-source URI scheme +*/ + +/*! + \externalpage https://wiki.greasespot.net/Metadata_Block + \title Greasemonkey +*/ + +/*! + \externalpage https://http2.github.io/ + \title HTTP/2 +*/ + +/*! + \externalpage https://http2.akamai.com/demo + \title Akamai HTTP/2 Demo +*/ + +/*! + \externalpage https://www.chromium.org/developers/design-documents/user-scripts + \title User Scripts +*/ + +/*! + \externalpage https://wiki.greasespot.net/Metadata_Block#.40name + \title Metadata Block +*/ + +/*! + \externalpage https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler + \title registerProtocolHandler +*/ + +/*! + \externalpage https://www.w3.org/TR/notifications + \title Web Notifications API +*/ + +/*! + \externalpage https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + \title Autoplay Policy Changes +*/ diff --git a/src/webenginequick/doc/src/fullscreen_request.qdoc b/src/webenginequick/doc/src/fullscreen_request.qdoc new file mode 100644 index 000000000..ec7d93ba6 --- /dev/null +++ b/src/webenginequick/doc/src/fullscreen_request.qdoc @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype FullScreenRequest + \instantiates QWebEngineFullScreenRequest + \inqmlmodule QtWebEngine + \since QtWebEngine 1.1 + + \brief A utility type for the WebEngineView::fullScreenRequested() signal. + + \sa WebEngineView::fullScreenRequested() +*/ + +/*! + \qmlproperty url FullScreenRequest::origin + \readonly + The URL of the web page that issued the fullscreen request. +*/ + +/*! + \qmlproperty bool FullScreenRequest::toggleOn + \readonly + + Returns \c{true} if the application should toggle fullscreen mode on, \c{false} otherwise. + + \sa accept() +*/ + +/*! + \qmlmethod void FullScreenRequest::accept() + + Call this method to accept the fullscreen request. It sets the WebEngineView::isFullScreen + property to be equal to toggleOn. + + \qml + ApplicationWindow { + id: window + WebEngineView { + onFullScreenRequested: function(request) { + if (request.toggleOn) + window.showFullScreen() + else + window.showNormal() + request.accept() + } + } + } + \endqml + + \sa toggleOn +*/ + +/*! + \qmlmethod void FullScreenRequest::reject() + Rejects a fullscreen request. +*/ + diff --git a/src/webenginequick/doc/src/load_request.qdoc b/src/webenginequick/doc/src/load_request.qdoc new file mode 100644 index 000000000..abe3a403f --- /dev/null +++ b/src/webenginequick/doc/src/load_request.qdoc @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype WebEngineLoadRequest + \instantiates QWebEngineLoadRequest + \inqmlmodule QtWebEngine + \since QtWebEngine 1.0 + + \brief A utility type for the WebEngineView::loadingChanged signal. + + Contains information about a request for loading a web page, such as the URL and + current loading status (started, succeeded, failed). + + \sa WebEngineView::loadingChanged +*/ +/*! + \qmlproperty url WebEngineLoadRequest::url + \brief Holds the URL of the load request. + */ +/*! + \qmlproperty enumeration WebEngineLoadRequest::status + + This enumeration represents the load status of a web page load request: + + \value WebEngineView.LoadStartedStatus Page is currently loading. + \value WebEngineView.LoadStoppedStatus + Loading the page was stopped by the stop() method or by the loader + code or network stack in Chromium. + \value WebEngineView.LoadSucceededStatus + Page has been loaded with success. + \value WebEngineView.LoadFailedStatus Page could not be loaded. + + \sa WebEngineView::loadingChanged +*/ +/*! + \qmlproperty string WebEngineLoadRequest::errorString + \brief Holds the error message. +*/ +/*! + \qmlproperty enumeration WebEngineLoadRequest::errorDomain + This enumeration holds the type of a load request error: + + \value WebEngineLoadRequest.NoErrorDomain + Error type is not known. + \value WebEngineLoadRequest.InternalErrorDomain + Content cannot be interpreted by \QWE. + \value WebEngineLoadRequest.ConnectionErrorDomain + Error results from a faulty network connection. + \value WebEngineLoadRequest.CertificateErrorDomain + Error is related to the SSL/TLS certificate. + \value WebEngineLoadRequest.HttpErrorDomain + Error is related to the HTTP connection. + \value WebEngineLoadRequest.FtpErrorDomain + Error is related to the FTP connection. + \value WebEngineLoadRequest.DnsErrorDomain + Error is related to the DNS connection. +*/ +/*! + \qmlproperty int WebEngineLoadRequest::errorCode + \brief Holds the error code. +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-debugging.qdoc b/src/webenginequick/doc/src/qtwebengine-debugging.qdoc new file mode 100644 index 000000000..0db35c85c --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-debugging.qdoc @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-debugging.html + \title Qt WebEngine Debugging and Profiling + + \section1 Console Logging + + JavaScript executed inside \QWE can use the + \l{Chrome console API} to log information to a console. The logging messages + are forwarded to Qt's logging facilities inside a \c js + \l{QLoggingCategory}{logging category}. However, only warning and fatal + messages are printed by default. To change this, you either have to set custom + rules for the \c js category, or provide custom message handlers + by reimplementing \l{QWebEnginePage::javaScriptConsoleMessage()}, or + connecting to \l{WebEngineView::javaScriptConsoleMessage()}. + + All messages can also be accessed through the \QWE developer + tools. + + \section1 Qt WebEngine Developer Tools + + The \QWE module provides web developer tools that make it easy + to inspect and debug layout and performance issues of any web content. + + The developer tools are accessed as a local web page using a Chromium or + \QWE based browser, such as the Chrome browser. + + To activate the developer tools, start an application that uses \QWE + with the command-line arguments: + + \badcode + --remote-debugging-port=<port_number> + \endcode + + Where \c <port_number> refers to a local network port. The web developer + tools can then be accessed by launching a browser at the address + \c http://localhost:<port_number>. + + Alternatively, the environment variable QTWEBENGINE_REMOTE_DEBUGGING + can be set. It can be set as either just a port working similarly to + \c --remote-debugging-port or given both a host address and a port. The + latter can be used to control which network interface to export the + interface on, so that you can access the developer tools from a remote + device. + + For a detailed explanation of the capabilities of developer tools, see the + \l {Chrome DevTools} page. + + \section1 Using Command-Line Arguments + + You can use the following command-line arguments while debugging to provide + input for bug reports: + + \list + \li \c {--disable-gpu} disables GPU hardware acceleration. This is + useful when diagnosing OpenGL problems. + \li \c {--disable-logging} disables console logging, which might be + useful for debug builds. + \li \c {--enable-logging --log-level=0} enables console logging and sets + the logging level to 0, which means that messages of the severity + \c info and above are recorded in the log. This is the default for + debug builds. Other possible log levels are \c 1 for warnings, \c 2 + for errors, and \c 3 for fatal errors. + \li \c {--v=1} Increases the logging level beyond what \c {--log-level} + can, and enables logging debug messages up to verbosity level \c 1. + A higher number further increases verbosity, but may result in a + large number of logged messages. Default is \c 0 (no debug messages). + \li \c {--no-sandbox} disables the sandbox for the renderer and plugin + processes. Keep in mind that disabling the sandbox might present a + security risk. + \li \c {--single-process} runs the renderer and plugins in the same + process as the browser. This is useful for getting stack traces for + renderer crashes. + \li \c {--enable-features=NetworkServiceInProcess} runs networking in + the main process. This may help firewall management, since only the + application executable will need to be whitelisted and + not QtWebEngineProcess. It means losing the security of + sandboxing of the network service though. + \endlist + + Alternatively, the environment variable QTWEBENGINE_CHROMIUM_FLAGS can be + set. For example, the following value could be set to disable logging while + debugging an application called \e mybrowser: + + \code + QTWEBENGINE_CHROMIUM_FLAGS="--disable-logging" mybrowser + \endcode + + QTWEBENGINE_CHROMIUM_FLAGS can also be set using {qputenv} from within the + application if called before QtWebEngine::initialize(). +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-deploying.qdoc b/src/webenginequick/doc/src/qtwebengine-deploying.qdoc new file mode 100644 index 000000000..7b9f3fd4a --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-deploying.qdoc @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-deploying.html + \title Deploying Qt WebEngine Applications + + The way to package and deploy applications varies between operating systems. + For Windows and \macos, \l{The Windows Deployment Tool}{windeployqt} and + \l{Deploying Applications on macOS}{macdeployqt} automate the steps to + generate a stand-alone application package. + + When manually deploying applications that depend on \QWE, all the + files that are required to run the application have to be included: + libraries, QML imports, plugins, and translations. + + For more information, see \l {Deploying Qt Applications}. + + \section1 Target Platforms + + \QWE does try to support all \l{Supported Platforms} of Qt. However, + due to different requirements of Chromium this is not always possible. Known + limitations are: + + \list + \li \QWE currently supports only Windows, Linux, and \macos. + + \li On Windows, \QWE only supports Windows Vista or newer as + target platform. Due to use of newer API in Chromium, Windows XP is + not supported. WinRT is not supported, either. + \endlist + + \section1 Deploying Applications Manually + + When manually deploying applications that depend on \QWE, the + following files might have to be deployed: + + \list + \li Libraries + \li QML imports + \li \QWE process + \li Resources + \li Translations + \li Audio and video codecs + \endlist + + \section2 Deploying Libraries + + The following libraries must be deployed with applications that depend on + \QWE: + + \list + \li QtWebEngineCore library + \li QtWebEngineWidgets or QtWebEngine libraries, depending on + application type + \endlist + + \section2 Deploying QML Imports + + If Qt Quick integration is used in the application, the QtWebEngine import + directory needs to be deployed. + + \section2 Deploying \QWE Processes + + \QWE takes advantage of the multi-process model that the Chromium + project offers. The multi-process model requires that the \QWE + Process executable be deployed alongside your application. + + The WebEngine process is executed for each QWebEngineView or WebEngineView + instance. For example, a browser application + with two tabs open should have two separate instances of the process + running. This is a common approach used by most modern web engines to + provide a stable browsing experience. + + At runtime, \QWE looks for the \c QtWebEngineProcess executable in + the directory that + QLibraryInfo::location(QLibraryInfo::LibraryExecutablesPath) returns. + For Qt installations, this is \c QTDIR/libexec (Linux) or \c QTDIR\bin + (Windows). The path can be changed by defining a \c qt.conf file, for + example. Alternatively, an executable path can be set as a value of the + \c QTWEBENGINEPROCESS_PATH environment variable. On \macos, \QWE + looks for the executable in \c .app/Helpers/QtWebEngineProcess. + + \section2 Deploying Resources + + \QWE requires the following resource files: + + \list + \li \c qtwebengine_resources.pak contains the resources needed by + Chromium. + \li \c qtwebengine_devtools_resources.pak contains tools for remote + debugging. + \li \c qtwebengine_resources_100p.pak contains images suitable for low + resolution displays. + \li \c qtwebengine_resources_200p.pak contains images suitable for high + DPI displays. + \li \c icudtl.dat provides support for International Components for + Unicode (ICU). It is the Chromium version of ICU, which is not + needed if \QWE was configured to use the system ICU. + \endlist + + Resources are searched from the following locations: + + \list + \li On Linux and Windows: the \c resources directory in the directory + specified by QLibraryInfo::location(QLibraryInfo::DataPath) + \li On \macos: \c .app/Content/Resources + \endlist + + \section2 Translations + + Locale data (such as \c en-US.pak) is searched form the following locations: + + \list + \li On \macos: \c .app/Content/Resources + \li On Linux and Windows: \c qtwebengine_locales directory in the + directory specified by + QLibraryInfo::location(QLibraryInfo::TranslationsPath) + \endlist + + \section2 JavaScript Files in Qt Resource Files + + If your WebEngine application is built using the Qt Quick Compiler, and the application ships + JavaScript files inside .qrc resources, and these files are supposed to be loaded from inside + HTML pages, make sure to specify the resource files in a \c QTQUICK_COMPILER_SKIPPED_RESOURCES + qmake variable inside your project. This prevents the Qt Quick Compiler from trying to generate + C++ code for the corresponding JavaScript code, as well as removing the original JavaScript code + from the Qt resources file, which would lead to broken HTML pages. For example: + + \code + QTQUICK_COMPILER_SKIPPED_RESOURCES += resources/my_resource.qrc + \endcode + +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-examples.qdoc b/src/webenginequick/doc/src/qtwebengine-examples.qdoc new file mode 100644 index 000000000..d31895078 --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-examples.qdoc @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \group webengine-examples + \title Qt WebEngine Examples + \brief Examples demonstrating the \QWE usage. + \ingroup all-examples + + These examples and demonstrations show a range of different uses for \l{Qt WebEngine}, + from displaying Web pages within a QML user interface to an implementation of + a basic function Web browser. + + For widget-based applications, Qt provides an integrated Web browser component based on + Chromium, the popular open source browser engine. +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-features.qdoc b/src/webenginequick/doc/src/qtwebengine-features.qdoc new file mode 100644 index 000000000..431367765 --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-features.qdoc @@ -0,0 +1,644 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-features.html + \title Qt WebEngine Features + + \brief Summarizes \QWE features. + + \QWE supports the following features: + + \list + \li \l{Audio and Video Codecs} + \li \l{Chromium DevTools} + \li \l{Client Certificates} + \li \l{Custom Schemes} + \li \l{Drag and Drop} + \li \l{Fullscreen} + \li \l{HTML5 DRM} + \li \l{HTML5 Geolocation} + \li \l{HTTP/2 Protocol} + \li \l{Native Dialogs} + \li \l{Pepper Plugin API} + \li \l{PDF File Viewing} + \li \l{Page Lifecycle API} + \li \l{Print to PDF} + \li \l{Process Models} + \li \l{Spellchecker} + \li \l{Touch} + \li \l{View Source} + \li \l{webrtc_feature}{WebRTC} + \li \l{Web Notifications} + \endlist + + \section1 Audio and Video Codecs + + \QWE supports the MPEG-4 Part 14 (MP4) file format only if the + required proprietary audio and video codecs, such as H.264 and MPEG layer-3 + (MP3), have been enabled. Proprietary codecs can be enabled by passing the + following option to the \c configure tool when configuring Qt: + + \code + -webengine-proprietary-codecs + \endcode + + For example, the following option could be passed when configuring Qt for + building it at the top level: + + \code + configure -webengine-proprietary-codecs + \endcode + + For more information, see \l{Qt Configure Options}. + + When using qmake to build just the \QWE module, the following + command can be used (in this example, the \QWE source code is + located in \c {C:\qt\qtwebengine}): + + \code + qmake C:\qt\qtwebengine -- -webengine-proprietary-codecs + \endcode + + \warning When distributing proprietary codec libraries, you must acquire + licenses for them. + + \l FFmpeg is a cross-platform solution to record, convert, and stream audio + and video. It can be configured for use with several codecs, which rises + licensing issues during distribution with the codec libraries. For some + codecs, open source implementations, such as \l{OpenH264 Project Homepage} + {OpenH264}, are available. + + \section1 Chromium DevTools + + The Chromium DevTools provide the ability to inspect and debug layout and + performance issues of any web content. + + This feature can be tested by launching a \QWE application with the + command line option \c {--remote-debugging-port=[your-port]} or by setting + the environment variable \c QTWEBENGINE_REMOTE_DEBUGGING, and then using a + Chromium based browser (such as \l{WebEngine Widgets Simple Browser Example} + {Simple Browser} or \l{WebEngine Quick Nano Browser}{Nano Browser}) to connect + to \c {http://localhost:[your-port]}. + + The Chromium DevTools page can also be shown within the application. To set + this up, you can call either QWebEnginePage::setInspectedPage() to the page + to be inspected, which implicitly loads the DevTools into the \c this page, + or QWebEnginePage::setDevToolsPage() to let the \c this page be inspected. + + The respective QML properties are \l{WebEngineView::devToolsView} + {WebEngineView.devToolsView} and \l{WebEngineView::inspectedView} + {WebEngineView.inspectedView}. + + For more information, see \l {Qt WebEngine Debugging and Profiling}. + + \section1 Client Certificates + + Some web servers, in particular many intranet sites, require the client to + authenticate itself with a certificate, called a \e {client certificate}. \QWE + will read the client certificates installed in the system settings in macOS and + Windows, and on Linux those installed into the NSS database. Certificates can + be installed into the NSS database using the \c pk12util tool. + + By default, \QWE will not offer any client certificates to servers, as doing + so uniquely identifies the user and might violate privacy expectations. + + To activate support for client certificates, an application needs to listen to + the QWebEnginePage::selectClientCertificate or + \l{WebEngineView::selectClientCertificate}{WebEngineView.selectClientCertificate} + signals and select one of the offered + certificates. For applications that can navigate to untrusted web sites, it is + recommended to always give the user a choice before uniquely identifying them + to a remote server. + + \section1 Custom Schemes + + \QWE makes it possible for the application to define its own custom + URL schemes with specialized security policies and transport mechanisms. + + Custom schemes can be used to implement alternative network protocols with + all the usual web security policies, privileged internal schemes for + displaying user interface compoments or debugging information, sandboxed + schemes with extra restrictions, and so on. + + For more information, see \l QWebEngineUrlScheme and \l + QWebEngineUrlSchemeHandler. + + \section1 Drag and Drop + + \QWE supports HTML5 drag and drop. + + This feature can be tested by opening an HTML5 drag and drop demo, such as + \l{HTML5 Demos - Drag and Drop}, \l{HTML5 Demos - Simple Drag and Drop}, or + \l{HTML5 Demos - Drag and Drop, Automatic Upload}, in \l{WebEngine Widgets + Simple Browser Example}{Simple Browser} or \l{WebEngine Quick Nano Browser} + {Nano Browser}. + + Dragging files into the browser is not actually part of HTML5, but it is + supported. It can be tested by opening \l{HTML5 Demos - File API}. + + Support for this feature was added in Qt 5.7.0. + + \section1 Fullscreen + + \QWE supports viewing web content in fullscreen mode. For more + information, see \l{WebEngineSettings::fullscreenSupportEnabled} + {WebEngineSettings.fullscreenSupportEnabled}, + \l{WebEngineView::fullScreenRequested}{WebEngineView.fullScreenRequested}, + QWebEngineSettings::FullScreenSupportEnabled, and + QWebEnginePage::fullScreenRequested. + + This feature can be tested by playing a video from YouTube in \l{WebEngine + Widgets Video Player Example}{Video Player} or \l{WebEngine Quick Nano Browser} + {Nano Browser}, and clicking the full screen icon to go into fullscreen + mode. + + Support for this feature was added in Qt 5.6.0. + + \section1 HTML5 DRM + + \QWE supports viewing DRM protected videos if the \l{Widevine CDM} plugin has been installed. + CDM plugin is a replacement of Flash based plugins for displaying DRM-protected content. + It comes only in a binary format, so it can hide DRM decryption implementation details. + It can be obtained from a third party or from a Google Chrome installation. + + \QWE on startup looks for the \l{Widevine CDM} plugin in well know locations, like + default Google Chrome installation directory or Linux distro specific paths. However, plugin + location can be also passed with \c {QTWEBENGINE_CHROMIUM_FLAGS} using \c {widevine-path}. + + On Windows: + \code + set QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="C:/some path/widevinecdm.dll" + \endcode + + On Linux: + \code + export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.so" + \endcode + + On macOS: + \code + export QTWEBENGINE_CHROMIUM_FLAGS=--widevine-path="/some path/libwidevinecdm.dylib" + \endcode + + + The video format most commonly used by DRM services, H.264, requires + proprietary audio and video codecs. For more information about enabling the + codecs, see \l{Audio and Video Codecs}. + + This feature can be tested by playing a video in \l{WebEngine Widgets Simple Browser + Example}{Simple Browser} or \l{WebEngine Quick Nano Browser}{Nano Browser} + from \l{castLabs}, \l{Swank Motion Pictures, Inc.}, or \l{Bitmovin Player}. + + Support for this feature was added in Qt 5.7.0. + + \section1 HTML5 Geolocation + + \QWE supports JavaScript Geolocation API with \l {Qt Location} as a + backend. The application has to explicitly allow the feature by using + QWebEnginePage::Geolocation or \l{WebEngineView::Feature} + {WebEngineView.Feature}. + + If Qt Location has been built before \QWE then this feature can be + tested by using \l{WebEngine Widgets Maps Example}{Maps} and allowing it to + find the current position of the user. Note that on Windows an external GPS + receiver must be connected to the application. For more information, see + \l{Qt Positioning}. + + Support for this feature was added in Qt 5.5.0. + + \section1 HTTP/2 Protocol + + \QWE supports the Chromium implementation of the \l{HTTP/2} + protocol. + + This feature can be tested by opening an HTTP/2 demo, such as the + \l{Akamai HTTP/2 Demo}, in \l{WebEngine Widgets Simple Browser Example} + {Simple Browser} or \l{WebEngine Quick Nano Browser}{Nano Browser}. + + \section1 Native Dialogs + + A web page might request dialogs for the following functions: + + \list + \li Entering user credentials for HTTP and proxy authentication + \li Displaying JavaScript alerts, confirmation dialogs, and prompts + \li Picking colors + \li Selecting files + \li Displaying form validation messages + \endlist + + \QWE provides standard dialogs for these functions. In widget-based + applications, the standard dialogs are based on QDialog, whereas in Qt Quick + applications, they can be based either on Qt Quick Controls 1 or Qt Quick + Controls 2 (since Qt 5.8). The latter are used only on \c eglfs platforms. + + To explicitly force either dialogs based on Qt Quick Controls 1 or Qt Quick + Controls 2, set the \c QTWEBENGINE_DIALOG_SET environment variable to either + \c{QtQuickControls1} or \c{QtQuickControls2}. + + \QWE Widgets dialogs can be customized by reimplementing the + QWebEnginePage::chooseFiles(), QWebEnginePage::javaScriptAlert(), + QWebEnginePage::javaScriptConfirm(), and QWebEnginePage::javaScriptPrompt() + functions. + + Since Qt 5.8, Qt Quick dialogs can be customized by connecting to the + WebEngineView::authenticationDialogRequested(), + WebEngineView::javaScriptDialogRequested(), + WebEngineView::colorDialogRequested(), + WebEngineView::fileDialogRequested(), and + WebEngineView::formValidationMessageRequested() signals. For an example, + see \l{WebEngine Qt Quick Custom Dialogs Example}. + + \section1 Pepper Plugin API + + \QWE supports loading Pepper Plugin API (PPAPI) plugins if + WebEngineSettings::pluginsEnabled or QWebEngineSettings::PluginsEnabled + is set. + + Except for the Adobe Flash Player plugin, the plugins must be loaded + manually using the Chromium command line syntax with the + \c --register-pepper-plugins argument. The argument value is a list of + entries, separated by commas, that contain the file path and one or several + MIME types, separated by semicolons: + + \code + <file-path-plugin1>;<mime-type-plugin1>,<file-path-plugin2>;<mime-type1-plugin2>;<mime-type2-plugin2> + \endcode + + For example: + + \code + --register-pepper-plugins="libppapi_example.so;application/x-ppapi-example" + \endcode + + The MIME type is important because it determines which embeds the plugin is + used for. + + Support for this feature was added in Qt 5.6.0. + + \section2 Pepper Flash Player Plugin Support + + The Pepper Flash player plugin can be loaded automatically if it is + installed in one of the following locations, depending on the platform: + + \list + \li Windows + \code + C:\Windows\SysWOW64\Macromed\Flash\pepflashplayer*.dll + C:\Windows\System32\Macromed\Flash\pepflashplayer*.dll + \endcode + \li OS X + \code + /Library/Internet Plug-Ins/PepperFlashPlayer/PepperFlashPlayer.plugin + \endcode + \li Linux + \code + /usr/lib/pepperflashplugin-nonfree/libpepflashplayer.so + /usr/lib/adobe-flashplugin/libpepflashplayer.so + /usr/lib/PepperFlash/libpepflashplayer.so + /usr/lib64/chromium/PepperFlash/libpepflashplayer.so + \endcode + \endlist + + You can also load the Pepper Flash player from a specific location by using + command line arguments: + + \code + --ppapi-flash-path=./libpepflashplayer.so + \endcode + + By default, the Flash version is set to \c{11.2.999.999}. You can use the + \c{ppapi-flash-version=} argument to set another Flash version in the + format \c{major.minor.build.revision}: + + \code + --ppapi-flash-version=16.0.0.235 + \endcode + + This feature can be tested in \l{WebEngine Widgets Simple Browser Example}{Simple Browser} + or \l{WebEngine Quick Nano Browser}{Nano Browser} if the Adobe Flash PPAPI + plugin is installed and plugins are enabled in the browser. To test the + feature, the \c https://helpx.adobe.com/flash-player.html page can be opened + in the browser. + + \section1 PDF File Viewing + + \QWE supports viewing PDF documents by navigating to them. This feature uses the Chromium + extensions API and PDF viewer plugin to display the PDF documents. + It can be tested in \l{WebEngine Widgets Simple Browser Example}{Simple Browser} or + \l{WebEngine Quick Nano Browser}{Nano Browser}. + + Loading plugins needs to be enabled using QWebEngineSettings::PluginsEnabled or + WebEngineSettings::pluginsEnabled in order to use this feature. + + This feature can be turned on (default) or off via the QWebEngineSettings::PdfViewerEnabled or + WebEngineSettings::pdfViewerEnabled setting. + + Support for this feature was added in Qt 5.13.0. + + \section1 Page Lifecycle API + + \QWE supports the \l {https://wicg.github.io/page-lifecycle/spec.html}{Page + Lifecycle API specification}, a work-in-progress extension to the HTML + standard for allowing user agents to reduce their resource consumption by + freezing or discarding background pages. The feature is exposed both in the + Widgets and QML APIs. + + For an example of the QML API in use, see the \l {WebEngine Lifecycle + Example}. + + Support for this feature was added in Qt 5.14.0. + + \section2 Overview of Lifecycle States + + Each \l {WebEngineView} item (or \l {QWebEnginePage} object) can be in one + of three \e {lifecycle states}: active, frozen, or discarded. These states, + like the sleep states of a CPU, control the resource usage of web views. + + The \e {active} state is the normal, unrestricted state of a web view. All + visible web views are always in the active state, as are all web views that + have not yet finished loading. Only invisible, idle web views can be + transitioned to other lifecycle states. + + The \e {frozen} state is a low CPU usage state. In this state, most HTML + task sources are suspended (frozen) and, as a result, most DOM event + processing and JavaScript execution will also be suspended. The web view + must be invisible in order to be frozen as rendering is not possible in this + state. + + The \e {discarded} state is an extreme resource-saving state. In this state, + the browsing context of the web view will be discarded and the corresponding + renderer subprocess shut down. CPU and memory usage in this state is reduced + virtually to zero. On exiting this state the web page will be automatically + reloaded. The process of entering and exiting the discarded state is similar + to serializing the browsing history of the web view and destroying the view, + then creating a new view and restoring its history. + + See also \l {WebEngineView::LifecycleState}. The equivalent in the Widgets + API is \l {QWebEnginePage::LifecycleState}. + + \section2 The \c {lifecycleState} and \c {recommendedState} Properties + + The \l {WebEngineView::}{lifecycleState} property of the \l {WebEngineView} + type is a read-write property that controls the current lifecycle state of + the web view. This property is designed to place as few restrictions as + possible on what states can be transitioned to. For example, it is allowed + to freeze a web view that is currently playing music in the background, + stopping the music. In order to implement a less aggressive resource-saving + strategy that avoids interrupting user-visible background activity, the \l + {WebEngineView::} {recommendedState} property must be used. + + The \l {WebEngineView::}{recommendedState} property of the \l + {WebEngineView} type is a read-only property that calculates a safe limit on + the \l {WebEngineView::}{lifecycleState} property, taking into account the + current activity of the web view. So, in the example of a web view playing + music in the background, the recommended state will be \c {Active} since a + more aggressive state would stop the music. If the application wants to + avoid interrupting background activity, then it should avoid putting the web + view into a more aggressively resource-saving lifecycle state than what's + given by \l {WebEngineView::}{recommendedState}. + + See also \l {WebEngineView::lifecycleState} and \l + {WebEngineView::recommendedState}. The equivalents in the Widgets API are \l + {QWebEnginePage::lifecycleState} and \l {QWebEnginePage::recommendedState}. + + \section2 The DOM Extensions + + The \l {WebEngineView::}{lifecycleState} property is connected to the \l + {https://wicg.github.io/page-lifecycle/spec.html}{Page Lifecycle API + specification}, which specifies two new DOM events, \c {freeze} and \c + {resume}, and adds a new \c {Document.wasDiscarded} boolean property. The \c + {freeze} and \c {resume} events are fired when transitioning from the \c + {Active} to the \c {Frozen state}, and vice-versa. The \c + {Document.wasDiscarded} property is set to \c {true} when transitioning from + the \c {Discarded} state to the \c {Active} state. + + \section1 Print to PDF + + \QWE supports printing a web page to a PDF file. For more + information, see QWebEnginePage::printToPdf() and + \l{WebEngineView::printToPdf}{WebEngineView.printToPdf}. + + This feature can be tested using \l{WebEngine Widgets Html2Pdf Example} + {Html2Pdf}. + + Support for this feature was added in Qt 5.7.0. + + \section1 Process Models + + \QWE uses multiple OS processes to isolate web sites from each other + and from the client application, improving security and robustness. The + following process models, or ways to divide web sites between OS processes, + are supported: + + \list + \li \l{Process per Site Instance} + \li \l{Process per Site} + \li \l{Single Process} + \endlist + + \section2 Process per Site Instance + + This is the default model. Pages from separate sites are put into separate + processes and separate visits to the same site are also isolated. + + Two web pages are considered as belonging to the same site if they originate + from the same registered domain name (for example, \c wikipedia.org) and + scheme (for example, \c https). This is similar to the same-origin policy + but subdomains are ignored. For example, both \c{https://en.wikipedia.org/} + and \c{https://de.wikipedia.org/} would belong to the same site. + + A site instance is a collection of web pages belonging to the same site. + When the application explicitly loads a URL into \QWE (via \l + QWebEnginePage::setUrl, for example), a new site instance is created for the + page. However, when the user clicks same-site links on the page, the + existing site instance is merely extended with more pages. + + For instance, in the \l{WebEngine Widgets Simple Browser Example}{Simple + Browser} example, when a user opens two tabs and explicitly enters + \c{https://en.wikipedia.org/} into the URL bars, both tabs will have their + own separate OS processes (because explicitly entering a URL creates a new + site instance). However, when the user then middle-clicks some same-site + links to open more tabs, these new tabs will share the same OS process + (because user interaction extends the existing site instance). + + \section2 Process per Site + + Pages from separate sites are put into separate processes. Unlike Process + per Site Instance, all visits to the same site will share an OS process. + + The benefit of this model is reduced memory consumption, because more web + pages will share processes. The drawbacks include reduced security, + robustness, and responsiveness. + + To enable this model, use the command-line argument \c{--process-per-site}. + See \l{Using Command-Line Arguments}. + + \section2 Single Process + + For debugging purposes only, a single process mode can be enabled using the + command-line argument \c{--single-process}. See \l{Using Command-Line + Arguments} and \l{Qt WebEngine Debugging and Profiling}. + + \section1 Spellchecker + + \QWE supports integrating spellchecking support into HTML forms to + enable users to submit spellchecked messages. When the user clicks on + an underlined misspelled word, the default context menu displays up to four + suggestions. Selecting one will replace the misspelled word. + + To be able to check the spelling, the spellchecker needs dictionaries. It + supports dictionaries from the \l{Hunspell project}, but they have to be + compiled into a special binary format. A Hunspell dictionary consists of two + files: + + \list + + \li A \c .dic file that is a dictionary containing words for the + language + \li An \c .aff file that defines the meaning of special flags in the + dictionary + \endlist + + These two files can be converted into the \c bdic format by using the + \c qwebengine_convert_dict tool that is shipped together with Qt. + When the \QWE spellchecker initializes, it will try to load the + \c bdict dictionaries and to check them for consistency. + + If \c QTWEBENGINE_DICTIONARIES_PATH is set, the spellchecker uses the + dictionaries in the specified directory without looking anywere else. + Otherwise, it uses the \e qtwebengine_dictionaries directory relative to the + executable if it exists. If it does not exist, it will look in \c + QT_INSTALL_PREFIX/qtwebengine_dictionaries. + + On macOS, depending on how \QWE is configured at build time, there + are two possibilities how spellchecking data is found: + + \list + \li Hunspell dictionaries (default) - .bdic dictionaries are used, just + like on other platforms + \li Native dictionaries - the macOS spellchecking APIs are used (which + means the results will depend on the installed OS dictionaries) + \endlist + + Thus, in the macOS Hunspell case, \QWE will look in the \e + qtwebengine_dictionaries subdirectory located inside the application bundle + \c Resources directory, and also in the \c Resources directory located + inside the Qt framework bundle. + + To summarize, in case of Hunspell usage, the following paths are considered: + + \list + \li \c QTWEBENGINE_DICTIONARIES_PATH, if set + \li QCoreApplication::applicationDirPath()/qtwebengine_dictionaries + or QCoreApplication::applicationDirPath()/../Contents/Resources/qtwebengine_dictionaries + (on macOS) + \li [QLibraryInfo::DataPath]/qtwebengine_dictionaries + or path/to/QtWebEngineCore.framework/Resources/qtwebengine_dictionaries (Qt framework + bundle on macOS) + \endlist + + Spellchecking is disabled by default and can be enabled per profile by + using the QWebEngineProfile::setSpellCheckEnabled() method in widget-based + applications and the \l {QQuickWebEngineProfile::spellCheckEnabled} + {WebEngineProfile.spellCheckEnabled} property in Qt Quick applications. + + The current language used for spellchecking is defined per profile, and can + be set using the QWebEngineProfile::setSpellCheckLanguages() method or the + \l {QQuickWebEngineProfile::spellCheckLanguages} + {WebEngineProfile.spellCheckLanguages} property. + + This feature can be tested by building and running the + \l{WebEngine Widgets Spellchecker Example}{Spellchecker Example}. + + Support for this feature was added in Qt 5.8.0. + + \section1 Touch + + \QWE supports touch devices for navigating and interacting with web pages. + + Applications can prohibit the use of touch events in the following ways: + + \list + \li Passing the flag \c --touch-events=disabled on the command line will disable touch event + support in JavaScript API (meaning \c ontouchstart and related handlers will not be present + in the \c document.window object). Touch events will still be delivered to web pages. + + \li Installing an event filter object using \l {QObject::installEventFilter} on the WebEngine + view focus proxy object, and filtering out all touch events. + + \endlist + + \section1 View Source + + \QWE supports viewing the HTML source of a web page. + + This feature can be used from custom menus or assigned to custom events. + For more information, see WebEngineView::WebAction, and QWebEnginePage::WebAction. + + This feature can be tested by opening a web page in \l{WebEngine Widgets + Simple Browser Example}{Simple Browser} or \l{WebEngine Quick Nano Browser} + {Nano Browser}, and then selecting \c{Page Source} in the context menu. The + \c{Page Source} context menu entry opens the source view in a new tab. + + For opening the source view in the current tab, URLs with \l{view-source URI scheme} + are also supported. For example, you can type the following URL to the URL bar + to view the HTML source of the qt.io web page: + \code + view-source:https://www.qt.io/ + \endcode + + Auto-completion of incomplete URLs with \l{view-source URI scheme} makes the usage of + this feature more comfortable. For example, the following incomplete URL also loads + the source view of the qt.io web page: + \code + view-source:qt.io + \endcode + + Support for this feature was added in Qt 5.8.0. + + \target webrtc_feature + \section1 WebRTC + + WebRTC provides browsers with Real-Time Communications (RTC) capabilities + via simple APIs. For more information, see \l{WebEngineView::Feature} + {WebEngineView.Feature} and QWebEnginePage::Feature. + + This feature can be tested by setting up a webcam or microphone and then + opening \c https://test.webrtc.org/ in \l{WebEngine Widgets Simple Browser + Example}{Simple Browser} or \l{WebEngine Quick Nano Browser}{Nano Browser}. + + \section1 Web Notifications + + Qt WebEngine supports JavaScript \l{Web Notifications API}. + The application has to explicitly allow the feature by using + QWebEnginePage::Notifications or \l{WebEngineView::Feature} + {WebEngineView.Notifications}. + + Support for this feature was added in Qt 5.13.0. +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-index.qdoc b/src/webenginequick/doc/src/qtwebengine-index.qdoc new file mode 100644 index 000000000..f668cf87b --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-index.qdoc @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-index.html + \title Qt WebEngine + + \brief Provides functionality for rendering regions of dynamic web content. + + \QWE provides functionality for rendering regions of dynamic web content. + + The functionality in \QWE is divided into the following modules: + + \annotatedlist qtwebengine-modules + + \section1 Articles and Guides + + \list + \li \l{Qt WebEngine Overview} + \li \l{Qt WebEngine Features} + \li \l{Qt WebEngine Platform Notes} + \li \l{Qt WebEngine Licensing} + \li \l{Qt WebEngine Debugging and Profiling} + \li \l{Deploying Qt WebEngine Applications} + \li \l{Porting from Qt WebKit to Qt WebEngine} + \endlist + + \section1 Examples + + \list + \li \l{Qt WebEngine Examples} + \li \l{Qt WebEngine Widgets Examples} + \endlist + + \section1 API References + + \list + \li \l{Qt WebEngine C++ Classes and Namespaces} + \li \l{Qt WebEngine QML Types} + \endlist +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-module.qdoc b/src/webenginequick/doc/src/qtwebengine-module.qdoc new file mode 100644 index 000000000..5554bd519 --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-module.qdoc @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \module QtWebEngine + \title Qt WebEngine C++ Classes + \brief Exposes C++ functionality to Qt Quick. + \ingroup modules + + The \QWE module exposes C++ functionality to Qt Quick. + + To include the definitions of the module's classes, use the + following directive: + + \snippet qtwebengine_build_snippet.qdoc 1 + + \if !defined(qtforpython) + To link against the module, add the following to your qmake project file: + + \snippet qtwebengine_build_snippet.qdoc 0 + \endif +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-modules.qdoc b/src/webenginequick/doc/src/qtwebengine-modules.qdoc new file mode 100644 index 000000000..7b8ced728 --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-modules.qdoc @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-modules.html + \title Qt WebEngine C++ Classes and Namespaces + \brief Provides functionality for rendering regions of dynamic web content. + + \e {Qt WebEngine} provides functionality for rendering regions of dynamic web content. + + \section1 Namespaces + \annotatedlist qtwebengine-namespaces + + \section1 Classes + + \section2 Qt WebEngineCore Module + \generatelist {classesbymodule QtWebEngineCore} + + \section2 Qt WebEngineWidgets Module + \generatelist {classesbymodule QtWebEngineWidgets} + + \section2 Qt WebEngine Module + \generatelist {classesbymodule QtWebEngine} +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-overview.qdoc b/src/webenginequick/doc/src/qtwebengine-overview.qdoc new file mode 100644 index 000000000..9908d46a8 --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-overview.qdoc @@ -0,0 +1,315 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-overview.html + \title Qt WebEngine Overview + + The \QWE module provides a web browser engine that makes it easy to embed content from + the World Wide Web into your Qt application on platforms that do not have a native web engine. + + \QWE provides C++ classes and QML types for rendering HTML, XHTML, and SVG documents, + styled using Cascading Style Sheets (CSS) and scripted with JavaScript. HTML documents can be + made fully editable by the user through the use of the \c{contenteditable} attribute on HTML + elements. + + \section1 Qt WebEngine Architecture + + \image qtwebengine-architecture.png + + The functionality in \QWE is divided into the following modules: + + \list + \li \l{Qt WebEngine Widgets Module} for creating widget-based web applications + \li \l{Qt WebEngine Module} for creating Qt Quick based web applications + \li \l{Qt WebEngine Core Module} for interacting with Chromium + \endlist + + Page rendering and JavaScript execution are separated from the GUI process into the \QWE + Process. It is a library that must be shipped with the application if the Qt libraries are + bundled into the application. + + \section2 Qt WebEngine Widgets Module + + \image qtwebenginewidgets-model.png + + A \e {web engine view} is the main widget component of the \QWE module. It can be used + in various applications to load web content. Within a view, a \e {web engine page} holds a main + frame that is responsible for web content, the \e history of navigated links, and \e actions. + The view and page are quite similar, as they provide a set of common functions. + + All pages belong to a \e {web engine profile} that contains shared \e settings, \e scripts, and + \e cookies. Profiles can be used to isolate pages from each other. A typical use case is a + dedicated profile for a \e {private browsing} mode, where no information is permanently saved. + + \note The \QWE Widgets module uses the \l{Qt Quick Scene Graph}{Qt Quick scene graph} + to compose the elements of a web page into one view. This means that the UI process + requires OpenGL ES 2.0 or OpenGL 2.0 for its rendering. + + \section2 Qt WebEngine Module + + \image qtwebengine-model.png + + The \QWE QML implementation contains the same elements as the \QWE Widgets + implementation, except that there is no separately accessible web engine page. + The supported page functionality is integrated into the web engine view. + + \section2 Qt WebEngine Core Module + + The \QWE core is based on the \l {Chromium Project}. Chromium provides its own network + and painting engines and is developed tightly together with its dependent modules. + + \note \QWE is based on Chromium, but does not contain or use any services + or add-ons that might be part of the Chrome browser that is built and delivered by Google. + You can find more detailed information about the differences between Chromium and Chrome in this + \l{https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md}{overview} + that is part of the documentation in the \l {Chromium Project} upstream source tree. + + This version of \QWE is based on Chromium version 87.0.4280, with additional security + fixes from newer versions. + + \section2 Qt WebEngine Process + + The \QWE Process is a separate executable that is used to render web pages and + execute JavaScript. This mitigates security issues and isolates crashes caused by specific + content. + + \section1 Embedding Web Content into Widget Based Applications + + Use the QWebEngineView class to display web pages in the simplest way. Because it is a widget, + you can embed QWebEngineView into your forms and use its convenience functions to download and + display web sites. + + \code + QWebEngineView *view = new QWebEngineView(parent); + view->load(QUrl("http://www.qt.io/")); + view->show(); + \endcode + + An instance of QWebEngineView has one QWebEnginePage. QWebEnginePage can have a + QWebEngineHistory that provides access to the page's navigation history and several QAction + objects that apply actions on the web page. In addition, a QWebEnginePage has the ability to + run JavaScript code in the context of the page's main frame and to enable customization of + handlers for specific events like showing custom authentication dialogs. + + Each QWebEnginePage belongs to a QWebEngineProfile that can have a QWebEngineSettings + for specifying page settings, a QWebEngineScriptCollection for running scripts on the page, and + a QWebEngineCookieStore for accessing the HTTP cookies of Chromium. A QWebEnginePage can also + directly point to a script collection. + + For a widget based application, the web engine is automatically initialized, unless it is + placed in a plugin. In that case, it must be initialized in the application main source file + by using \l QtWebEngine::initialize, as illustrated by the following code snippet: + + \code + int main(int argc, char **argv) + { + QApplication app(argc, argv); + + QtWebEngine::initialize(); + + QMainWindow window; + window.show(); + + return app.exec(); + } + \endcode + + \section1 Embedding Web Content into Qt Quick Applications + + The WebEngineView QML type allows Qt Quick applications to render regions of dynamic web + content. A \e{WebEngineView} type may share the screen with other QML types or encompass the + full screen as specified within the Qt Quick application. + + To make sure that OpenGL context can be shared between the GUI and render processes, the web + engine must be initialized by using \l QtWebEngine::initialize in the application main source + file, as illustrated by the following code snippet: + + \code + int main(int argc, char *argv[]) + { + QGuiApplication app(argc, argv); + + QtWebEngine::initialize(); + + QQmlApplicationEngine engine; + engine.load(QUrl("qrc:/main.qml")); + + return app.exec(); + } + \endcode + + An application can load pages into the WebEngineView, using either an URL or HTML string, and + navigate within session history. By default, links to different pages load within the same + WebEngineView object, but web sites may request them to be opened as a new tab, window, or + dialog. + + The following sample QML application loads a web page using the \l{WebEngineView::}{url} + property: + + \quotefromfile webengine/minimal/main.qml + \skipto import + \printuntil /^\}/ + + \section1 Script Injection + + \QWE does not allow direct access to the document object model (DOM) of a page. + However, the DOM can be inspected and adapted by injecting scripts. + + The DOM of a page is constructed when the document is ready, typically + when the page is completely loaded. Therefore, executing scripts as soon as a document is + created is not suitable for DOM operations, where one has to wait until the DOM is ready. + + In addition, an injected script shares the same \e world as the other scripts executed on the + page, which might lead to conflicts. To avoid this, the QWebEngineScript class and the + WebEngineScript QML type provide implementations of the Chromium API for + \e{Content Script Extensions}. They specify the + script to run, the injection point, and the world where the script is run. This enables + accessing the DOM to manipulate it within a world. + + Since Qt 5.8, \QWE supports augmenting a script by using the + following \l{Metadata Block}{Greasemonkey-like attributes}: + + \list + \li \c {@exclude <regexp>} + \li \c {@include <regexp>} + \li \c {@match <regexp>} + \li \c {@name <free text>} + \li \c {@run-at [document-start|document-end|document-idle]} + \endlist + + The attributes determine if and when a \l {User Scripts}{user script} is + run. They must be placed immediately in the beginning of the script, inside + a \c ==UserScript== comment: + + \code + // ==UserScript== + // @include http://*.qt.io/* + // @exclude http://wiki.qt.io/* + // ==/UserScript== + + window.alert("Page is from qt.io, but not wiki.qt.io"); + \endcode + + If your WebEngine application is built using the Qt Quick Compiler, and the application ships + JavaScript files inside .qrc resources, consider reading the section + \l{JavaScript Files in Qt Resource Files}. + + \section1 Managing Certificates + + \QWE uses its own network stack, and therefore QSslConfiguration is not used to + open SSL connections. Instead, \QWE uses the root CA certificates from the operating + system to validate the peer's certificate. + + The \l{WebEngineCertificateError::error} and \l{QWebEngineCertificateError::Error} enumerations + provide information about the types of certificate errors that might occur. The errors can be + handled by using the WebEngineView::certificateError QML method or by reimplementing the + QWebEnginePage::certificateError function. + + \section1 Proxy Support + + \QWE uses the proxy settings from \l{Qt Network}, and forwards them to Chromium's + networking stack. If QNetworkProxy::applicationProxy is set, it will also be used for \QWE. + If QNetworkProxyFactory::usesSystemConfiguration() is enabled, the proxy settings + are automatically retrieved from the system. Settings from an installed QNetworkProxyFactory + will be ignored, though. + + In case QNetworkProxy::user() and QNetworkProxy::password() are set, these credentials + will be automatically used for proxy authentication. It is up to the user to provide valid + credentials, since there is no error handling callback. + + If no credentials are set with QNetworkProxy, but the proxy requires authentication, + QWebEnginePage::proxyAuthenticationRequired is emitted. + For Qt Quick, a dialog is shown. + + Not all properties of QNetworkProxy are supported by \QWE. That is, + QNetworkProxy::type(), QNetworkProxy::hostName() and QNetworkProxy::port() are taken into + account. All other proxy settings such as QNetworkProxy::rawHeader() are ignored. + + \section1 High DPI Support + + To support High DPI devices, it is recommended that the application attribute + Qt::AA_EnableHighDpiScaling is set to enable automatic scaling based on the + pixel density of the monitor. In \QWE applications, the scaling + affects the default zooming factor and scrollbar size. + + For example: + + \code + int main(int argc, char *argv[]) + { + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QApplication app(argc, argv); + // ... + } + \endcode + + \QWE bundles images for normal and high-dpi resolutions into + \e qtwebengine_resources_100p.pak and \e qtwebengine_resources_200p.pak + files. Depending on the target resolutions, one or both of these files need + to be deployed. + + For more information, see \l{High DPI Displays}. + + \section1 Using WebEngine Core + + \QWE Core provides an API shared by \QWE and \QWE Widgets for handling + URL requests issued for the networking stack of Chromium and for accessing its HTTP cookies. + + Implementing the QWebEngineUrlRequestInterceptor interface and installing the interceptor on a + profile enables intercepting, blocking, and modifying URL requests (QWebEngineUrlRequestInfo) + before they reach the networking stack of Chromium. + + A QWebEngineUrlSchemeHandler can be registered for a profile to add support for custom URL + schemes. Requests for the scheme are then issued to QWebEngineUrlSchemeHandler::requestStarted() + as QWebEngineUrlRequestJob objects. + + The QWebEngineCookieStore class provides functions for accessing HTTP cookies of Chromium. + The functions can be used to synchronize cookies with QNetworkAccessManager, as well as to set, + delete, and intercept cookies during navigation. + + \section1 Platform Notes + + \QWE currently supports only Windows, Linux, and \macos. Due to Chromium build + requirements it also often requires a newer compiler than the rest of Qt. See + \l{Qt WebEngine Platform Notes} for further details. + + \section1 Related Modules + + \QWE supersedes the \l{http://doc.qt.io/archives/qt-5.3/qtwebkit-index.html}{Qt WebKit} + module, which is based on the + WebKit project, but has not been actively synchronized with the upstream WebKit code since + Qt 5.2 and has been deprecated in Qt 5.5. For tips on how to change a Qt \WebKit widgets + application to use \QWE widgets, see \l{Porting from Qt WebKit to Qt WebEngine}. + + The \l{Qt WebView} module allows to use a native web browser on platforms where one is + available. + + The \l{Qt WebChannel} module can be used to create a bi-directional communication channel + between QObject objects on the C++ side and JavaScript on the QML side. + +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-platform-notes.qdoc b/src/webenginequick/doc/src/qtwebengine-platform-notes.qdoc new file mode 100644 index 000000000..6356b97af --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-platform-notes.qdoc @@ -0,0 +1,238 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page qtwebengine-platform-notes.html + \title Qt WebEngine Platform Notes + + \brief Contains information about issues that are specific to the \QWE module. + + \section1 Building \QWE from Source + + Static builds are not supported. + + The requirements for building Qt 5 modules from source are listed separately for each supported + platform: + + \list + \li \l{Qt for Windows - Requirements} + \li \l{Qt for X11 Requirements} + \li \l{Qt for macOS - Building from Source} + \endlist + + In addition, the following tools are required for building the \l {Qt WebEngine} module: + + \list + \li \l {All Platforms} + \li \l {Windows} + \li \l {Linux} + \li \l {macOS} + \endlist + + The tests for skipping the \QWE build are located in the + \c qtwebengine repository, in the \c tools\qmake\mkspecs subdirectory. + They can be found by searching for \c skipBuild. + + \section2 All Platforms + + On all platforms, the following tools are required at build time: + + \list + \li \l Python 2.7.5 or later. Python 3 is not supported. + \li Bison, Flex + \li GPerf + \li Node.js for a full featured Dev Tools. + \endlist + + \section2 Windows + + On Windows, the following additional tools are required: + + \list + \li Visual Studio 2017 version 15.8 or later + \li Active Template Library (ATL), usually included in the Visual Studio + installation + \li Windows 10 SDK version 10.0.19041 or later + \endlist + + \QWE can only be built on 64-bit Windows, with a x64-bit toolchain. + For building \QWE for x86 applications, you need to configure + and compile Qt with the Visual Studio 2017 x64 to x86 cross-compile + toolchain. This toolchain can be set up on the command line by running + \c{vcvarsall.bat amd64_x86}. + + \section2 Linux + + On Linux, Clang or GCC version 5 or later is required. + Supported configurations are \c linux-g++, \c{linux-clang} and \c{linux-clang-libc++} + + \QWE requires \c pkg-config to detect most of its dependencies. The + following \c pkg-config files are required: + + \list + \li \c dbus-1 + \li \c fontconfig + \endlist + + If Qt was configured for \c xcb, the following \c pkg-config files are also + required: + + \list + \li \c libdrm + \li \c xcomposite + \li \c xcursor + \li \c xi + \li \c xrandr + \li \c xscrnsaver + \li \c xtst + \endlist + + Further, development packages for \c khr and \c libcap need to be installed. + + \section2 \macos + + On \macos, the following are required: + + \list + \li \macos 10.13 or later + \li Xcode 10.0 or later + \li \macos 10.13 SDK or later + \endlist + + \note \QWE cannot be built for the 32-bit mode of \macos (using the + \c macx-clang-32 \c mkspec). + + \section1 Using Earlier Qt Versions to Build \QWE + + Building \QWE with earlier Qt versions (down to the last LTS + version) is supported. It means that \QWE 5.15 can be built with + Qt 5.12.x, Qt 5.14.x, and Qt 5.15. + + To use an earlier Qt version to build Qt Webengine: + + \list 1 + \li Download the qtwebengine sources. + \li From the earlier Qt version, run + \c {qmake && make (&& make install)}. + \endlist + + \section1 Mac App Store Compatibility + + Applications using \QWE are not compatible with the Mac App Store, because: + + \list + \li The Chromium part of the code uses several private API methods, which are prohibited by + the App Store. + \li Applications submitted to the App Store must be code-signed with the App Sandbox feature + enabled. The App Sandbox feature interferes with Chromium's own sandbox + initialization, which results in Chromium not being properly initialized. This also + ties in with the private API usage. Furthermore, standalone Chromium itself is not + officially tested with the App Sandbox enabled, and even if work is done to bypass + the App Store's restrictions, that would not guarantee correct behavior of the library. + + \endlist + + \section1 macOS Airplay Support on MacBooks with Dual GPUs + + To make \QWE work correctly when streaming to an AppleTV from a MacBook that supports + GPU switching, it is important to add the \c NSSupportsAutomaticGraphicsSwitching option to the + application Info.plist file, with the value set to \c YES. Otherwise rendering issues might + occur when creating new web engine view instances after Airplay is switched on or off. + + \section1 Default QSurfaceFormat OpenGL Profile Support + + If a new default QSurfaceFormat with a modified OpenGL profile has to be set, it should be set + before the application instance is declared, to make sure that all created OpenGL contexts use + the same OpenGL profile. + + On \macos, if the default QSurfaceFormat is set after the application instance, the application + will exit with qFatal(), and print a message that the default QSurfaceFormat should be set + before the application instance. + + \section1 Sandboxing Support + + \QWE provides out-of-the-box sandboxing support for Chromium render + processes. + + On Linux, note the following restrictions: + + \list + \li The kernel has to support the anonymous namespaces feature + (kernel version 3.8 or later). However, on Debian, Ubuntu, + and other Debian-derived distributions, this feature is off + by default. It can be turned on by setting + \c /proc/sys/kernel/unprivileged_userns_clone to 1. + \li The kernel has to support the \c seccomp-bpf feature (kernel + version 3.5 or later). + \li Setuid sandboxes are not supported and are thus disabled. + \endlist + + To explicitly disable sandboxing, use one of the following options: + + \list + \li Set the \c QTWEBENGINE_DISABLE_SANDBOX environment variable to 1. + \li Pass the \c{--no-sandbox} command line argument to the user + application executable. + \li Set \c QTWEBENGINE_CHROMIUM_FLAGS to \c{--no-sandbox}. + \endlist + + For more information, see \l{Using Command-Line Arguments}. + + \section1 Memory Requirements in Docker Environment + + When running Qt Web Engine examples in a Docker container and browsing + content-heavy sites, BUS errors (SIGBUS) might be reported. Typically, + this is caused by Docker running a container with a too small memory space + (such as 64MB). To fix this problem, increase the memory space size. + + \section1 Accessibility and Performance + + \QWE enables accessibility support for web pages when the following conditions + are met: + + \list + \li Qt Core is configured and built with accessibility support enabled. + \li The QPA plugin is notified by the operating system that accessibility should be + activated. This happens for example when using a screen reader application on Windows + or VoiceOver on \macos. + \endlist + + Due to some limitations, the Linux QPA plugin almost always reports that accessibility should + be activated. On big HTML pages, this can cause a significant slowdown in rendering speed. + + Because of that, from Qt 5.9 onwards, \QWE accessibility support is disabled by default + on Linux. + It can be re-enabled by setting the \c QTWEBENGINE_ENABLE_LINUX_ACCESSIBILITY environment + variable to a non-empty value. + + \section1 Popups in Fullscreen Applications on Windows + Because of a limitation in the Windows compositor, applications that show a fullscreen web + engine view will not properly display popups or other top-level windows. The reason and + workaround for the issue can be found at \l {Fullscreen OpenGL Based Windows} and + \l {QWindowsWindowFunctions::setHasBorderInFullScreen}. + +*/ diff --git a/src/webenginequick/doc/src/qtwebengine-qmlmodule.qdoc b/src/webenginequick/doc/src/qtwebengine-qmlmodule.qdoc new file mode 100644 index 000000000..4fd7e3a3b --- /dev/null +++ b/src/webenginequick/doc/src/qtwebengine-qmlmodule.qdoc @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmlmodule QtWebEngine 1.10 + \title Qt WebEngine QML Types + \brief Provides QML types for rendering web content within a QML application. + \ingroup qtwebengine-modules + \ingroup qmlmodules + + The QML types can be imported into your application using the following import statements in + your .qml file: + + \qml + import QtWebEngine 1.10 + \endqml + + To link against the module, add the following QT variable to your qmake .pro + file: + + \badcode + QT += webengine + \endcode +*/ diff --git a/src/webenginequick/doc/src/quota_request.qdoc b/src/webenginequick/doc/src/quota_request.qdoc new file mode 100644 index 000000000..ee64c0484 --- /dev/null +++ b/src/webenginequick/doc/src/quota_request.qdoc @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype QuotaRequest + \instantiates QWebEngineQuotaRequest + \inqmlmodule QtWebEngine + \since QtWebEngine 1.7 + + \brief A utility type for the WebEngineView::quotaRequested() signal. + + \sa WebEngineView::quotaRequested() +*/ + +/*! + \qmlproperty url QuotaRequest::origin + \readonly + + The URL of the web page that issued the quota request. +*/ + +/*! + \qmlproperty qint64 QuotaRequest::requestedSize + \readonly + + Contains the size of the requested disk space in bytes. +*/ + +/*! + \qmlmethod void QuotaRequest::accept() + + Accepts the quota request. + + \qml + WebEngineView { + onQuotaRequested: function(request) { + if (request.requestedSize <= 5 * 1024 * 1024) + request.accept(); + else + request.reject(); + } + } + \endqml +*/ + +/*! + \qmlmethod void QuotaRequest::reject() + Rejects the quota request. +*/ + diff --git a/src/webenginequick/doc/src/qwebengine-licensing.qdoc b/src/webenginequick/doc/src/qwebengine-licensing.qdoc new file mode 100644 index 000000000..f6a0a6c32 --- /dev/null +++ b/src/webenginequick/doc/src/qwebengine-licensing.qdoc @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +\group qtwebengine-licensing +\title Qt WebEngine Licensing + +The Qt specific parts of the \QWE module are dual-licensed +under Commercial and GNU Lesser General Public License (LGPLv3). +In addition, the module contains code licensed under LGPLv2. + +The module includes a snapshot of Chromium. As such, users need to +respect the licenses of Chromium, and third-party code included in +Chromium. The arguably most restrictive license to be respected by +all users is LGPLv2.1. + +Third party licenses included in the sources are: +*/ + +/*! +\page qtwebengine-3rdparty-chromium-global.html attribution +\ingroup qtwebengine-licensing +\title Chromium License +\brief BSD + +The Google-authored portion of Chromium is released under a BSD license: + +\quotefile ../../../3rdparty/chromium/LICENSE +*/ diff --git a/src/webenginequick/doc/src/register_protocol_handler_request.qdoc b/src/webenginequick/doc/src/register_protocol_handler_request.qdoc new file mode 100644 index 000000000..b3ebcb31b --- /dev/null +++ b/src/webenginequick/doc/src/register_protocol_handler_request.qdoc @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype RegisterProtocolHandlerRequest + \instantiates QWebEngineRegisterProtocolHandlerRequest + \inqmlmodule QtWebEngine + \since QtWebEngine 1.7 + \brief The RegisterProtocolHandlerRequest type enables accepting + or rejecting requests from the \l registerProtocolHandler API. + + \sa WebEngineView::registerProtocolHandlerRequested() +*/ + +/*! + \qmlproperty url RegisterProtocolHandlerRequest::origin + \brief The URL template for the protocol handler. + + This is the second parameter from the \l registerProtocolHandler call. +*/ + +/*! + \qmlproperty string RegisterProtocolHandlerRequest::scheme + \brief The URL scheme for the protocol handler. + + This is the first parameter from the \l registerProtocolHandler call. +*/ + +/*! + \qmlmethod void RegisterProtocolHandlerRequest::accept() + \brief Accepts the request. + + Subsequent calls to accept() and reject() are ignored. +*/ + +/*! + \qmlmethod void RegisterProtocolHandlerRequest::reject() + \brief Accepts the request. + + Subsequent calls to accept() and reject() are ignored. +*/ + diff --git a/src/webenginequick/doc/src/webengine_certificate_error.qdoc b/src/webenginequick/doc/src/webengine_certificate_error.qdoc new file mode 100644 index 000000000..8c032dc8b --- /dev/null +++ b/src/webenginequick/doc/src/webengine_certificate_error.qdoc @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype WebEngineCertificateError + \instantiates QWebEngineCertificateError + \inqmlmodule QtWebEngine + \since QtWebEngine 1.1 + + \brief A utility type for ignoring certificate errors or rejecting erroneous certificates. + + This QML type contains information about a certificate error that occurred. The \l error + property holds the reason that the error occurred and the \l description property holds a + short localized description of the error. The \l url property holds the URL that triggered + the error. + + The certificate can be rejected by calling \l rejectCertificate, which will stop loading the + web engine request. By default, an invalid certificate will be automatically rejected. + + The certificate error can be ignored by calling \l ignoreCertificateError, which will + resume loading the request. + + It is possible to defer the decision of rejecting a certificate by calling \l defer, + which is useful when waiting for user input. + + \sa WebEngineView::certificateError +*/ +/*! + \qmlmethod void WebEngineCertificateError::defer() + + This function should be called when there is a need to postpone the decision whether to ignore a + certificate error, for example, while waiting for user input. When called, the function pauses the + URL request until WebEngineCertificateError::ignoreCertificateError() or + WebEngineCertificateError::rejectCertificate() is called. + */ +/*! + \qmlmethod void WebEngineCertificateError::ignoreCertificateError() + + The certificate error is ignored, and the web engine view continues to load the requested URL. + */ +/*! + \qmlmethod void WebEngineCertificateError::rejectCertificate() + + The certificate is rejected, and the web engine view stops loading the requested URL. + */ +/*! + \qmlproperty url WebEngineCertificateError::url + \readonly + + The URL that triggered the error. + */ +/*! + \qmlproperty enumeration WebEngineCertificateError::error + \readonly + + The type of the error. + + \value WebEngineCertificateError.SslPinnedKeyNotInCertificateChain + The certificate did not match the built-in public keys pinned for + the host name. + \value WebEngineCertificateError.CertificateCommonNameInvalid + The certificate's common name did not match the host name. + \value WebEngineCertificateError.CertificateDateInvalid + The certificate is not valid at the current date and time. + \value WebEngineCertificateError.CertificateAuthorityInvalid + The certificate is not signed by a trusted authority. + \value WebEngineCertificateError.CertificateContainsErrors + The certificate contains errors. + \value WebEngineCertificateError.CertificateNoRevocationMechanism + The certificate has no mechanism for determining if it has been + revoked. + \value WebEngineCertificateError.CertificateUnableToCheckRevocation + Revocation information for the certificate is not available. + \value WebEngineCertificateError.CertificateRevoked + The certificate has been revoked. + \value WebEngineCertificateError.CertificateInvalid + The certificate is invalid. + \value WebEngineCertificateError.CertificateWeakSignatureAlgorithm + The certificate is signed using a weak signature algorithm. + \value WebEngineCertificateError.CertificateNonUniqueName + The host name specified in the certificate is not unique. + \value WebEngineCertificateError.CertificateWeakKey + The certificate contains a weak key. + \value WebEngineCertificateError.CertificateNameConstraintViolation + The certificate claimed DNS names that are in violation of name + constraints. + \value WebEngineCertificateError.CertificateValidityTooLong + The certificate has a validity period that is too long. + (Added in 5.7) + \value WebEngineCertificateError.CertificateTransparencyRequired + Certificate Transparency was required for this connection, but the server + did not provide CT information that complied with the policy. (Added in 5.8) + \value WebEngineCertificateError.CertificateKnownInterceptionBlocked + The certificate is known to be used for interception by an entity other + the device owner. (Added in 5.15) + +*/ +/*! + \qmlproperty string WebEngineCertificateError::description + \readonly + + A short localized human-readable description of the error. +*/ +/*! + \qmlproperty bool WebEngineCertificateError::overridable + \readonly + + A boolean that indicates whether the certificate error can be overridden and ignored. +*/ diff --git a/src/webenginequick/doc/src/webengine_download_request.qdoc b/src/webenginequick/doc/src/webengine_download_request.qdoc new file mode 100644 index 000000000..2b96ec45b --- /dev/null +++ b/src/webenginequick/doc/src/webengine_download_request.qdoc @@ -0,0 +1,302 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \qmltype WebEngineDownloadRequest + \instantiates QWebEngineDownloadRequest + \inqmlmodule QtWebEngine + \brief Provides information about a download. + + WebEngineDownloadRequest models a download throughout its life cycle, starting + with a pending download request and finishing with a completed download. It + can be used, for example, to get information about new downloads, to monitor + progress, and to pause, resume, and cancel downloads. + + Downloads are usually triggered by user interaction on a web page. It is the + WebEngineProfile's responsibility to notify the application of new download + requests, which it does by emitting the + \l{WebEngineProfile::downloadRequested}{downloadRequested} signal together + with a newly created WebEngineDownloadRequest. The application can then examine + this item and decide whether to accept it or not. A signal handler must + explicitly call accept() on the item for \QWE to actually start + downloading and writing data to disk. If no signal handler calls accept(), + then the download request will be automatically rejected and nothing will be + written to disk. + + \note Some properties, like the \l path under which the file will be saved, + can only be changed before calling accept(). + + \section2 Object Life Cycle + + All items are guaranteed to be valid during the emission of the + \l{WebEngineProfile::downloadRequested}{downloadRequested} signal. If + accept() is \e not called by any signal handler, then the item will be + deleted \e immediately after signal emission. This means that the + application \b{must not} keep references to rejected download items. + + \section2 Web Page Downloads + + In addition to normal file downloads, which consist simply of retrieving + some raw bytes from the network and writing them to disk, \QWE also + supports saving complete web pages, which involves parsing the page's HTML, + downloading any dependent resources, and potentially packaging everything + into a special file format (\l savePageFormat). To check if a download is + for a file or a web page, use \l isSavePageDownload. + + \sa WebEngineProfile, WebEngineProfile::downloadRequested, + WebEngineProfile::downloadFinished +*/ + +/*! + \qmlmethod void WebEngineDownloadRequest::accept() + + Accepts the download request, which will start the download. + + If the item is in the \c DownloadRequested state, then it will transition + into the \c DownloadInProgress state and the downloading will begin. If the + item is in any other state, then nothing will happen. + + \sa state +*/ + +/*! + \qmlmethod void WebEngineDownloadRequest::cancel() + + Cancels the download. + + If the item is in the \c DownloadInProgress state, then it will transition + into the \c DownloadCancelled state, the downloading will stop, and + partially downloaded files will be deleted from disk. + + If the item is in the \c DownloadCompleted state, then nothing will happen. + If the item is in any other state, then it will transition into the \c + DownloadCancelled state without further effect. + + \sa state +*/ + +/*! + \qmlmethod void WebEngineDownloadRequest::pause() + + Pauses the download. + + Has no effect if the state is not \c DownloadInProgress. Does not change the + state. + + \sa resume, isPaused +*/ + +/*! + \qmlmethod void WebEngineDownloadRequest::resume() + + Resumes the download if it was paused or interrupted. + + Has no effect if the state is not \c DownloadInProgress or \c + DownloadInterrupted. Does not change the state. + + \sa pause, isPaused +*/ + +/*! + \qmlproperty int WebEngineDownloadRequest::id + + Holds the download item's ID. +*/ + +/*! + \qmlproperty enumeration WebEngineDownloadRequest::state + + Describes the state of the download: + + \value WebEngineDownloadRequest.DownloadRequested + Download has been requested, but it has not been accepted yet. + \value WebEngineDownloadRequest.DownloadInProgress + Download is in progress. + \value WebEngineDownloadRequest.DownloadCompleted + Download completed successfully. + \value WebEngineDownloadRequest.DownloadCancelled + Download was cancelled by the user. + \value WebEngineDownloadRequest.DownloadInterrupted + Download has been interrupted (by the server or because of lost connectivity). +*/ + +/*! + \qmlproperty int WebEngineDownloadRequest::totalBytes + + Holds the total amount of data to download in bytes. + + \c -1 means the total size is unknown. +*/ + +/*! + \qmlproperty int WebEngineDownloadRequest::receivedBytes + + Holds the amount of data in bytes that has been downloaded so far. +*/ + +/*! + \qmlproperty url WebEngineDownloadRequest::url + \readonly + + Returns the download's origin URL. +*/ + +/*! + \qmlproperty string WebEngineDownloadRequest::mimeType + + Holds the MIME type of the download. +*/ + +/*! + \qmlproperty string WebEngineDownloadRequest::downloadDirectory + + Holds the full target path without file name where data is being downloaded to. + + The download directory can only be set in the + \l{WebEngineProfile::downloadRequested}{downloadRequested} handler before + the download is accepted. + + \sa WebEngineProfile::downloadRequested(), accept() +*/ + +/*! + \qmlproperty string WebEngineDownloadRequest::downloadFileName + + Holds the name of the file to which data is being downloaded. + + The download file name can only be set in the + \l{WebEngineProfile::downloadRequested}{downloadRequested} handler before + the download is accepted. + + \sa WebEngineProfile::downloadRequested(), accept() +*/ + +/*! + \qmlproperty string WebEngineDownloadRequest::suggestedFileName + + Returns the suggested file name. +*/ + +/*! + \qmlproperty enumeration WebEngineDownloadRequest::savePageFormat + + Describes the format that is used to save a web page. + + \value WebEngineDownloadRequest.UnknownSaveFormat + This is not a request for downloading a complete web page. + \value WebEngineDownloadRequest.SingleHtmlSaveFormat + The page is saved as a single HTML page. Resources such as images + are not saved. + \value WebEngineDownloadRequest.CompleteHtmlSaveFormat + The page is saved as a complete HTML page, for example a directory + containing the single HTML page and the resources. + \value WebEngineDownloadRequest.MimeHtmlSaveFormat + The page is saved as a complete web page in the MIME HTML format. +*/ + +/*! + \qmlproperty bool WebEngineDownloadItem::isSavePageDownload + \readonly + + Whether this is a download request for saving a web page or a file. + + \sa savePageFormat +*/ + +/*! + \qmlproperty enumeration WebEngineDownloadRequest::interruptReason + \readonly + + Returns the reason why the download was interrupted: + + \value WebEngineDownloadRequest.NoReason Unknown reason or not interrupted. + \value WebEngineDownloadRequest.FileFailed General file operation failure. + \value WebEngineDownloadRequest.FileAccessDenied The file cannot be written locally, due to access restrictions. + \value WebEngineDownloadRequest.FileNoSpace Insufficient space on the target drive. + \value WebEngineDownloadRequest.FileNameTooLong The directory or file name is too long. + \value WebEngineDownloadRequest.FileTooLarge The file size exceeds the file system limitation. + \value WebEngineDownloadRequest.FileVirusInfected The file is infected with a virus. + \value WebEngineDownloadRequest.FileTransientError Temporary problem (for example the file is in use, + out of memory, or too many files are opened at once). + \value WebEngineDownloadRequest.FileBlocked The file was blocked due to local policy. + \value WebEngineDownloadRequest.FileSecurityCheckFailed An attempt to check the safety of the download + failed due to unexpected reasons. + \value WebEngineDownloadRequest.FileTooShort An attempt was made to seek past the end of a file when + opening a file (as part of resuming a previously interrupted download). + \value WebEngineDownloadRequest.FileHashMismatch The partial file did not match the expected hash. + + \value WebEngineDownloadRequest.NetworkFailed General network failure. + \value WebEngineDownloadRequest.NetworkTimeout The network operation has timed out. + \value WebEngineDownloadRequest.NetworkDisconnected The network connection has been terminated. + \value WebEngineDownloadRequest.NetworkServerDown The server has gone down. + \value WebEngineDownloadRequest.NetworkInvalidRequest The network request was invalid (for example, the + original or redirected URL is invalid, has an unsupported scheme, or is disallowed by policy). + + \value WebEngineDownloadRequest.ServerFailed General server failure. + \value WebEngineDownloadRequest.ServerBadContent The server does not have the requested data. + \value WebEngineDownloadRequest.ServerUnauthorized The server did not authorize access to the resource. + \value WebEngineDownloadRequest.ServerCertProblem A problem with the server certificate occurred. + \value WebEngineDownloadRequest.ServerForbidden Access forbidden by the server. + \value WebEngineDownloadRequest.ServerUnreachable Unexpected server response (might indicate that + the responding server may not be the intended server). + \value WebEngineDownloadRequest.UserCanceled The user canceled the download. + + \sa interruptReasonString +*/ + +/*! + \qmlproperty string WebEngineDownloadRequest::interruptReasonString + Returns a human-readable description of the reason for interrupting the download. + + \sa interruptReason +*/ + +/*! + \qmlproperty bool WebEngineDownloadRequest::isFinished + \readonly + + Whether this download is finished (completed, cancelled, or non-resumable interrupted state). + */ + +/*! + \qmlproperty bool WebEngineDownloadRequest::isPaused + \readonly + + Whether this download is paused. + + \sa pause, resume + */ + +/*! + \qmlproperty WebEngineView WebEngineDownloadRequest::view + \readonly + + Returns the view the download was requested on. If the download was not triggered by content in a view, + \c nullptr is returned. + + \sa WebEngineView +*/ diff --git a/src/webenginequick/doc/src/webengineview_lgpl.qdoc b/src/webenginequick/doc/src/webengineview_lgpl.qdoc new file mode 100644 index 000000000..2be475903 --- /dev/null +++ b/src/webenginequick/doc/src/webengineview_lgpl.qdoc @@ -0,0 +1,1498 @@ +/* + * Copyright (C) 2019 The Qt Company Ltd. + * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies) + * Copyright (c) 2012 Hewlett-Packard Development Company, L.P. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this program; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +// The documentation in this file was imported from QtWebKit and is thus constrained +// by its LGPL license. + +/*! + \qmltype WebEngineView + \instantiates QQuickWebEngineView + \inherits Item + \inqmlmodule QtWebEngine + \since QtWebEngine 1.0 + \brief A WebEngineView renders web content within a QML application. + + The WebEngineView type enables QML applications to render regions of dynamic web content. It + may share the screen with other QML types, such as a TabView, or fill the screen, as specified + within the QML application. + + \section2 Initializing Web Engine + + For the web engine view to be rendered, the web engine must be initialized by using + \l QtWebEngine::initialize in the application main source file, as illustrated by the + following code snippet: + + \quotefromfile webengine/minimal/main.cpp + \skipto main + \printuntil } + + \section2 Loading Web Pages + + An application can load pages into the WebEngineView, using either the \l url property or the + \l loadHtml method and navigate within the view's session history. The GET + method is always used to load URLs. + + The history is represented by a WebEngineHistory data model that is held by + the \l navigationHistory property. + + The following sample QML application loads a web page using the \c url property: + + \quotefromfile webengine/minimal/main.qml + \skipto import + \printuntil /^\}/ + + The \l loading property holds whether an HTML page is currently loading. + The \l loadingChanged() signal is emitted when loading the page begins, ends, or fails. + + The title of an HTML page can be accessed with the \l title property. Additionally, a web + page may specify an icon, which can be accessed using the \l icon property. The \l zoomFactor + property enables zooming the contents of the web page by a scale factor. + + If a certificate error is raised while loading a web page, the \l certificateError() signal is + emitted. Certificate errors are handled by using the methods of the WebEngineCertificateError + type. + + \section2 Interaction + + By default, links to different pages load within the same WebEngineView object, but web sites + may request them to be opened as a new tab, window, or dialog. The \l newViewRequested() signal + is emitted when a request to load the page in a separate web engine view is issued. The + NewViewDestination property describes how the new view should be opened. In addition, the + WebEngineNewViewRequest utility type can be used to load web pages in separate web engine views. + + The \l findText() method can be used to search for a string on a web page, using the options + described by \l FindFlags. + + The \l setActiveFocusOnPress() method can be used to create a UI element that should not get + focus on press. This can be useful in a hybrid UI. + + The \l {WebEngineSettings::focusOnNavigationEnabled} {focusOnNavigationEnabled} setting can be + used to make the view automatically receive focus when a navigation operation occurs + (like loading or reloading a page or navigating through history). + + The \l linkHovered() signal is emitted when a mouse pointer passes over a link and thus + corresponds to the \c{mouseover} DOM event. + + Actions, such as selecting and editing content, can be performed on a web page by using the + \l triggerWebAction() method. The available actions are described by the \l WebAction property. + + The \l backgroundColorChanged() signal is emitted when the web page background color changes. + + \section2 User Scripts + + During the loading of a page, so called \e {user scripts} can be injected in the JavaScript + engine at different points. The script objects attached to the web engine view are held by the + \l userScripts property and injected by using the WebEngineScript type. Scripts can also be run + by using the runJavaScript() method in the same world as other scripts that are part of the + loaded site. + + The \l webChannel property can be used to expose a WebChannel instance in the JavaScript context + of the page it is rendering as \c qt.webChannelTransport. + + \section2 Fullscreen Mode + + A web page can request through the JavaScript API to be loaded in fullscreen mode. The + \l fullScreenRequested() signal is emitted when the web page issues the request. The + FullScreenRequest utility type can be used to toggle fullscreen requests. The + \l fullScreenCancelled method can be used to notify the browser engine when the windowing + system forces the application to leave fullscreen mode. + + \section2 Profiles + + Web engine views can be isolated from each other by using the WebEngineProfile type. A profile + contains settings, scripts, and the list of visited links shared by all views that belong to the + profile. For example, a dedicated profile could be created for a \e {private browsing} mode. The + current profile for the view is held by the \l profile property and the current settings are + held by the \l settings property. The settings are specified by using the WebEngineSettings + type. + + \section2 Platform Features + + Web pages can request access to platform features, such as geolocation or audio and video + capture devices. The \l featurePermissionRequested() signal is emitted when a web page requests + to make use of a resource. The supported platform features are described by the \l Feature + property. If users grant the permission, the \l grantFeaturePermission() method is used to set + it to \e granted. + + \section2 Rendering to OpenGL Surface + + When using a QQuickRenderControl to render a Qt Quick user interface to an OpenGL surface, the + WebEngineView type is not rendered correctly. The web engine view attempts to use a global + OpenGL context created by \l QtWebEngine::initialize, but there is no public API for accessing + that context in order to share it with the \c QQuickRenderControl context. + + To have the web engine view rendered correctly, it is possible to manually create a new + offscreen context that is shared with the \c QQuickRenderControl and to call the non-public + function \c qt_gl_set_global_share_context(), rather than calling \c initialize(). + If \c initialize() is called after setting a global context, it will do nothing. +*/ + +/*! + \qmlmethod void WebEngineView::goBack() + + Go backward within the browser's session history, if possible. + This function is equivalent to the \c{window.history.back()} DOM method. + + \sa canGoBack +*/ + +/*! + \qmlmethod void WebEngineView::goForward() + + Go forward within the browser's session history, if possible. + This function is equivalent to the \c{window.history.forward()} DOM method. +*/ + +/*! + \qmlmethod void WebEngineView::goBackOrForward(int offset) + \since QtWebEngine 1.1 + + If \a offset is positive, goes forward the specified number of offset + pages in the current session history. If offset is negative, it goes + back. If the offset is invalid, the page is not changed. + + \sa goBack(), goForward() +*/ + +/*! + \qmlmethod void WebEngineView::stop() + + Stops loading the current page. +*/ + +/*! + \qmlmethod void WebEngineView::reload() + + Reloads the current page. This function is equivalent to the + \c{window.location.reload()} DOM method. + + \sa reloadAndBypassCache() +*/ + +/*! + \qmlmethod void WebEngineView::reloadAndBypassCache() + \since QtWebEngine 1.1 + + Reloads the current page, ignoring any cached content. + + \sa reload() +*/ + +/*! + \qmlproperty url WebEngineView::url + + The location of the currently displayed HTML page. This writable + property offers the main interface to load a page into a web view. + It functions the same as the \c{window.location} DOM property. + + \sa loadHtml() +*/ + +/*! + \qmlproperty url WebEngineView::icon + \readonly + + An internal URL for accessing the currently displayed web site icon, + also known as favicon or shortcut icon. The icon is already downloaded + and stored by the \QWE's favicon manager. + This read-only URL corresponds to the image used within a mobile browser + application to represent a bookmarked page on the device's home screen. + + The following snippet uses the \c{icon} property to build an \c{Image} + component: + + \qml + Image { + id: appIcon + sourceSize: Qt.size(32, 32) + source: webView.icon != "" ? webView.icon : "fallbackFavicon.png"; + // ... + } + \endqml + + Specifying the \c{sourceSize} property of the \c{Image} element informs + the \QWE's favicon provider about the requested size. The + favicon provider tries to find the best fit among the web page candidate + icons. If \c{sourceSize} property is not specified, the provider provides + the icon with the largest resolution. +*/ + +/*! + \qmlproperty int WebEngineView::loadProgress + \readonly + + The amount of data from the page that has been loaded, expressed + as an integer percentage in the range from \c{0} to \c{100}. +*/ + +/*! + \qmlproperty bool WebEngineView::canGoBack + \readonly + + Returns \c{true} if there are prior session history entries, \c{false} + otherwise. +*/ + +/*! + \qmlproperty bool WebEngineView::canGoForward + \readonly + + Returns \c{true} if there are subsequent session history entries, + \c{false} otherwise. +*/ + +/*! + \qmlproperty bool WebEngineView::loading + \readonly + + Returns \c{true} if the HTML page is currently loading, \c{false} otherwise. +*/ + +/*! + \qmlproperty string WebEngineView::title + \readonly + + The title of the currently displayed HTML page. This is a + read-only value that reflects the contents of the \c{<title>} tag. +*/ + +/*! + \qmlproperty bool WebEngineView::isFullScreen + \since QtWebEngine 1.1 + \readonly + + Returns \c{true} if the web view is in fullscreen mode, \c{false} otherwise. + + \sa fullScreenRequested(), fullScreenCancelled() +*/ + +/*! + \qmlproperty WebEngineHistory WebEngineView::navigationHistory + \since QtWebEngine 1.1 + \readonly + + The navigation history of the current view. + + \sa WebEngineHistory +*/ + +/*! + \qmlproperty QQmlWebChannel WebEngineView::webChannel + \since QtWebEngine 1.1 + + The web channel instance used by this view. + This channel is automatically using the internal QtWebEngine transport mechanism over Chromium IPC, + and exposed in the javascript context of the page it is rendering as \c qt.webChannelTransport. + This transport object is used when instantiating the JavaScript counterpart of QWebChannel using + the \l{Qt WebChannel JavaScript API}. + + \note The view does not take ownership for an assigned webChannel object. +*/ + +/*! + \qmlproperty WebEngineProfile WebEngineView::profile + \since QtWebEngine 1.1 + + The current profile used for the view. + + \sa WebEngineProfile +*/ + +/*! + \qmlproperty WebEngineSettings WebEngineView::settings + \readonly + \since QtWebEngine 1.1 + + Settings used by this view. + + \sa WebEngineSettings +*/ + + +/*! + \qmlproperty list<WebEngineScript> WebEngineView::userScripts + \readonly + \since QtWebEngine 1.1 + + List of script objects attached to the view. + + \sa WebEngineScript +*/ + +/*! + \qmlproperty real WebEngineView::zoomFactor + \since QtWebEngine 1.1 + + Zoom factor for the view. Valid values are within the range from \c{0.25} + to \c{5.0}. The default factor is \c{1.0}. +*/ + +/*! + \qmlproperty size WebEngineView::contentsSize + \since QtWebEngine 1.3 + + Size of the page contents. +*/ + +/*! + \qmlproperty point WebEngineView::scrollPosition + \since QtWebEngine 1.3 + + Scroll position of the page contents. +*/ + +/*! + \qmlproperty int WebEngineView::webChannelWorld + \since QtWebEngine 1.3 + + JavaScript world that the web channel instance used by this view is + installed in. The world must be a number between \c 0 and \c 256. +*/ + +/*! + \qmlmethod void WebEngineView::loadHtml(string html, url baseUrl) + Loads the specified \a html as the content of the web view. + + This method offers a lower-level alternative to the \c{url} property, + which references HTML pages via URL. + + External objects, such as stylesheets or images referenced in the HTML + document, should be located relative to \a baseUrl. For external objects to + be loaded, \c baseUrl cannot be empty. For example, if \a html + is retrieved from \c http://www.example.com/documents/overview.html, which + is the base URL, then an image referenced with the relative URL, \c diagram.png, + should be at \c{http://www.example.com/documents/diagram.png}. + + \sa url +*/ + +/*! + \qmlmethod void WebEngineView::runJavaScript(string script, variant callback) + Runs the specified \a script in the content of the web view. + + The \a callback parameter is optional. If a callback function is provided, + it will be invoked after the script finishes running. + + \code + runJavaScript("document.title", function(result) { console.log(result); }); + \endcode + + Only plain data can be returned from JavaScript as the result value. + Supported data types include all of the JSON data types as well as, for + example, \c{Date} and \c{ArrayBuffer}. Unsupported data types include, for + example, \c{Function} and \c{Promise}. + + The script will run in the same \e world as other scripts that are + part of the loaded site. + + \warning Do not execute lengthy routines in the callback function, because it might block the + rendering of the web content. + + For more information about injecting scripts, see \l {Script Injection}. + For an alternative way to inject scripts, see WebEngineView::userScripts. +*/ + +/*! + \qmlmethod void WebEngineView::findText(string subString) + \since QtWebEngine 1.1 + Finds the specified string, \a subString, in the page. + The findTextFinished() signal is emitted when a string search is completed. + + To clear the search highlight, just pass an empty string. + + \sa findTextFinished() +*/ + +/*! + \qmlmethod void WebEngineView::findText(string subString, FindFlags options) + \since QtWebEngine 1.1 + Finds the specified string, \a subString, in the page, using the given \a options. + The findTextFinished() signal is emitted when a string search is completed. + + To clear the search highlight, just pass an empty string. + + \code + findText("Qt", WebEngineView.FindBackward | WebEngineView.FindCaseSensitively); + \endcode + + \sa findTextFinished() +*/ + +/*! + \qmlmethod void WebEngineView::findText(string subString, FindFlags options, variant resultCallback) + \since QtWebEngine 1.1 + Finds the specified string, \a subString, in the page, using the given \a options. + The findTextFinished() signal is emitted when a string search is completed. + + To clear the search highlight, just pass an empty string. + + The \a resultCallback must take an integer parameter. It will be called with + the number of found occurrences of the \a subString. + + \code + findText("Qt", WebEngineView.FindCaseSensitively, function(matchCount) { + if (matchCount > 0) + console.log("'Qt' tokens found:", matchCount); + }); + \endcode + + \sa findTextFinished() +*/ + +/*! + \qmlmethod void WebEngineView::grantFeaturePermission(url securityOrigin, Feature feature, bool granted) + \since QtWebEngine 1.1 + + Sets or unsets the permission, depending on \a granted, for the web site + identified by \a securityOrigin to use \a feature. + + \sa featurePermissionRequested() +*/ + + +/*! + \qmlmethod void WebEngineView::fullScreenCancelled() + \since QtWebEngine 1.1 + + Immediately sets \c{isFullScreen} property to \c{false}. It can be used to notify the + browser engine when the windowing system forces the application to leave fullscreen mode. + + \qml + ApplicationWindow { + onVisibilityChanged: { + if (webEngineView.isFullScreen && visibility != Window.FullScreen) + webEngineView.fullScreenCancelled() + } + + WebEngineView { + id: webEngineView + // ... + } + } + \endqml + + \sa isFullScreen, fullScreenRequested() +*/ + +/*! + \qmlmethod void WebEngineView::setActiveFocusOnPress(bool arg) + \since QtWebEngine 1.2 + + Sets active focus to a clicked web engine view if \a arg is \c true. By setting it to \c false, + a web engine view can be used to create a UI element that should not get focus. This can be + useful in a hybrid UI. + + \sa activeFocusOnPress, activeFocusOnPressChanged, + WebEngineSettings::focusOnNavigationEnabled +*/ + +/*! + \qmlmethod void WebEngineView::triggerWebAction(WebAction action) + \since QtWebEngine 1.2 + + Triggers the web action \a action. + + \sa WebAction +*/ + +/*! + \qmlsignal WebEngineView::featurePermissionRequested(url securityOrigin, Feature feature) + \since QtWebEngine 1.1 + + This signal is emitted when the web site identified by \a securityOrigin requests + to make use of the resource or device identified by \a feature. + + \sa grantFeaturePermission() +*/ + +/*! + \qmlsignal WebEngineView::loadingChanged(WebEngineLoadRequest loadRequest) + + This signal is emitted when a page load begins, ends, or fails. + + When handling the signal with \c onLoadingChanged, various read-only + parameters are available on the WebEngineLoadRequest specified by + \a loadRequest. + + \sa loading, LoadStatus, ErrorDomain +*/ + +/*! + \qmlsignal WebEngineView::certificateError(WebEngineCertificateError error) + \since QtWebEngine 1.1 + + This signal is emitted when an invalid certificate error, \a error, is + raised while loading a given request. + + The certificate error can be handled by using the methods of the WebEngineCertificateError + type. +*/ + +/*! + \qmlsignal WebEngineView::linkHovered(url hoveredUrl) + + Within a mouse-driven interface, this signal is emitted when a mouse + pointer passes over a link, corresponding to the \c{mouseover} DOM + event. This event may also occur in touch interfaces for \c{mouseover} + events that are not cancelled with \c{preventDefault()}. \a{hoveredUrl} + provides the link's location. +*/ + +/*! + \qmlsignal WebEngineView::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, string message, int lineNumber, string sourceID) + This signal is emitted when a JavaScript program tries to print a \a message to the web browser's console. + + For example, in case of evaluation errors the source URL may be provided in \a sourceID as well + as the \a lineNumber. + + \a level indicates the severity of the event that triggered the message, that is, whether it + was triggered by an error or a less severe event. + + If no handler is specified, the view will log the messages into a \c js + \l{QLoggingCategory}{logging category}. + + \sa{Console Logging} +*/ + +/*! + \qmlsignal WebEngineView::newViewRequested(WebEngineNewViewRequest request) + \since QtWebEngine 1.1 + + This signal is emitted when \a request is issued to load a page in a separate + web engine view. This can either be because the current page requested it explicitly + through a JavaScript call to \c window.open, or because the user clicked on a link + while holding Shift, Ctrl, or a built-in combination that triggers the page to open + in a new window. + + If this signal is not handled, the requested load will fail. + + An example implementation: + + \snippet snippets/qtwebengine_webengineview_newviewrequested.qml 0 + + \sa NewViewDestination, {WebEngine Quick Nano Browser} +*/ + +/*! + \qmlsignal WebEngineView::fullScreenRequested(FullScreenRequest request) + \since QtWebEngine 1.1 + + This signal is emitted when the web page issues the \a request for + fullscreen mode through the JavaScript API. + + \sa isFullScreen +*/ + +/*! + \qmlsignal WebEngineView::activeFocusOnPressChanged(bool activeFocusOnPress) + \since QtWebEngine 1.2 + + This signal is emitted when the value of \a activeFocusOnPress changes. + It specifies whether the view should gain active focus when pressed. + + \sa activeFocusOnPress, setActiveFocusOnPress() +*/ + +/*! + \qmlsignal WebEngineView::backgroundColorChanged() + \since QtWebEngine 1.2 + + This signal is emitted when the web engine view background color changes. +*/ + +/*! + \qmlsignal WebEngineView::renderProcessTerminated(RenderProcessTerminationStatus terminationStatus, int exitCode) + + \since QtWebEngine 1.2 + + This signal is emitted when the render process is terminated with a non-zero exit status. + \a terminationStatus is the termination status of the process and \a exitCode is the status code + with which the process terminated. + + \sa RenderProcessTerminationStatus +*/ + +/*! + \qmlsignal WebEngineView::windowCloseRequested() + \since QtWebEngine 1.2 + + This signal is emitted whenever the page requests the web browser window to be closed, + for example through the JavaScript \c{window.close()} call. +*/ + +/*! + \qmlproperty enumeration WebEngineView::ErrorDomain + + Describes various high-level error types: + + \value WebEngineView.NoErrorDomain + \value WebEngineView.InternalErrorDomain + Content fails to be interpreted by \QWE. + \value WebEngineView.ConnectionErrorDomain + Error results from faulty network connection. + \value WebEngineView.CertificateErrorDomain + Error related to the SSL/TLS certificate. + \value WebEngineView.HttpErrorDomain + Error related to the HTTP connection. + \value WebEngineView.FtpErrorDomain + Error related to the FTP connection. + \value WebEngineView.DnsErrorDomain + Error related to the DNS connection. +*/ + +/*! + \qmlproperty enumeration WebEngineView::JavaScriptConsoleMessageLevel + + Indicates the severity of a JavaScript console message: + + \value WebEngineView.InfoMessageLevel + Message is purely informative and can safely be ignored. + \value WebEngineView.WarningMessageLevel + Message indicates there might be a problem that may need attention. + \value WebEngineView.ErrorMessageLevel + Message indicates there has been an error. +*/ + +/*! + \qmlproperty enumeration WebEngineView::LoadStatus + + Reflects a page's load status: + + \value WebEngineView.LoadStartedStatus + Page is currently loading. + \value WebEngineView.LoadStoppedStatus + Loading the page was stopped by the stop() method or by the loader + code or network stack in Chromium. + \value WebEngineView.LoadSucceededStatus + Page has successfully loaded, and is not currently loading. + \value WebEngineView.LoadFailedStatus + Page has failed to load, and is not currently loading. +*/ + +/*! + \qmlproperty enumeration WebEngineView::NewViewDestination + + Describes how to open a new view: + + \value WebEngineView.NewViewInWindow + In a separate Window. + \value WebEngineView.NewViewInTab + In a tab of the same window. + \value WebEngineView.NewViewInDialog + In a Window without a tab bar, toolbar, or URL bar. + \value WebEngineView.NewViewInBackgroundTab + In a tab of the same window, without hiding the currently visible web engine view. + + \sa {WebEngineNewViewRequest::destination}{WebEngineNewViewRequest.destination} +*/ + +/*! + \qmlproperty enumeration WebEngineView::FindFlags + + Describes the options available to the findText() function. The options + can be OR-ed together from the following list: + + \value WebEngineView.FindBackward + Searches backwards instead of forwards. + \value WebEngineView.FindFlags FindCaseSensitively + By default findText() works case insensitive. Specifying + this option changes the behavior to a case sensitive find operation. + + \sa findText() +*/ + +/*! + \qmlproperty enumeration WebEngineView::RenderProcessTerminationStatus + \since QtWebEngine 1.2 + + Describes the status with which the render process terminated: + + \value WebEngineView.NormalTerminationStatus + The render process terminated normally. + \value WebEngineView.AbnormalTerminationStatus + The render process terminated with a non-zero exit status. + \value WebEngineView.CrashedTerminationStatus + The render process crashed, for example because of a segmentation fault. + \value WebEngineView.KilledTerminationStatus + The render process was killed, for example by \c SIGKILL or task manager kill. +*/ + +/*! + \qmlproperty enumeration WebEngineView::WebAction + \since QtWebEngine 1.2 + + Describes the types of action that can be performed on a web page: + + \value WebEngineView.NoWebAction + No action is triggered. + \value WebEngineView.Back + Navigate back in the history of navigated links. + \value WebEngineView.Forward + Navigate forward in the history of navigated links. + \value WebEngineView.Stop + Stop loading the current page. + \value WebEngineView.Reload + Reload the current page. + \value WebEngineView.ReloadAndBypassCache + Reload the current page, but do not use any local cache. + \value WebEngineView.Cut + Cut the content currently selected into the clipboard. + \value WebEngineView.Copy + Copy the content currently selected into the clipboard. + \value WebEngineView.Paste + Paste content from the clipboard. + \value WebEngineView.Undo + Undo the last editing action. + \value WebEngineView.Redo + Redo the last editing action. + \value WebEngineView.SelectAll + Select all content. + This action is only enabled when the page's content is focused. + The focus can be forced by the JavaScript \c{window.focus()} call, or the + \l{WebEngineSettings::focusOnNavigationEnabled} {focusOnNavigationEnabled} setting + should be enabled to get automatic focus. + \value WebEngineView.PasteAndMatchStyle + Paste content from the clipboard with current style. + \value WebEngineView.OpenLinkInThisWindow + Open the current link in the current window. (Added in Qt 5.6) + \value WebEngineView.OpenLinkInNewWindow + Open the current link in a new window. Requires a handler for the + \l newViewRequested() signal. (Added in Qt 5.6) + \value WebEngineView.OpenLinkInNewTab + Open the current link in a new tab. Requires a handler for the + \l newViewRequested() signal. (Added in Qt 5.6) + \value WebEngineView.CopyLinkToClipboard + Copy the current link to the clipboard. (Added in Qt 5.6) + \value WebEngineView.CopyImageToClipboard + Copy the clicked image to the clipboard. (Added in Qt 5.6) + \value WebEngineView.CopyImageUrlToClipboard + Copy the clicked image's URL to the clipboard. (Added in Qt 5.6) + \value WebEngineView.CopyMediaUrlToClipboard + Copy the hovered audio or video's URL to the clipboard. (Added in Qt 5.6) + \value WebEngineView.ToggleMediaControls + Toggle between showing and hiding the controls for the hovered audio or video element. + (Added in Qt 5.6) + \value WebEngineView.ToggleMediaLoop + Toggle whether the hovered audio or video should loop on completetion or not. + (Added in Qt 5.6) + \value WebEngineView.ToggleMediaPlayPause + Toggle the play/pause state of the hovered audio or video element. (Added in Qt 5.6) + \value WebEngineView.ToggleMediaMute + Mute or unmute the hovered audio or video element. (Added in Qt 5.6) + \value WebEngineView.DownloadLinkToDisk + Download the current link to the disk. To implement download + actions, connect to the \l {QQuickWebEngineProfile::downloadRequested} + {WebEngineProfile.downloadRequested} signal. (Added in Qt 5.6) + \value WebEngineView.DownloadImageToDisk + Download the highlighted image to the disk. (Added in Qt 5.6) + \value WebEngineView.DownloadMediaToDisk + Download the hovered audio or video to the disk. (Added in Qt 5.6) + \value WebEngineView.InspectElement + Trigger any attached Web Inspector to inspect the highlighed element. + (Added in Qt 5.6) + \value WebEngineView.ExitFullScreen + Exit the fullscreen mode. (Added in Qt 5.6) + \value WebEngineView.SavePage + Save the current web page to disk. (Added in Qt 5.7) + \value WebEngineView.ViewSource + Show the source of the current page in a new tab. Requires a handler for the + \l newViewRequested() signal. (Added in Qt 5.8) + + \value WebEngineView.ToggleBold + Toggles boldness for the selection or at the cursor position. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.ToggleItalic + Toggles italics for the selection or at the cursor position. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.ToggleUnderline + Toggles underlining of the selection or at the cursor position. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.ToggleStrikethrough + Toggles striking through the selection or at the cursor position. + Requires \c contenteditable="true". (Added in Qt 5.10) + + \value WebEngineView.AlignLeft + Aligns the lines containing the selection or the cursor to the left. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.AlignCenter + Aligns the lines containing the selection or the cursor at the center. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.AlignRight + Aligns the lines containing the selection or the cursor to the right. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.AlignJustified + Stretches the lines containing the selection or the cursor so that each + line has equal width. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.Indent + Indents the lines containing the selection or the cursor. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.Outdent + Outdents the lines containing the selection or the cursor. + Requires \c contenteditable="true". (Added in Qt 5.10) + + \value WebEngineView.InsertOrderedList + Inserts an ordered list at the current cursor position, deleting the current selection. + Requires \c contenteditable="true". (Added in Qt 5.10) + \value WebEngineView.InsertUnorderedList + Inserts an unordered list at the current cursor position, + deleting the current selection. + Requires \c contenteditable="true". (Added in Qt 5.10) + \omitvalue WebActionCount +*/ + +/*! + \qmlproperty enumeration WebEngineView::Feature + + Describes the platform feature access categories that the user may be asked to grant or deny + access to: + + \value WebEngineView.Geolocation + Location hardware or service. + \value WebEngineView.MediaAudioCapture + Audio capture devices, such as microphones. + \value WebEngineView.MediaVideoCapture + Video devices, such as cameras. + \value WebEngineView.MediaAudioVideoCapture + Both audio and video capture devices. + \value DesktopVideoCapture + Video output capture, that is, the capture of the user's display. + (Added in Qt 5.10) + \value DesktopAudioVideoCapture + Both audio and video output capture. (Added in Qt 5.10) + \value WebEnginView.Notifications + Web notifications for the end-user. + + \sa featurePermissionRequested(), grantFeaturePermission() +*/ + +/*! + \qmlproperty enumeration WebEngineView::PrintedPageSizeId + \since QtWebEngine 1.3 + + This enum type lists the available page sizes as defined in the Postscript + PPD standard. + + The enumeration values are mapped from and must match QPageSize::PageSizeId. They are also + duplicated in QPagedPaintDevice and QPrinter. + + The defined sizes are: + + \value WebEngineView.A0 841 x 1189 mm + \value WebEngineView.A1 594 x 841 mm + \value WebEngineView.A2 420 x 594 mm + \value WebEngineView.A3 297 x 420 mm + \value WebEngineView.A4 210 x 297 mm, 8.26 x 11.69 inches + \value WebEngineView.A5 148 x 210 mm + \value WebEngineView.A6 105 x 148 mm + \value WebEngineView.A7 74 x 105 mm + \value WebEngineView.A8 52 x 74 mm + \value WebEngineView.A9 37 x 52 mm + \value WebEngineView.B0 1000 x 1414 mm + \value WebEngineView.B1 707 x 1000 mm + \value WebEngineView.B2 500 x 707 mm + \value WebEngineView.B3 353 x 500 mm + \value WebEngineView.B4 250 x 353 mm + \value WebEngineView.B5 176 x 250 mm, 6.93 x 9.84 inches + \value WebEngineView.B6 125 x 176 mm + \value WebEngineView.B7 88 x 125 mm + \value WebEngineView.B8 62 x 88 mm + \value WebEngineView.B9 44 x 62 mm + \value WebEngineView.B10 31 x 44 mm + \value WebEngineView.C5E 163 x 229 mm + \value WebEngineView.Comm10E 105 x 241 mm, U.S. Common 10 Envelope + \value WebEngineView.DLE 110 x 220 mm + \value WebEngineView.Executive 7.5 x 10 inches, 190.5 x 254 mm + \value WebEngineView.Folio 210 x 330 mm + \value WebEngineView.Ledger 431.8 x 279.4 mm + \value WebEngineView.Legal 8.5 x 14 inches, 215.9 x 355.6 mm + \value WebEngineView.Letter 8.5 x 11 inches, 215.9 x 279.4 mm + \value WebEngineView.Tabloid 279.4 x 431.8 mm + \value WebEngineView.Custom Unknown, or a user defined size. + \value WebEngineView.A10 + \value WebEngineView.A3Extra + \value WebEngineView.A4Extra + \value WebEngineView.A4Plus + \value WebEngineView.A4Small + \value WebEngineView.A5Extra + \value WebEngineView.B5Extra + \value WebEngineView.JisB0 + \value WebEngineView.JisB1 + \value WebEngineView.JisB2 + \value WebEngineView.JisB3 + \value WebEngineView.JisB4 + \value WebEngineView.JisB5 + \value WebEngineView.JisB6 + \value WebEngineView.JisB7 + \value WebEngineView.JisB8 + \value WebEngineView.JisB9 + \value WebEngineView.JisB10 + \value WebEngineView.AnsiA = \c Letter + \value WebEngineView.AnsiB = \c Ledger + \value WebEngineView.AnsiC + \value WebEngineView.AnsiD + \value WebEngineView.AnsiE + \value WebEngineView.LegalExtra + \value WebEngineView.LetterExtra + \value WebEngineView.LetterPlus + \value WebEngineView.LetterSmall + \value WebEngineView.TabloidExtra + \value WebEngineView.ArchA + \value WebEngineView.ArchB + \value WebEngineView.ArchC + \value WebEngineView.ArchD + \value WebEngineView.ArchE + \value WebEngineView.Imperial7x9 + \value WebEngineView.Imperial8x10 + \value WebEngineView.Imperial9x11 + \value WebEngineView.Imperial9x12 + \value WebEngineView.Imperial10x11 + \value WebEngineView.Imperial10x13 + \value WebEngineView.Imperial10x14 + \value WebEngineView.Imperial12x11 + \value WebEngineView.Imperial15x11 + \value WebEngineView.ExecutiveStandard + \value WebEngineView.Note + \value WebEngineView.Quarto + \value WebEngineView.Statement + \value WebEngineView.SuperA + \value WebEngineView.SuperB + \value WebEngineView.Postcard + \value WebEngineView.DoublePostcard + \value WebEngineView.Prc16K + \value WebEngineView.Prc32K + \value WebEngineView.Prc32KBig + \value WebEngineView.FanFoldUS + \value WebEngineView.FanFoldGerman + \value WebEngineView.FanFoldGermanLegal + \value WebEngineView.EnvelopeB4 + \value WebEngineView.EnvelopeB5 + \value WebEngineView.EnvelopeB6 + \value WebEngineView.EnvelopeC0 + \value WebEngineView.EnvelopeC1 + \value WebEngineView.EnvelopeC2 + \value WebEngineView.EnvelopeC3 + \value WebEngineView.EnvelopeC4 + \value WebEngineView.EnvelopeC5 = \c C5E + \value WebEngineView.EnvelopeC6 + \value WebEngineView.EnvelopeC65 + \value WebEngineView.EnvelopeC7 + \value WebEngineView.EnvelopeDL = \c DLE + \value WebEngineView.Envelope9 + \value WebEngineView.Envelope10 = \c Comm10E + \value WebEngineView.Envelope11 + \value WebEngineView.Envelope12 + \value WebEngineView.Envelope14 + \value WebEngineView.EnvelopeMonarch + \value WebEngineView.EnvelopePersonal + \value WebEngineView.EnvelopeChou3 + \value WebEngineView.EnvelopeChou4 + \value WebEngineView.EnvelopeInvite + \value WebEngineView.EnvelopeItalian + \value WebEngineView.EnvelopeKaku2 + \value WebEngineView.EnvelopeKaku3 + \value WebEngineView.EnvelopePrc1 + \value WebEngineView.EnvelopePrc2 + \value WebEngineView.EnvelopePrc3 + \value WebEngineView.EnvelopePrc4 + \value WebEngineView.EnvelopePrc5 + \value WebEngineView.EnvelopePrc6 + \value WebEngineView.EnvelopePrc7 + \value WebEngineView.EnvelopePrc8 + \value WebEngineView.EnvelopePrc9 + \value WebEngineView.EnvelopePrc10 + \value WebEngineView.EnvelopeYou4 + \value WebEngineView.LastPageSize = \c EnvelopeYou4 + \omitvalue NPageSize + \omitvalue NPaperSize + + \sa WebEngineView::printToPdf() +*/ + +/*! + \qmlproperty enumeration WebEngineView::PrintedPageOrientation + \since QtWebEngine 1.3 + + Describes the orientation of a PDF document that gets created from the WebEngineView's contents. + The enumeration values are mapped from and must match QPageLayout::Orientation. + + \value WebEngineView.Portrait + The document will be created using portrait orientation. + + \value WebEngineView.Landscape + The document will be created using landscape orientation. + + \sa WebEngineView::printToPdf() +*/ + +/*! + \qmlproperty bool WebEngineView::activeFocusOnPress + \since QtWebEngine 1.2 + + Specifies whether the view should gain active focus when pressed. + The default value is \c true. +*/ + +/*! + \qmlproperty bool WebEngineView::backgroundColor + \since QtWebEngine 1.2 + + Changes the color of the WebEngineView's background, behind the document's + body. Can be set to \c "transparent" or to a translucent color to see + through the document or to match the web content in a hybrid app to prevent + the white flashes that may appear during loading. + + The default value is white. +*/ + +/*! + \qmlproperty bool WebEngineView::audioMuted + \brief The state of whether the current page audio is muted. + \since QtWebEngine 1.3 + \sa recentlyAudible +*/ + +/*! + \qmlsignal WebEngineView::audioMutedChanged(bool muted) + \since QtWebEngine 1.3 + + This signal is emitted when the value of \a muted changes. The value is + specified using the \l audioMuted property. + \note Not to be confused with a specific HTML5 audio / video element being muted. + + \sa audioMuted, recentlyAudibleChanged +*/ + +/*! + \qmlproperty bool WebEngineView::recentlyAudible + \brief Returns the current page's audible state (audio was recently played, or not). + \since QtWebEngine 1.3 + \readonly + \sa audioMuted, recentlyAudibleChanged +*/ + +/*! + \qmlsignal WebEngineView::recentlyAudibleChanged(bool recentlyAudible) + \since QtWebEngine 1.3 + + This signal is emitted when the page's audible state, specified by + \a recentlyAudible, is changed, due to audio being played or stopped. + + \note The signal is also emitted when the \l audioMuted property changes. + Also if the audio is paused, this signal is emitted with an approximate \b{two-second + delay}, from the moment the audio is paused. + + This signal is also emitted for Flash plugin audio. + + If a web page contains two videos that are started in sequence, this signal + gets emitted only once, for the first video to generate sound. After both + videos are stopped, the signal is emitted upon the last sound generated. + This means that the signal is emitted both when any kind of sound is + generated and when everything is completely silent within a web page, + regardless of the number of audio streams. + + Spurious signal emissions might also happen. For example, when sound is + stopped, this signal gets emitted first with a value of \c true, and then + with a value of \c false. Further, when audio starts playing, the signal is + emitted twice with a value of \c true. + + \sa recentlyAudible +*/ + +/*! + \qmlsignal WebEngineView::pdfPrintingFinished(string filePath, bool success) + \since QtWebEngine 1.5 + + This signal is emitted when printing the web page into a PDF file has + finished. + \a filePath will contain the path the file was requested to be created + at, and \a success will be \c true if the file was successfully created and + \c false otherwise. + + \sa printToPdf() +*/ + +/*! + \qmlmethod void WebEngineView::printToPdf(const string filePath, PrintedPageSizeId pageSizeId, PrintedPageOrientation orientation) + \since QtWebEngine 1.3 + + Prints the WebEngineView's current content to a PDF document and stores it + under \a filePath. The document's size will be determined by the value of + \a pageSizeId and its orientation will be determined using \a orientation. + + This method issues an asynchronous request for printing the web page into a + PDF and returns immediately. To be informed about the result of the + request, connect to the signal pdfPrintingFinished(). + + If you leave out \a pageSizeId, it defaults to \c A4. If you leave out + \a orientation, it defaults to \c Portrait. + + \sa pdfPrintingFinished() +*/ + +/*! + \qmlmethod void WebEngineView::printToPdf(variant resultCallback, PrintedPageSizeId pageSizeId, PrintedPageOrientation orientation) + \since QtWebEngine 1.3 + + Prints the WebEngineView's current content to a PDF document and returns it in a byte array. The document's size will be determined + by the value of \a pageSizeId and its orientation will be determined using \a orientation. + + The \a resultCallback must take a string parameter. This string will contain the document's data upon successful printing and an empty + string otherwise. + + If you leave out \a pageSizeId, it defaults to \c A4. If you leave out + \a orientation, it defaults to \c Portrait. +*/ + +/*! + \qmlmethod void WebEngineView::replaceMisspelledWord(const QString &replacement) + \since QtWebEngine 1.3 + + Replace the current misspelled word with \a replacement. +*/ + +/*! + \qmlsignal WebEngineView::wasRecentlyAudibleChanged(bool wasRecentlyAudible) + \since QtWebEngine 1.3 + + This signal is emitted when the page's audible state, specified by + \a wasRecentlyAudible, is changed, due to audio being played or stopped. + + \note The signal is also emitted when calling the setAudioMuted method. + Also if the audio is paused, this signal is emitted with an approximate \b{2 second + delay}, from the moment the audio is paused. +*/ + +/*! + \qmlsignal WebEngineView::authenticationDialogRequested(AuthenticationDialogRequest request) + \since QtWebEngine 1.4 + + This signal is emitted when an authentication dialog is requested. + + The \a request can be handled by using the methods of the AuthenticationDialogRequest + type. + + \note Signal handlers need to call \c{request.accepted = true} to prevent a + default dialog from showing up. Make sure to call either + AuthenticationDialogRequest::dialogAccept() or AuthenticationDialogRequest::dialogReject() + afterwards. +*/ + +/*! + \qmlsignal WebEngineView::javaScriptDialogRequested(JavaScriptDialogRequest request) + \since QtWebEngine 1.4 + + This signal is emitted when a JavaScript dialog is requested. + + The \a request can be handled by using the methods of the JavaScriptDialogRequest + type. + + \note Signal handlers need to call \c{request.accepted = true} to prevent a + default dialog from showing up. Make sure to call either + JavaScriptDialogRequest::dialogAccept() or JavaScriptDialogRequest::dialogReject() + afterwards. +*/ + +/*! + \qmlsignal WebEngineView::colorDialogRequested(ColorDialogRequest request) + \since QtWebEngine 1.4 + + This signal is emitted when a color picker dialog is requested. + + The \a request can be handled by using the methods of the ColorDialogRequest + type. + + \note Signal handlers need to call \c{request.accepted = true} to prevent a + default dialog from showing up. Make sure to call either + ColorDialogRequest::dialogAccept() or ColorDialogRequest::dialogReject() afterwards. +*/ + +/*! + \qmlsignal WebEngineView::fileDialogRequested(FileDialogRequest request) + \since QtWebEngine 1.4 + + This signal is emitted when a file picker dialog is requested. + + The \a request can be handled by using the methods of the FileDialogRequest + type. + + \note Signal handlers need to call \c{request.accepted = true} to prevent a + default dialog from showing up. Make sure to call either FileDialogRequest::dialogAccept() + or FileDialogRequest::dialogReject() afterwards. +*/ + +/*! + \qmlsignal WebEngineView::formValidationMessageRequested(FormValidationMessageRequest request) + \since QtWebEngine 1.4 + \obsolete + + No longer used since 5.11, as Blink now renders Validation messages internally. +*/ + +/*! + \qmlsignal WebEngineView::contextMenuRequested(ContextMenuRequest request) + \since QtWebEngine 1.4 + + This signal is emitted when a context menu is requested. + + The \a request can be handled by using the properties of the ContextMenuRequest + type. + + \note Signal handlers need to call \c{request.accepted = true} to prevent a + default context menu from showing up. +*/ + +/*! \qmlsignal WebEngineView::navigationRequested(WebEngineNavigationRequest request) + This signal is emitted when the navigation request \a request is issued. +*/ + +/*! + \qmlsignal WebEngineView::quotaRequested(QuotaRequest request) + \since QtWebEngine 1.7 + + This signal is emitted when the web page issues a \a request for a larger persistent storage + than the application's current allocation in File System API. The default quota + is 0 bytes. + + \sa QuotaRequest +*/ + +/*! + \qmlsignal WebEngineView::registerProtocolHandlerRequested(RegisterProtocolHandlerRequest request) + \since QtWebEngine 1.7 + + This signal is emitted when the web page tries to register a custom protocol + by issuing a \l registerProtocolHandler \a request. + + \sa RegisterProtocolHandlerRequest +*/ + +/*! + \qmlsignal WebEngineView::geometryChangeRequested(rect geometry, rect frameGeometry) + \since QtWebEngine 1.7 + + This signal is emitted whenever the document wants to change the position and size of the + page to \a frameGeometry. This can happen for example through JavaScript. + + While \a frameGeometry includes, \a geometry excludes the size of frame margins. + + \note Geometry related properties of QML Window expect a size excluding the window + decoration. You have to use \a geometry to handle this signal correctly. + + \qml + onGeometryChangeRequested: { + window.x = geometry.x + window.y = geometry.y + window.width = geometry.width + window.height = geometry.height + } + \endqml +*/ + +/*! + \qmlproperty WebEngineView WebEngineView::inspectedView + \since QtWebEngine 1.7 + + The view this view is currently inspecting, if any. Setting it + will navigate to an internal URL with the developer tools of + the view set. + + It is recommended to unset this property when developer tools + are not visible; otherwise some debug information may appear + in the inspected WebEngineView. + + \sa devToolsView +*/ + +/*! + \qmlproperty WebEngineView WebEngineView::devToolsView + \since QtWebEngine 1.7 + + The view currently hosting the developer tools for this view. + Setting it to a new view will navigate that view to an internal + URL with the developer tools, and bind it to this view. + + \sa inspectedView +*/ + +/*! + \qmlmethod WebEngineAction WebEngineView::action(WebAction action) + \since 5.12 + + Returns a \l WebEngineAction for the specified \l WebAction \a action. + WebEngineView also takes care of implementing the action, + so that upon triggering the corresponding action is performed on the view. + + \code + var copyAction = webEngineView.action(WebEngineView.Copy); + \endcode + + \sa WebEngineAction +*/ + +/*! + \qmlsignal WebEngineView::printRequest + \since QtWebEngine 1.8 + + This signal is emitted when the JavaScript \c{window.print()} method is called. + Typically, the signal handler can simply call printToPdf(). + + \sa printToPdf +*/ + +/*! + \qmlsignal WebEngineView::selectClientCertificate(WebEngineClientCertificateSelection clientCertificateSelection) + \since QtWebEngine 1.9 + + This signal is emitted when a web site requests an SSL client certificate, and one or more were + found in the system's client certificate store. + + Handling the signal is asynchronous, and loading will be waiting until a certificate is selected, + or the last copy of \a clientCertificateSelection is destroyed. + + If the signal is not handled, \a clientCertificateSelection is automatically destroyed, and loading + will continue without a client certificate. + + \sa WebEngineClientCertificateSelection +*/ + +/*! + \qmlsignal WebEngineView::tooltipRequested(TooltipRequest request) + \since QtWebEngine 1.10 + + This signal is emitted when the web page sends a \a request to show a tooltip at + a specified position. + + \note Signal handlers need to call \c{request.accepted = true} to prevent a default tooltip from showing up. + + \sa TooltipRequest +*/ + +/*! + \qmlproperty enumeration WebEngineView::LifecycleState + \since QtWebEngine 1.10 + + This enum describes the lifecycle state of the page: + + \value WebEngineView.LifecycleState.Active + Normal state. + \value WebEngineView.LifecycleState.Frozen + Low CPU usage state where most HTML task sources are suspended. + \value WebEngineView.LifecycleState.Discarded + Very low resource usage state where the entire browsing context is discarded. + + \sa lifecycleState, {Page Lifecycle API}, {WebEngine Lifecycle Example} +*/ + +/*! + \qmlproperty LifecycleState WebEngineView::lifecycleState + \since QtWebEngine 1.10 + + \brief The current lifecycle state of the page. + + The following restrictions are enforced by the setter: + + \list + \li A visible page must remain in the \c{Active} state. + \li If the page is being inspected by a \l{devToolsView} then both pages must + remain in the \c{Active} states. + \li A page in the \c{Discarded} state can only transition to the \c{Active} + state. This will cause a reload of the page. + \endlist + + These are the only hard limits on the lifecycle state, but see also + \l{recommendedState} for the recommended soft limits. + + \sa recommendedState, {Page Lifecycle API}, {WebEngine Lifecycle Example} +*/ + +/*! + \qmlproperty LifecycleState WebEngineView::recommendedState + \since QtWebEngine 1.10 + + \brief The recommended limit for the lifecycle state of the page. + + Setting the lifecycle state to a lower resource usage state than the + recommended state may cause side-effects such as stopping background audio + playback or loss of HTML form input. Setting the lifecycle state to a higher + resource state is however completely safe. + + \sa lifecycleState, {Page Lifecycle API}, {WebEngine Lifecycle Example} +*/ + +/*! + \qmltype FindTextResult + \instantiates QWebEngineFindTextResult + \inqmlmodule QtWebEngine + \since QtWebEngine 1.10 + + \brief A utility type for encapsulating the result of a string search on a page. + + \sa WebEngineView::findTextFinished() +*/ + +/*! + \qmlproperty int FindTextResult::numberOfMatches + \readonly + + \brief The number of matches found. +*/ + +/*! + \qmlproperty int FindTextResult::activeMatch + \readonly + + \brief The index of the currently highlighted match. +*/ + +/*! + \qmlsignal WebEngineView::findTextFinished(FindTextResult result) + \since QtWebEngine 1.10 + + This signal is emitted when a string search on a page is completed. \a result is + the result of the string search. + + \sa findText(), FindTextResult +*/ + +/*! + \qmlproperty qint64 WebEngineView::renderProcessPid + \brief Returns the process ID (PID) of the render process assigned to the + current page's main frame. + \since QtWebEngine 1.11 + \readonly + + If no render process is available yet, \c 0 is returned. + + \sa renderProcessPidChanged +*/ +/*! + \qmlsignal WebEngineView::renderProcessPidChanged(qint64 pid) + \since QtWebEngine 1.11 + \readonly + + If no render process is available yet, \c 0 is returned. + This signal is emitted when the PID (process ID) of the page's underlying + render process changed. + + \sa renderProcessPid +*/ |