Browser

This Aptitude, combined with the Olive Helps browser extension, allows an author to interact with your browser.

This Aptitude only works if you have the Olive Helps browser extension installed. Currently, we have extensions for Chrome, Firefox, and Edge.

Please note: Microsoft Edge operates as a Chrome plugin.

These documents will reference frameId and parentFrameId - for more information on frames, check out the Chrome Extension Docs here.

listenNavigation

Calls callback on any navigation event pushed from a browser running the Olive Helps extension.

import { browser } from '@oliveai/ldk';

const URL_TO_OPEN = 'https://www.oliveai.dev/';
const newTabId = await browser.openTab(URL_TO_OPEN);

const browserListener = await browser.listenNavigation((navDetails) => {
    /*
    navDetails will be:
    {
        frameId: number,
        navigationType: string (real | history)
        parentFrameId: number,
        tabId: number,
        timestamp: number,
        url: string
    }
    */
    
    // navDetails.url === URL_TO_OPEN: true
    // navDetails.tabId === newTabId: true

    // Cancel the listener when a specific URL is opened by the user
    if (navDetails.url === URL_TO_OPEN) {
        browserListener.cancel();
    }
})

listenTextSelection

Calls callback on any text selection event pushed from a browser running the Olive Helps extension.

import { browser } from '@oliveai/ldk';

const browserTextListener = await browser.listenTextSelection((value) => {
    // Cancel the listener when a specific string is selected in the browser
    const TEXT_WE_NEED = 'The quick brown fox jumped';
    if (value === TEXT_WE_NEED) {
        browserTextListener.cancel();
    }
}

listenNetworkActivity

Listens for any network activity by the browser. The resulting callback for the listener takes in an activity event with the following structure.

export interface NetworkActivityDetails {
  tabId: number; // Which tab the activity originated from
  requestUrl: string; // The url for fetching data
  method: string; // The HTTP method used in the request
  requestBody: null | string; // Null or a string of the request payload
  domain: string; // The originating url
}

import { browser } from '@oliveai/ldk';

const networkActivityListener= await browser.listenNetworkActivity((event) => {
    console.log(JSON.stringify(event)); // This will produce the structure above
    networkActivityListener.cancel();
}

openTab

Opens a tab in the browser running the Olive Helps extension.

import { browser } from '@oliveai/ldk';

const URL_TO_OPEN = 'https://www.oliveai.dev/';

// This will open a new tab in your browser, and return the new tab's ID
const newTabId = await browser.openTab(URL_TO_OPEN);

// This will open a new tab in your browser and return both the tab id and the source html for the page
const {id, sourceHTML}= await browser.openTab(URL_TO_OPEN, {includeSouce: true});

openWindow

Opens a window in the browser running the Olive Helps extension.

import { browser } from '@oliveai/ldk';

const URL_TO_OPEN = 'https://www.oliveai.dev/';

// This will open a new window in your browser, and return the new window's ID
const newWindowId = await browser.openWindow(URL_TO_OPEN);

// This will open a new window in your browser, and return the new windows id and the source html for the page
const {id, sourceHTML} = await browser.openWindow(URL_TO_OPEN, { includeSource: true});

sourceHTML

Retrieves the html source for a given address.

import { browser } from '@oliveai/ldk';
const URL_TO_READ = 'https://www.oliveai.dev/';
const { id, sourceHTML } = await browser.sourceHTML(URL_TO_READ);

Last updated