GSoC/2018/StatusReports/AnmolGautam: Difference between revisions

From KDE Community Wiki
< GSoC‎ | 2018‎ | StatusReports
Line 37: Line 37:
*Proposal https://tarptaeya.github.io/pdfs/draft.pdf
*Proposal https://tarptaeya.github.io/pdfs/draft.pdf
==Contact==
==Contact==
'''Email''' [email protected]


'''IRC Nick''' tarptaeya
'''IRC Nick''' tarptaeya


'''GitHub''' https://github.com/tarptaeya
'''GitHub''' https://github.com/tarptaeya

Revision as of 06:03, 4 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.
  • History API: The API to interact with the browser history.
  • Cookies API: The API to interact with & set 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

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