summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/developers/design-documents/extensions/proposed-changes/apis-under-development/gleam-api/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/developers/design-documents/extensions/proposed-changes/apis-under-development/gleam-api/index.md')
-rw-r--r--chromium/docs/website/site/developers/design-documents/extensions/proposed-changes/apis-under-development/gleam-api/index.md169
1 files changed, 0 insertions, 169 deletions
diff --git a/chromium/docs/website/site/developers/design-documents/extensions/proposed-changes/apis-under-development/gleam-api/index.md b/chromium/docs/website/site/developers/design-documents/extensions/proposed-changes/apis-under-development/gleam-api/index.md
deleted file mode 100644
index 68c22cc535d..00000000000
--- a/chromium/docs/website/site/developers/design-documents/extensions/proposed-changes/apis-under-development/gleam-api/index.md
+++ /dev/null
@@ -1,169 +0,0 @@
----
-breadcrumbs:
-- - /developers
- - For Developers
-- - /developers/design-documents
- - Design Documents
-- - /developers/design-documents/extensions
- - Extensions
-- - /developers/design-documents/extensions/proposed-changes
- - Proposed & Proposing New Changes
-- - /developers/design-documents/extensions/proposed-changes/apis-under-development
- - API Proposals (New APIs Start Here)
-page_name: gleam-api
-title: Gleam API
----
-
-## Overview
-
-Extension developers often want a way to offer contextual actions with different
-parts of a web page. For example:
-
-* The Skype extension would like to offer to make calls to phone
- numbers in the text of a page
-* Many extensions would like to offer to download or edit embedded
- images and video
-* Annotation extensions would like to offer to act on the current
- selection, and to highlight passages of text in a web page
-
-The Gleam API would allow extension developers to do these things, in a way
-that:
-
-* Cannot slow down page load
-* Cannot break the rendering of web pages
-* Simplifies handling all the tricky edge cases in dynamic pages that
- add, edit, and remove nodes at runtime
-* Offers a nice, consistent UI that users will understand and that
- allows multiple extensions to interact nicely without conflict
-
-## Status
-
-Proposal
-
-## Details
-
-Extensions can register interest in several different types of objects:
-
-* Images
-* Plugins
-* Video (the <video> tag)
-* Links
-* Text
-* Selection
-
-Gleams are registered in the manifest, and multiple gleams can be registered
-per-extension. If an extension is only interested in a subset of objects of a
-given type on the page, they can be filtered with optional filter declarations
-in the manifest or a filter function.
-
-Once an object has been selected by at least one extension, it is visually
-highlighted by Chrome. For most types, the available actions wouldn't be visible
-on an object by default, only a highlight indicating that some actions are
-available. When the user hovers over the object, buttons for the available
-actions are rendered. When a Gleam is invoked, a callback is fired in the
-extension with details of the invoked Gleam and the relevant object.
-
-<todo: need mocks!>
-
-## Manifest
-
-{
-
-...
-
-"gleam": \[
-
-{
-
-"type": "image" | "plugin" | "video" | "link" | "text" | "selection",
-
-"id": <string>, /\* a unique ID (within this extension) for the gleam \*/
-
-"name": <string>, /\* the name to display in the UI \*/
-
-"icon": <path>, /\* A path to an icon to display in the UI \*/
-
-"regexp": <string>, /\* optional, only valid for type "text". a regexp
-that filters text objects before invoking the filter function \*/
-
-"content-types": <string\[\]> /\* optional, only valid for types "image",
-"plugin", and "video". an array of content-types to filter to \*/
-
-"filter": <string>, /\* optional, an expression that evaluates to a
-function to use to filter objects to select \*/
-
-"callback": <string> /\* an expression that evaluates to a function to
-call when the gleam is invoked \*/
-
-}
-
-\]
-
-...
-
-}
-
-## Filters
-
-Each page action can specify an optional filter. The filter is a string that
-should evaluate to a JavaScript function. The function is called for each object
-found that matches the specified type and any applicable declarative filters.
-
-The filter callback receives an object with the following properties:
-
-String id // The ID of the gleam that a matching object was found for.
-
-String documentUrl // The URL of the document the object was found on.
-
-int tabId // The ID of the tab the object was found on.
-
-String contentType // The content type of the matching object. Only valid for
-image, video, and plugin.
-
-String url // The URL of the object. Only valid for image, video, and link
-
-String text // The text of the object. Only valid for text and link.
-
-int width // The width of the object, if known. Only valid for image, video, and
-plugin
-
-int height // The height of the object, if known. Only valid for image, video,
-and plugin
-
-For all types except text, the filter callback should return a boolean
-indicating whether the object should be selected. For type text, the filter
-callback should return an array of begin/end pairs indicating the ranges inside
-the text that should be selected.
-
-Note that extension developers may choose to never select any objects if they
-are only interested in knowing about certain types of objects on the page, not
-performing actions on them.
-
-## Callbacks
-
-Each action must specify a callback. The callback is a string that should
-evaluate to a JavaScript function. The function is called when the gleam is
-invoked by the user. The parameters to the callback are the same as the
-parameters to the filter (see above), and there is no return value.
-
-## Extra Details
-
-One of the neat things about this API is that we describe "objects" at a higher
-level than DOM nodes. So Chrome gets to decide how to translate the DOM into
-these "objects". We have an opportunity to really reduce complexity for
-developers by doing these translations smartly.
-
-* For type "image", we shouldn't send images that are very small, or
- off screen. These are layout-related, most likely, and not useful to
- users.
-* For type "text", we should construct a text string for entire
- paragraphs at a time, removing all inline formatting tags, links,
- etc. This is very difficult to do correctly and we can save
- developer lots of work and bugginess by doing it for them. When the
- extension returns ranges, we translate these back into the DOM tree.
- This is hard, but we have all the data necessary to do it. Extension
- developers don't because it isn't surfaced through DOM APIs. This
- also means that we need to track tree changes so that we can
- invalidate filters requests that are outstanding.
-* We could add other high-level objects in the future, like
- "phone-number" and "address". (thanks erikkay for the idea!) \ No newline at end of file