Friday, March 6, 2020

Technical details about Chrome extension

Installation 

During the installation on Windows 10 Chrome extension artifacts are copied into the folder for default Chrome account:
C:\Users\<Windows Login>\AppData\Local\Google\Chrome\User Data\Default

Note that if Windows user has several Chrome accounts, each Chrome account has its own set of installed extensions with root located at
C:\Users\<Windows Login>\AppData\Local\Google\Chrome\User Data\Profile<N>

Source files 

Source files of Chrome extension are stored in the sub-folder named after the id and the version of the extension:
...\Extensions\<Extension ID>\<Extension Version>\

Local Storage

Local storage of Chrome extensions is stored at the: 
...\Local Extension Settings\<Extension ID>\


Note that: 

  • local storage is isolated from common Chrome storages: Local, Session or IndexedDB
  • local storage can be accessed only from the corresponding Chrome account using Developer Tools
  • local storage has levelDb format 

State Management

Navigate to chrome://extensions to manage extensions for the currently logged Chrome user.

User can:

  • Enable / Disable extension
  • Update / Refresh
  • Remove
  • Navigate to Background page (Developer mode) 
  • Review Errors log (Developer mode)

Using Developer mode one can install extensions from not only Chrome Web Store but from a local drive as well using 'Load unpacked'.

Components


Fossa Guard extension consists of 3 main components linked via messaging

  • Content script operates on Gmail page in the dedicated iframe, communicates with Gmail via DOM messages, observing DOM events, communicates with Background Script via Chrome messages.
  • Settings page provides user UI to manage certificates and keys
  • Background script is responsible for cryptography, uses with extension storages and communicates external services via http(s) calls.