GSoC/2018/StatusReports/AnmolGautam: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2018‎ | StatusReports
(added week 4 report)
Line 15: Line 15:
*<u>Adding permission to existing plugin infrastructure for allowing plugin in incognito:</u> Plugins will now support permission to allow them in incognito mode. Also the information for plugins is moved from ini files to sql database.
*<u>Adding permission to existing plugin infrastructure for allowing plugin in incognito:</u> Plugins will now support permission to allow them in incognito mode. Also the information for plugins is moved from ini files to sql database.
*<u>Developing QML Bookmarks API similar to WebExtension API:</u> Bookmarks API will support standard WebExtension bookmarks API such as BookmarkTreeNode, create, get, search, remove, onChanged, etc.
*<u>Developing QML Bookmarks API similar to WebExtension API:</u> Bookmarks API will support standard WebExtension bookmarks API such as BookmarkTreeNode, create, get, search, remove, onChanged, etc.
For more details please visit my blog entry - [https://tarptaeya.github.io/first-week-of-coding-phase-gsoc18.html First week of coding phase, GSoC'18]
For more details please visit my blog entry - [https://tarptaeya.github.io/first-week-of-coding-phase-gsoc18.html First week of coding phase, GSoC'18]
===Coding Phase: Week 2===
===Coding Phase: Week 2===
The week was totally involved in developing QML APIs similar to WebExtension APIs. The follwoing APIs are developed:
The week was totally involved in developing QML APIs similar to WebExtension APIs. The follwoing APIs are developed:
*<u>TopSites API:</u> The API to access the sites displayed in speed-dial.
*<u>TopSites API:</u> The API to access the sites displayed in speed-dial. Consists of uncreatable type MostVisitedUrl and singleton TopSites.
*<u>History API:</u> The API to interact with the browser history.
*<u>History API:</u> The API to interact with the browser history. Consists of uncreatable type HistoryItem and singleton History.
*<u>Cookies API:</u> The API to interact with & set cookies.
*<u>Cookies API:</u> The API to interact with & set cookies. Consists of uncreatable type Cookie and singleton Cookies.
 
For more details please visit my blog entry - [https://tarptaeya.github.io/second-week-of-coding-phase-gsoc18.html Second week of coding phase, GSoC'18]
For more details please visit my blog entry - [https://tarptaeya.github.io/second-week-of-coding-phase-gsoc18.html Second week of coding phase, GSoC'18]
===Coding Phase: Week 3===
===Coding Phase: Week 3===
Line 30: Line 28:
*<u>Tabs API:</u> The API to interact with Tabs. This exposes the Falkon c++ methods of TabWidget class as singleton Falkon.Tabs and methods of WebTab class as uncreatable type Falkon.Tab.
*<u>Tabs API:</u> The API to interact with Tabs. This exposes the Falkon c++ methods of TabWidget class as singleton Falkon.Tabs and methods of WebTab class as uncreatable type Falkon.Tab.
For more details please visit my blog entry - [https://tarptaeya.github.io/third-week-of-coding-phase-gsoc18.html Third week of coding phase, GSoC'18]
For more details please visit my blog entry - [https://tarptaeya.github.io/third-week-of-coding-phase-gsoc18.html Third week of coding phase, GSoC'18]
===Coding Phase: Week 4===
The work done in the fourth week was quite different from the other weeks. The following work is done:
*<u>Browser Window API, &amp; Window Id</u>: The methods and properties related to Browser Window are developed. It consists of uncreatable types Window, WindowState, WindowType and single Windows. Window Ids are integers starting from 0, incrementing with each window created but not decrementing with each window removed,
*<u>Added WebView methods and properties to Tabs API</u>:The methods and properties related to WebView are added to the Tabs API, which are developed in the third week, for eg, Tabs.showSource(), Tabs.back(), Tabs.canGoBack, etc.
*<u>Fixed Leaks in the API</u>: There was a major leaks in the APIs, arising because there were many temporary parentless objects created for eg in signals. Those are fixed now.
*<u>Added Documentation for the APIs developed till now</u>: Documentation for the API is in the form of code comments which will be generated using Kapidox, which is a wrapper for Doxygen.
For more details please visit my blog entry - [https://tarptaeya.github.io/fourth-week-of-coding-phase-gsoc18.html Fourth week of coding phase, GSoC'18]


==Branch where I am working==
==Branch where I am working==

Revision as of 04:18, 11 June 2018

JavaScript/QML extension support in Falkon

Falkon is a web browser, previously known as Qupzilla. Falkon supports extensions but in C++ & Python. The task for the project is to integrate QJSEngine and QQmlEngine with Falkon, so that extensions can be developed using JavaScript/QML .

Mentor: David Rosca

Project Goals

Develop an API to support JavaScript/QML extension in Falkon which

  • is restricted i.e. does not have access to all the browser functions contrary to C++ & Python extensions.
  • is similar to WebExtension API so that most of the plugins can be ported easily to Falkon.

Work Report

Community Bonding Phase

Community bonding phase brings to me great opportunity to learn more about Falkon & KDE infrastructure. I have been in constant touch with my mentor discussing about various implementation details. In the meantime, I have been active on the Bugzilla to help fix issues and bugs. I also explored WebExtension API documented at MDN to get motivation on designing the API.

Coding Phase: Week 1

This week was mainly focussed on three things

  • Enable loading/unloading of QML plugins in Falkon: QML plugins will now be loaded into Falkon from the subdirectory qml in the standard plugin paths, similar to Python plugins. Also in metadata.desktop file for plugin, the main entry file (QML) can be specified so that the plugin named X can have the entry file Y.qml.
  • Adding permission to existing plugin infrastructure for allowing plugin in incognito: Plugins will now support permission to allow them in incognito mode. Also the information for plugins is moved from ini files to sql database.
  • Developing QML Bookmarks API similar to WebExtension API: Bookmarks API will support standard WebExtension bookmarks API such as BookmarkTreeNode, create, get, search, remove, onChanged, etc.

For more details please visit my blog entry - First week of coding phase, GSoC'18

Coding Phase: Week 2

The week was totally involved in developing QML APIs similar to WebExtension APIs. The follwoing APIs are developed:

  • TopSites API: The API to access the sites displayed in speed-dial. Consists of uncreatable type MostVisitedUrl and singleton TopSites.
  • History API: The API to interact with the browser history. Consists of uncreatable type HistoryItem and singleton History.
  • Cookies API: The API to interact with & set cookies. Consists of uncreatable type Cookie and singleton Cookies.

For more details please visit my blog entry - Second week of coding phase, GSoC'18

Coding Phase: Week 3

The week was totally involved in developing QML APIs which are not similar to WebExtension APIs. The follwoing APIs are developed:

  • Clipboard API: The API to interact with Clipboard. This is a very short API - just with one method copy, enabling copying to clipboard by passing a JavaScript object containg text to Falkon.Clipboard.copy.
  • Notifications API: The API to display desktop notifications. This is also a very short API - just with one method create, enabling creation of desktop notifications by passing a JavaScript object containg icon(url), heading and message of the notification to Falkon.Notifications.create.
  • Tabs API: The API to interact with Tabs. This exposes the Falkon c++ methods of TabWidget class as singleton Falkon.Tabs and methods of WebTab class as uncreatable type Falkon.Tab.

For more details please visit my blog entry - Third week of coding phase, GSoC'18

Coding Phase: Week 4

The work done in the fourth week was quite different from the other weeks. The following work is done:

  • Browser Window API, & Window Id: The methods and properties related to Browser Window are developed. It consists of uncreatable types Window, WindowState, WindowType and single Windows. Window Ids are integers starting from 0, incrementing with each window created but not decrementing with each window removed,
  • Added WebView methods and properties to Tabs API:The methods and properties related to WebView are added to the Tabs API, which are developed in the third week, for eg, Tabs.showSource(), Tabs.back(), Tabs.canGoBack, etc.
  • Fixed Leaks in the API: There was a major leaks in the APIs, arising because there were many temporary parentless objects created for eg in signals. Those are fixed now.
  • Added Documentation for the APIs developed till now: Documentation for the API is in the form of code comments which will be generated using Kapidox, which is a wrapper for Doxygen.

For more details please visit my blog entry - Fourth week of coding phase, GSoC'18

Branch where I am working

https://cgit.kde.org/falkon.git/?h=anmolgautam

Important Links

Contact

Email [email protected]

IRC Nick tarptaeya

GitHub https://github.com/tarptaeya