Copy disabled (too large)
Download .txt
Showing preview only (11,638K chars total). Download the full file to get everything.
Repository: GoogleChrome/chrome-extensions-samples
Branch: main
Commit: c4393862e164
Files: 2371
Total size: 10.6 MB
Directory structure:
gitextract_wq83segv/
├── .allstar/
│ └── binary_artifacts.yaml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ └── bug_report.md
│ ├── dependabot.yml
│ └── workflows/
│ ├── lint.yml
│ └── sample-list-generator.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .prettierignore
├── .prettierrc.json
├── .repo/
│ ├── migrate-samples.js
│ └── sample-list-generator/
│ ├── .gitignore
│ ├── README.md
│ ├── extension-apis.json
│ ├── package.json
│ ├── src/
│ │ ├── constants.ts
│ │ ├── index.ts
│ │ ├── libs/
│ │ │ ├── api-detector.ts
│ │ │ ├── api-loader.ts
│ │ │ └── sample-collector.ts
│ │ ├── prepare-chrome-types.ts
│ │ ├── types.ts
│ │ └── utils/
│ │ ├── filesystem.ts
│ │ └── manifest.ts
│ └── test/
│ └── api-detector/
│ └── api-detector.test.ts
├── CONTRIBUTING.md
├── LICENSE
├── README-template.md
├── README.md
├── _archive/
│ ├── apps/
│ │ ├── README.md
│ │ ├── libraries/
│ │ │ └── gapi-chrome-apps-lib/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ └── gapi-chrome-apps.js
│ │ └── samples/
│ │ ├── analytics/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── google-analytics-bundle.js
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── sample_support_metadata.json
│ │ ├── appengine-channelapi/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── README.md
│ │ │ │ ├── channel_in_a_webview.js
│ │ │ │ ├── game.js
│ │ │ │ ├── index.css
│ │ │ │ ├── index.html
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ └── appengine/
│ │ │ ├── app.yaml
│ │ │ ├── chatactoe.py
│ │ │ └── static/
│ │ │ └── channel_in_a_webview.html
│ │ ├── appsquare/
│ │ │ ├── README.md
│ │ │ ├── assets/
│ │ │ │ └── icon.psd
│ │ │ ├── background.js
│ │ │ ├── foursquare.js
│ │ │ ├── loader.js
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── appview/
│ │ │ ├── README.md
│ │ │ ├── embedded-app/
│ │ │ │ ├── README.md
│ │ │ │ ├── camera.html
│ │ │ │ ├── camera.js
│ │ │ │ ├── default.html
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ └── host-app/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── blink1/
│ │ │ ├── README.md
│ │ │ ├── blink1.js
│ │ │ ├── color-picker.html
│ │ │ ├── color-picker.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── style.css
│ │ │ └── udev/
│ │ │ └── 61-blink1.rules
│ │ ├── bluetooth-samples/
│ │ │ ├── battery-service-demo/
│ │ │ │ ├── README.md
│ │ │ │ ├── background.js
│ │ │ │ ├── main.html
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── style.css
│ │ │ │ └── ui.js
│ │ │ ├── device-info-demo/
│ │ │ │ ├── README.md
│ │ │ │ ├── background.js
│ │ │ │ ├── main.html
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── style.css
│ │ │ │ └── ui.js
│ │ │ └── heart-rate-sensor/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── style.css
│ │ │ └── ui.js
│ │ ├── calculator/
│ │ │ ├── README.md
│ │ │ ├── calculator.html
│ │ │ ├── controller.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── model.js
│ │ │ ├── sample_support_metadata.json
│ │ │ ├── style.css
│ │ │ ├── tests/
│ │ │ │ ├── calculator_test.html
│ │ │ │ └── calculator_test.js
│ │ │ └── view.js
│ │ ├── camera-capture/
│ │ │ ├── README.md
│ │ │ ├── app.js
│ │ │ ├── background.js
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── clock/
│ │ │ ├── README.md
│ │ │ ├── alarm.js
│ │ │ ├── clock.js
│ │ │ ├── index.html
│ │ │ ├── lib/
│ │ │ │ └── tipTipv13/
│ │ │ │ ├── jquery.tipTip.js
│ │ │ │ ├── jquery.tipTip.minified.js
│ │ │ │ └── tipTip.css
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── script.js
│ │ │ ├── stopwatch.js
│ │ │ ├── style.css
│ │ │ ├── tests/
│ │ │ │ ├── clock_test.html
│ │ │ │ ├── clock_test.js
│ │ │ │ └── lib/
│ │ │ │ ├── prototype.js
│ │ │ │ └── right.js
│ │ │ └── timer.js
│ │ ├── context-menu/
│ │ │ ├── README.md
│ │ │ ├── a.html
│ │ │ ├── a.js
│ │ │ ├── b.html
│ │ │ ├── b.js
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── dart/
│ │ │ ├── README.md
│ │ │ ├── clock.html
│ │ │ ├── compile.sh
│ │ │ ├── css/
│ │ │ │ └── clock.css
│ │ │ ├── dart/
│ │ │ │ ├── balls.dart
│ │ │ │ ├── clock.dart
│ │ │ │ ├── clock.dart.precompiled.js
│ │ │ │ └── numbers.dart
│ │ │ ├── js/
│ │ │ │ ├── browser_dart_csp_safe.js
│ │ │ │ └── main.js
│ │ │ ├── manifest.json
│ │ │ ├── pubspec.yaml
│ │ │ └── sample_support_metadata.json
│ │ ├── desktop-capture/
│ │ │ ├── README.md
│ │ │ ├── app.js
│ │ │ ├── background.js
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── dialog-element/
│ │ │ ├── README.md
│ │ │ ├── dialog.js
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── styles.css
│ │ ├── diff/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ ├── editor.css
│ │ │ │ └── style.css
│ │ │ ├── js/
│ │ │ │ ├── background.js
│ │ │ │ ├── diff.js
│ │ │ │ └── filesystem.js
│ │ │ ├── lib/
│ │ │ │ ├── diff_match_patch.js
│ │ │ │ ├── diff_match_patch_test.html
│ │ │ │ ├── diff_match_patch_test.js
│ │ │ │ ├── diff_match_patch_uncompressed.js
│ │ │ │ └── jquery.activity-indicator.js
│ │ │ ├── main.html
│ │ │ └── manifest.json
│ │ ├── dojo/
│ │ │ ├── .gitignore
│ │ │ ├── Markdown_1.0.1/
│ │ │ │ ├── License.text
│ │ │ │ ├── Markdown Readme.text
│ │ │ │ └── Markdown.pl
│ │ │ ├── README.md
│ │ │ ├── build.sh
│ │ │ ├── crxmake.sh
│ │ │ ├── executable_list
│ │ │ └── include/
│ │ │ └── main.css
│ │ ├── filesystem-access/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ ├── app.js
│ │ │ │ └── dnd.js
│ │ │ └── manifest.json
│ │ ├── frameless-window/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── frameless_window.html
│ │ │ ├── frameless_window.js
│ │ │ ├── manifest.json
│ │ │ ├── style.css
│ │ │ └── titlebar.js
│ │ ├── gcm-notifications/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── register.html
│ │ │ └── register.js
│ │ ├── gdrive/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ ├── bootstrap.css
│ │ │ │ └── main.css
│ │ │ ├── js/
│ │ │ │ ├── app.js
│ │ │ │ ├── background.js
│ │ │ │ ├── dnd.js
│ │ │ │ ├── gdocs.js
│ │ │ │ ├── upload.js
│ │ │ │ └── util.js
│ │ │ ├── main.html
│ │ │ └── manifest.json
│ │ ├── github-auth/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── hello-world/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── hello-world-sync/
│ │ │ ├── README.md
│ │ │ ├── app.js
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ └── style.css
│ │ ├── hid/
│ │ │ ├── README.md
│ │ │ ├── control-panel.html
│ │ │ ├── control-panel.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── style.css
│ │ ├── identity/
│ │ │ ├── README.md
│ │ │ ├── identity.js
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support/
│ │ │ │ ├── README.md
│ │ │ │ ├── google-code-prettify/
│ │ │ │ │ ├── lang-css.js
│ │ │ │ │ └── run_prettify.js
│ │ │ │ ├── prettify.css
│ │ │ │ ├── prettify.js
│ │ │ │ ├── prettify_theme.css
│ │ │ │ ├── sample_support.js
│ │ │ │ ├── show_snippets.html
│ │ │ │ ├── show_snippets.js
│ │ │ │ ├── snippets.css
│ │ │ │ └── standard.css
│ │ │ └── sample_support_metadata.json
│ │ ├── image-edit/
│ │ │ ├── README.md
│ │ │ ├── app.js
│ │ │ ├── background.js
│ │ │ ├── dnd.js
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── instagram-auth/
│ │ │ ├── README.md
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── io2012-presentation/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ ├── presentation.css
│ │ │ │ └── theme.css
│ │ │ ├── diff-sample-files/
│ │ │ │ ├── new-manifest.json
│ │ │ │ └── old-manifest.json
│ │ │ ├── helloworld/
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── snippets
│ │ │ │ ├── window.html
│ │ │ │ └── window.js
│ │ │ ├── js/
│ │ │ │ ├── main.js
│ │ │ │ ├── servo.js
│ │ │ │ ├── slide-config.js
│ │ │ │ ├── slide-controller.js
│ │ │ │ ├── slide-deck.js
│ │ │ │ └── slides.js
│ │ │ ├── manifest.json
│ │ │ ├── presentation.html
│ │ │ ├── servo/
│ │ │ │ ├── background.js
│ │ │ │ ├── main.html
│ │ │ │ ├── manifest.json
│ │ │ │ ├── servo.js
│ │ │ │ └── styles.css
│ │ │ └── windowing_api/
│ │ │ ├── copycat.html
│ │ │ ├── original.html
│ │ │ ├── window.css
│ │ │ └── window.js
│ │ ├── ioio/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── keyboard-handler/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── window.html
│ │ │ └── window.js
│ │ ├── managed-in-app-payments/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ └── app.css
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── scripts/
│ │ │ ├── app.js
│ │ │ └── buy.js
│ │ ├── manga-cam/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── css/
│ │ │ │ └── index.css
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ ├── index.js
│ │ │ │ ├── loader.js
│ │ │ │ ├── postproc.js
│ │ │ │ └── shaders/
│ │ │ │ ├── blur.x.glsl
│ │ │ │ ├── blur.y.glsl
│ │ │ │ ├── copy.fs.glsl
│ │ │ │ ├── flake.fs.glsl
│ │ │ │ ├── index.include.glsl
│ │ │ │ ├── merge.fs.glsl
│ │ │ │ ├── packing.include.glsl
│ │ │ │ ├── sobel.fs.glsl
│ │ │ │ └── toonize.fs.glsl
│ │ │ └── manifest.json
│ │ ├── mdns-browser/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── dns.js
│ │ │ ├── header.css
│ │ │ ├── main.css
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── service-types.js
│ │ ├── media-gallery/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ ├── media-gallery.js
│ │ │ ├── page.html
│ │ │ ├── runtime.js
│ │ │ └── styles.css
│ │ ├── messaging/
│ │ │ ├── README.md
│ │ │ ├── app1/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ ├── main.css
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ ├── app2/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.html
│ │ │ │ ├── index.js
│ │ │ │ ├── main.css
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ └── extension/
│ │ │ ├── README.md
│ │ │ ├── eventPage.js
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.css
│ │ │ └── manifest.json
│ │ ├── mini-code-edit/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── cm/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── demo/
│ │ │ │ │ ├── activeline.html
│ │ │ │ │ ├── changemode.html
│ │ │ │ │ ├── closetag.html
│ │ │ │ │ ├── complete.html
│ │ │ │ │ ├── emacs.html
│ │ │ │ │ ├── folding.html
│ │ │ │ │ ├── formatting.html
│ │ │ │ │ ├── fullscreen.html
│ │ │ │ │ ├── loadmode.html
│ │ │ │ │ ├── marker.html
│ │ │ │ │ ├── matchhighlighter.html
│ │ │ │ │ ├── mustache.html
│ │ │ │ │ ├── preview.html
│ │ │ │ │ ├── resize.html
│ │ │ │ │ ├── runmode.html
│ │ │ │ │ ├── search.html
│ │ │ │ │ ├── theme.html
│ │ │ │ │ ├── vim.html
│ │ │ │ │ └── visibletabs.html
│ │ │ │ ├── doc/
│ │ │ │ │ ├── compress.html
│ │ │ │ │ ├── docs.css
│ │ │ │ │ ├── internals.html
│ │ │ │ │ ├── manual.html
│ │ │ │ │ ├── oldrelease.html
│ │ │ │ │ ├── reporting.html
│ │ │ │ │ └── upgrade_v2.2.html
│ │ │ │ ├── index.html
│ │ │ │ ├── keymap/
│ │ │ │ │ ├── emacs.js
│ │ │ │ │ └── vim.js
│ │ │ │ ├── lib/
│ │ │ │ │ ├── codemirror.css
│ │ │ │ │ ├── codemirror.js
│ │ │ │ │ └── util/
│ │ │ │ │ ├── closetag.js
│ │ │ │ │ ├── dialog.css
│ │ │ │ │ ├── dialog.js
│ │ │ │ │ ├── foldcode.js
│ │ │ │ │ ├── formatting.js
│ │ │ │ │ ├── javascript-hint.js
│ │ │ │ │ ├── loadmode.js
│ │ │ │ │ ├── match-highlighter.js
│ │ │ │ │ ├── overlay.js
│ │ │ │ │ ├── runmode.js
│ │ │ │ │ ├── search.js
│ │ │ │ │ ├── searchcursor.js
│ │ │ │ │ ├── simple-hint.css
│ │ │ │ │ └── simple-hint.js
│ │ │ │ ├── mode/
│ │ │ │ │ ├── clike/
│ │ │ │ │ │ ├── clike.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── clojure/
│ │ │ │ │ │ ├── clojure.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── coffeescript/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── coffeescript.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── css.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── diff/
│ │ │ │ │ │ ├── diff.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── ecl/
│ │ │ │ │ │ ├── ecl.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── erlang/
│ │ │ │ │ │ ├── erlang.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── gfm/
│ │ │ │ │ │ ├── gfm.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── go/
│ │ │ │ │ │ ├── go.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── groovy/
│ │ │ │ │ │ ├── groovy.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── haskell/
│ │ │ │ │ │ ├── haskell.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── htmlembedded/
│ │ │ │ │ │ ├── htmlembedded.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── htmlmixed/
│ │ │ │ │ │ ├── htmlmixed.js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── javascript/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── javascript.js
│ │ │ │ │ ├── jinja2/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── jinja2.js
│ │ │ │ │ ├── less/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── less.js
│ │ │ │ │ ├── lua/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── lua.js
│ │ │ │ │ ├── markdown/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── markdown.js
│ │ │ │ │ ├── mysql/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── mysql.js
│ │ │ │ │ ├── ntriples/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── ntriples.js
│ │ │ │ │ ├── pascal/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── pascal.js
│ │ │ │ │ ├── perl/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── perl.js
│ │ │ │ │ ├── php/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── php.js
│ │ │ │ │ ├── pig/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── pig.js
│ │ │ │ │ ├── plsql/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── plsql.js
│ │ │ │ │ ├── properties/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── properties.js
│ │ │ │ │ ├── python/
│ │ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── python.js
│ │ │ │ │ ├── r/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── r.js
│ │ │ │ │ ├── rpm/
│ │ │ │ │ │ ├── changes/
│ │ │ │ │ │ │ ├── changes.js
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── spec/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── spec.css
│ │ │ │ │ │ └── spec.js
│ │ │ │ │ ├── rst/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── rst.js
│ │ │ │ │ ├── ruby/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── ruby.js
│ │ │ │ │ ├── rust/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── rust.js
│ │ │ │ │ ├── scheme/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── scheme.js
│ │ │ │ │ ├── shell/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── shell.js
│ │ │ │ │ ├── smalltalk/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── smalltalk.js
│ │ │ │ │ ├── smarty/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── smarty.js
│ │ │ │ │ ├── sparql/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── sparql.js
│ │ │ │ │ ├── stex/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── stex.js
│ │ │ │ │ │ └── test.html
│ │ │ │ │ ├── tiddlywiki/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── tiddlywiki.css
│ │ │ │ │ │ └── tiddlywiki.js
│ │ │ │ │ ├── tiki/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── tiki.css
│ │ │ │ │ │ └── tiki.js
│ │ │ │ │ ├── vbscript/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vbscript.js
│ │ │ │ │ ├── velocity/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── velocity.js
│ │ │ │ │ ├── verilog/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── verilog.js
│ │ │ │ │ ├── xml/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── xml.js
│ │ │ │ │ ├── xquery/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── test/
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ ├── testBase.js
│ │ │ │ │ │ │ ├── testEmptySequenceKeyword.js
│ │ │ │ │ │ │ ├── testMultiAttr.js
│ │ │ │ │ │ │ ├── testNamespaces.js
│ │ │ │ │ │ │ ├── testProcessingInstructions.js
│ │ │ │ │ │ │ └── testQuotes.js
│ │ │ │ │ │ └── xquery.js
│ │ │ │ │ └── yaml/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── yaml.js
│ │ │ │ ├── test/
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── mode_test.css
│ │ │ │ │ ├── mode_test.js
│ │ │ │ │ └── test.js
│ │ │ │ └── theme/
│ │ │ │ ├── ambiance.css
│ │ │ │ ├── blackboard.css
│ │ │ │ ├── cobalt.css
│ │ │ │ ├── eclipse.css
│ │ │ │ ├── elegant.css
│ │ │ │ ├── erlang-dark.css
│ │ │ │ ├── lesser-dark.css
│ │ │ │ ├── monokai.css
│ │ │ │ ├── neat.css
│ │ │ │ ├── night.css
│ │ │ │ ├── rubyblue.css
│ │ │ │ └── xq-dark.css
│ │ │ ├── editor.js
│ │ │ ├── img/
│ │ │ │ └── README.txt
│ │ │ ├── main.html
│ │ │ ├── manifest.json
│ │ │ ├── snippets.js
│ │ │ └── style.css
│ │ ├── multicast/
│ │ │ ├── ChatClient.js
│ │ │ ├── Collection.js
│ │ │ ├── MulticastSocket.js
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ └── manifest.json
│ │ ├── one-time-payment/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ ├── app.css
│ │ │ │ └── bootstrap.css
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── scripts/
│ │ │ └── app.js
│ │ ├── optional-permissions/
│ │ │ ├── README.md
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── permissions.html
│ │ │ └── permissions.js
│ │ ├── parrot-ar-drone/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── lib/
│ │ │ │ ├── API.js
│ │ │ │ ├── Command.js
│ │ │ │ ├── Gamepad.js
│ │ │ │ ├── NavData.js
│ │ │ │ ├── Sequence.js
│ │ │ │ └── Util.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ ├── scripts/
│ │ │ │ └── app.js
│ │ │ ├── styles/
│ │ │ │ └── drone.css
│ │ │ └── third-party/
│ │ │ └── gamepad.js
│ │ ├── platform-title/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── main.css
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── platform-mac.css
│ │ ├── printing/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── a.js
│ │ │ ├── application.js
│ │ │ ├── controls.html
│ │ │ ├── controls.js
│ │ │ ├── document.html
│ │ │ ├── document.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── printout.html
│ │ │ ├── printout.js
│ │ │ └── style.css
│ │ ├── restarted-demo/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── main.html
│ │ │ ├── manifest.json
│ │ │ └── sample_support_metadata.json
│ │ ├── rich-notifications/
│ │ │ ├── README.md
│ │ │ ├── app.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ ├── styles.css
│ │ │ └── window.html
│ │ ├── sandbox/
│ │ │ ├── LICENSE.handlebars
│ │ │ ├── README.md
│ │ │ ├── handlebars-1.0.0.beta.6.js
│ │ │ ├── main.js
│ │ │ ├── mainpage.html
│ │ │ ├── mainpage.js
│ │ │ ├── manifest.json
│ │ │ ├── sandbox.html
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── sandboxed-content/
│ │ │ ├── README.md
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sandboxed.html
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── serial/
│ │ │ ├── adkjs/
│ │ │ │ ├── README.md
│ │ │ │ ├── app/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── comm.html
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── main.css
│ │ │ │ │ ├── img/
│ │ │ │ │ │ └── icon.xcf
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── adk.js
│ │ │ │ │ │ ├── background.js
│ │ │ │ │ │ └── serial.js
│ │ │ │ │ └── manifest.json
│ │ │ │ └── firmware/
│ │ │ │ ├── arduino_libs/
│ │ │ │ │ ├── AndroidAccessory/
│ │ │ │ │ │ ├── AndroidAccessory.cpp
│ │ │ │ │ │ └── AndroidAccessory.h
│ │ │ │ │ ├── CapSense/
│ │ │ │ │ │ ├── CapSense.cpp
│ │ │ │ │ │ └── CapSense.h
│ │ │ │ │ ├── TimedAction/
│ │ │ │ │ │ ├── TimedAction.cpp
│ │ │ │ │ │ └── TimedAction.h
│ │ │ │ │ └── USB_Host_Shield/
│ │ │ │ │ ├── Max3421e.cpp
│ │ │ │ │ ├── Max3421e.h
│ │ │ │ │ ├── Max3421e_constants.h
│ │ │ │ │ ├── Max_LCD.cpp
│ │ │ │ │ ├── Max_LCD.h
│ │ │ │ │ ├── README
│ │ │ │ │ ├── Usb.cpp
│ │ │ │ │ ├── Usb.h
│ │ │ │ │ └── ch9.h
│ │ │ │ └── demokitclient/
│ │ │ │ └── demokitclient.ino
│ │ │ ├── espruino/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.html
│ │ │ │ ├── launch.js
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ └── ledtoggle/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── launch.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── sketches/
│ │ │ └── serial_light/
│ │ │ └── serial_light.ino
│ │ ├── serial-control-signals/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── logic.js
│ │ │ ├── main.html
│ │ │ ├── manifest.json
│ │ │ └── styles.css
│ │ ├── servo/
│ │ │ ├── README.md
│ │ │ ├── Servo/
│ │ │ │ └── Servo.ino
│ │ │ ├── background.js
│ │ │ ├── main.html
│ │ │ ├── manifest.json
│ │ │ ├── servo.js
│ │ │ └── styles.css
│ │ ├── storage/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── syncfs-editor/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ └── editor.css
│ │ │ ├── js/
│ │ │ │ ├── background.js
│ │ │ │ ├── editor.js
│ │ │ │ ├── filer.js
│ │ │ │ ├── main.js
│ │ │ │ └── utils.js
│ │ │ ├── main.html
│ │ │ └── manifest.json
│ │ ├── systemInfo/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── systemInfo.js
│ │ ├── tasks/
│ │ │ ├── README.md
│ │ │ ├── gapi-chrome-apps.js
│ │ │ ├── gapiCallback.js
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── sample_support_metadata.json
│ │ ├── tcpserver/
│ │ │ ├── README.md
│ │ │ ├── commands/
│ │ │ │ ├── BrowserCommands.js
│ │ │ │ └── webview.html
│ │ │ ├── index.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ ├── server.js
│ │ │ ├── styles/
│ │ │ │ ├── main.css
│ │ │ │ └── webview.css
│ │ │ └── tcp-server.js
│ │ ├── telnet/
│ │ │ ├── README.md
│ │ │ ├── ansi-converter.js
│ │ │ ├── launch.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ ├── tcp-client.js
│ │ │ ├── terminal.css
│ │ │ ├── terminal.html
│ │ │ └── terminal.js
│ │ ├── text-editor/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── editor.html
│ │ │ ├── editor.js
│ │ │ ├── icons/
│ │ │ │ └── Readme.txt
│ │ │ ├── lib/
│ │ │ │ ├── ace/
│ │ │ │ │ ├── ace.js
│ │ │ │ │ ├── anchor.js
│ │ │ │ │ ├── anchor_test.js
│ │ │ │ │ ├── background_tokenizer.js
│ │ │ │ │ ├── commands/
│ │ │ │ │ │ ├── command_manager.js
│ │ │ │ │ │ ├── command_manager_test.js
│ │ │ │ │ │ ├── default_commands.js
│ │ │ │ │ │ └── multi_select_commands.js
│ │ │ │ │ ├── config.js
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── editor.css
│ │ │ │ │ ├── document.js
│ │ │ │ │ ├── document_test.js
│ │ │ │ │ ├── edit_session/
│ │ │ │ │ │ ├── bracket_match.js
│ │ │ │ │ │ ├── fold.js
│ │ │ │ │ │ ├── fold_line.js
│ │ │ │ │ │ └── folding.js
│ │ │ │ │ ├── edit_session.js
│ │ │ │ │ ├── edit_session_test.js
│ │ │ │ │ ├── editor.js
│ │ │ │ │ ├── editor_change_document_test.js
│ │ │ │ │ ├── editor_highlight_selected_word_test.js
│ │ │ │ │ ├── editor_navigation_test.js
│ │ │ │ │ ├── editor_text_edit_test.js
│ │ │ │ │ ├── ext/
│ │ │ │ │ │ ├── static.css
│ │ │ │ │ │ ├── static_highlight.js
│ │ │ │ │ │ ├── static_highlight_test.js
│ │ │ │ │ │ └── textarea.js
│ │ │ │ │ ├── keyboard/
│ │ │ │ │ │ ├── hash_handler.js
│ │ │ │ │ │ ├── keybinding/
│ │ │ │ │ │ │ ├── emacs.js
│ │ │ │ │ │ │ └── vim.js
│ │ │ │ │ │ ├── keybinding.js
│ │ │ │ │ │ ├── state_handler.js
│ │ │ │ │ │ └── textinput.js
│ │ │ │ │ ├── layer/
│ │ │ │ │ │ ├── cursor.js
│ │ │ │ │ │ ├── gutter.js
│ │ │ │ │ │ ├── marker.js
│ │ │ │ │ │ ├── text.js
│ │ │ │ │ │ └── text_test.js
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ ├── browser_focus.js
│ │ │ │ │ │ ├── dom.js
│ │ │ │ │ │ ├── es5-shim.js
│ │ │ │ │ │ ├── event.js
│ │ │ │ │ │ ├── event_emitter.js
│ │ │ │ │ │ ├── event_emitter_test.js
│ │ │ │ │ │ ├── fixoldbrowsers.js
│ │ │ │ │ │ ├── keys.js
│ │ │ │ │ │ ├── lang.js
│ │ │ │ │ │ ├── net.js
│ │ │ │ │ │ ├── oop.js
│ │ │ │ │ │ ├── regexp.js
│ │ │ │ │ │ └── useragent.js
│ │ │ │ │ ├── mode/
│ │ │ │ │ │ ├── behaviour/
│ │ │ │ │ │ │ ├── cstyle.js
│ │ │ │ │ │ │ ├── xml.js
│ │ │ │ │ │ │ └── xquery.js
│ │ │ │ │ │ ├── behaviour.js
│ │ │ │ │ │ ├── c_cpp.js
│ │ │ │ │ │ ├── c_cpp_highlight_rules.js
│ │ │ │ │ │ ├── clojure.js
│ │ │ │ │ │ ├── clojure_highlight_rules.js
│ │ │ │ │ │ ├── coffee/
│ │ │ │ │ │ │ ├── coffee-script.js
│ │ │ │ │ │ │ ├── helpers.js
│ │ │ │ │ │ │ ├── lexer.js
│ │ │ │ │ │ │ ├── nodes.js
│ │ │ │ │ │ │ ├── parser.js
│ │ │ │ │ │ │ ├── parser_test.js
│ │ │ │ │ │ │ ├── rewriter.js
│ │ │ │ │ │ │ └── scope.js
│ │ │ │ │ │ ├── coffee.js
│ │ │ │ │ │ ├── coffee_highlight_rules.js
│ │ │ │ │ │ ├── coffee_highlight_rules_test.js
│ │ │ │ │ │ ├── coffee_worker.js
│ │ │ │ │ │ ├── coldfusion.js
│ │ │ │ │ │ ├── coldfusion_highlight_rules.js
│ │ │ │ │ │ ├── coldfusion_test.js
│ │ │ │ │ │ ├── csharp.js
│ │ │ │ │ │ ├── csharp_highlight_rules.js
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ └── csslint.js
│ │ │ │ │ │ ├── css.js
│ │ │ │ │ │ ├── css_highlight_rules.js
│ │ │ │ │ │ ├── css_highlight_rules_test.js
│ │ │ │ │ │ ├── css_test.js
│ │ │ │ │ │ ├── css_worker.js
│ │ │ │ │ │ ├── css_worker_test.js
│ │ │ │ │ │ ├── doc_comment_highlight_rules.js
│ │ │ │ │ │ ├── folding/
│ │ │ │ │ │ │ ├── cstyle.js
│ │ │ │ │ │ │ ├── cstyle_test.js
│ │ │ │ │ │ │ ├── fold_mode.js
│ │ │ │ │ │ │ ├── html.js
│ │ │ │ │ │ │ ├── html_test.js
│ │ │ │ │ │ │ ├── mixed.js
│ │ │ │ │ │ │ ├── pythonic.js
│ │ │ │ │ │ │ ├── pythonic_test.js
│ │ │ │ │ │ │ ├── xml.js
│ │ │ │ │ │ │ └── xml_test.js
│ │ │ │ │ │ ├── golang.js
│ │ │ │ │ │ ├── golang_highlight_rules.js
│ │ │ │ │ │ ├── groovy.js
│ │ │ │ │ │ ├── groovy_highlight_rules.js
│ │ │ │ │ │ ├── haxe.js
│ │ │ │ │ │ ├── haxe_highlight_rules.js
│ │ │ │ │ │ ├── html.js
│ │ │ │ │ │ ├── html_highlight_rules.js
│ │ │ │ │ │ ├── html_highlight_rules_test.js
│ │ │ │ │ │ ├── html_test.js
│ │ │ │ │ │ ├── java.js
│ │ │ │ │ │ ├── java_highlight_rules.js
│ │ │ │ │ │ ├── javascript.js
│ │ │ │ │ │ ├── javascript_highlight_rules.js
│ │ │ │ │ │ ├── javascript_highlight_rules_test.js
│ │ │ │ │ │ ├── javascript_test.js
│ │ │ │ │ │ ├── javascript_worker.js
│ │ │ │ │ │ ├── javascript_worker_test.js
│ │ │ │ │ │ ├── json/
│ │ │ │ │ │ │ └── json_parse.js
│ │ │ │ │ │ ├── json.js
│ │ │ │ │ │ ├── json_highlight_rules.js
│ │ │ │ │ │ ├── json_worker.js
│ │ │ │ │ │ ├── json_worker_test.js
│ │ │ │ │ │ ├── latex.js
│ │ │ │ │ │ ├── latex_highlight_rules.js
│ │ │ │ │ │ ├── less.js
│ │ │ │ │ │ ├── less_highlight_rules.js
│ │ │ │ │ │ ├── liquid.js
│ │ │ │ │ │ ├── liquid_highlight_rules.js
│ │ │ │ │ │ ├── liquid_highlight_rules_test.js
│ │ │ │ │ │ ├── lua.js
│ │ │ │ │ │ ├── lua_highlight_rules.js
│ │ │ │ │ │ ├── markdown.js
│ │ │ │ │ │ ├── markdown_highlight_rules.js
│ │ │ │ │ │ ├── matching_brace_outdent.js
│ │ │ │ │ │ ├── matching_parens_outdent.js
│ │ │ │ │ │ ├── ocaml.js
│ │ │ │ │ │ ├── ocaml_highlight_rules.js
│ │ │ │ │ │ ├── perl.js
│ │ │ │ │ │ ├── perl_highlight_rules.js
│ │ │ │ │ │ ├── pgsql.js
│ │ │ │ │ │ ├── pgsql_highlight_rules.js
│ │ │ │ │ │ ├── php.js
│ │ │ │ │ │ ├── php_highlight_rules.js
│ │ │ │ │ │ ├── powershell.js
│ │ │ │ │ │ ├── powershell_highlight_rules.js
│ │ │ │ │ │ ├── python.js
│ │ │ │ │ │ ├── python_highlight_rules.js
│ │ │ │ │ │ ├── python_test.js
│ │ │ │ │ │ ├── ruby.js
│ │ │ │ │ │ ├── ruby_highlight_rules.js
│ │ │ │ │ │ ├── ruby_highlight_rules_test.js
│ │ │ │ │ │ ├── scad.js
│ │ │ │ │ │ ├── scad_highlight_rules.js
│ │ │ │ │ │ ├── scala.js
│ │ │ │ │ │ ├── scala_highlight_rules.js
│ │ │ │ │ │ ├── scss.js
│ │ │ │ │ │ ├── scss_highlight_rules.js
│ │ │ │ │ │ ├── sh.js
│ │ │ │ │ │ ├── sh_highlight_rules.js
│ │ │ │ │ │ ├── sql.js
│ │ │ │ │ │ ├── sql_highlight_rules.js
│ │ │ │ │ │ ├── svg.js
│ │ │ │ │ │ ├── svg_highlight_rules.js
│ │ │ │ │ │ ├── text.js
│ │ │ │ │ │ ├── text_highlight_rules.js
│ │ │ │ │ │ ├── text_test.js
│ │ │ │ │ │ ├── textile.js
│ │ │ │ │ │ ├── textile_highlight_rules.js
│ │ │ │ │ │ ├── xml.js
│ │ │ │ │ │ ├── xml_highlight_rules.js
│ │ │ │ │ │ ├── xml_highlight_rules_test.js
│ │ │ │ │ │ ├── xml_test.js
│ │ │ │ │ │ ├── xml_util.js
│ │ │ │ │ │ ├── xquery.js
│ │ │ │ │ │ └── xquery_highlight_rules.js
│ │ │ │ │ ├── model/
│ │ │ │ │ │ └── editor.js
│ │ │ │ │ ├── mouse/
│ │ │ │ │ │ ├── default_gutter_handler.js
│ │ │ │ │ │ ├── default_handlers.js
│ │ │ │ │ │ ├── dragdrop.js
│ │ │ │ │ │ ├── fold_handler.js
│ │ │ │ │ │ ├── mouse_event.js
│ │ │ │ │ │ ├── mouse_handler.js
│ │ │ │ │ │ └── multi_select_handler.js
│ │ │ │ │ ├── multi_select.js
│ │ │ │ │ ├── multi_select_test.js
│ │ │ │ │ ├── narcissus/
│ │ │ │ │ │ ├── definitions.js
│ │ │ │ │ │ ├── lexer.js
│ │ │ │ │ │ ├── options.js
│ │ │ │ │ │ └── parser.js
│ │ │ │ │ ├── placeholder.js
│ │ │ │ │ ├── placeholder_test.js
│ │ │ │ │ ├── range.js
│ │ │ │ │ ├── range_list.js
│ │ │ │ │ ├── range_list_test.js
│ │ │ │ │ ├── range_test.js
│ │ │ │ │ ├── renderloop.js
│ │ │ │ │ ├── requirejs/
│ │ │ │ │ │ └── text.js
│ │ │ │ │ ├── scrollbar.js
│ │ │ │ │ ├── search.js
│ │ │ │ │ ├── search_test.js
│ │ │ │ │ ├── selection.js
│ │ │ │ │ ├── selection_test.js
│ │ │ │ │ ├── split.js
│ │ │ │ │ ├── test/
│ │ │ │ │ │ ├── all.js
│ │ │ │ │ │ ├── all_browser.js
│ │ │ │ │ │ ├── assertions.js
│ │ │ │ │ │ ├── asyncjs/
│ │ │ │ │ │ │ ├── assert.js
│ │ │ │ │ │ │ ├── async.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ │ └── utils.js
│ │ │ │ │ │ ├── benchmark.js
│ │ │ │ │ │ ├── mockdom.js
│ │ │ │ │ │ ├── mockrenderer.js
│ │ │ │ │ │ └── tests.html
│ │ │ │ │ ├── theme/
│ │ │ │ │ │ ├── chrome.js
│ │ │ │ │ │ ├── clouds.js
│ │ │ │ │ │ ├── clouds_midnight.js
│ │ │ │ │ │ ├── cobalt.js
│ │ │ │ │ │ ├── crimson_editor.js
│ │ │ │ │ │ ├── dawn.js
│ │ │ │ │ │ ├── dreamweaver.js
│ │ │ │ │ │ ├── eclipse.js
│ │ │ │ │ │ ├── idle_fingers.js
│ │ │ │ │ │ ├── kr_theme.js
│ │ │ │ │ │ ├── merbivore.js
│ │ │ │ │ │ ├── merbivore_soft.js
│ │ │ │ │ │ ├── mono_industrial.js
│ │ │ │ │ │ ├── monokai.js
│ │ │ │ │ │ ├── pastel_on_dark.js
│ │ │ │ │ │ ├── solarized_dark.js
│ │ │ │ │ │ ├── solarized_light.js
│ │ │ │ │ │ ├── textmate.js
│ │ │ │ │ │ ├── tomorrow.js
│ │ │ │ │ │ ├── tomorrow_night.js
│ │ │ │ │ │ ├── tomorrow_night_blue.js
│ │ │ │ │ │ ├── tomorrow_night_bright.js
│ │ │ │ │ │ ├── tomorrow_night_eighties.js
│ │ │ │ │ │ ├── twilight.js
│ │ │ │ │ │ └── vibrant_ink.js
│ │ │ │ │ ├── token_iterator.js
│ │ │ │ │ ├── token_iterator_test.js
│ │ │ │ │ ├── tokenizer.js
│ │ │ │ │ ├── undomanager.js
│ │ │ │ │ ├── unicode.js
│ │ │ │ │ ├── virtual_renderer.js
│ │ │ │ │ ├── virtual_renderer_test.js
│ │ │ │ │ └── worker/
│ │ │ │ │ ├── jshint.js
│ │ │ │ │ ├── jslint.js
│ │ │ │ │ ├── mirror.js
│ │ │ │ │ ├── worker.js
│ │ │ │ │ └── worker_client.js
│ │ │ │ └── pilot/
│ │ │ │ ├── browser_focus.js
│ │ │ │ ├── canon.js
│ │ │ │ ├── dom.js
│ │ │ │ ├── event.js
│ │ │ │ ├── event_emitter.js
│ │ │ │ ├── fixoldbrowsers.js
│ │ │ │ ├── index.js
│ │ │ │ ├── keys.js
│ │ │ │ ├── lang.js
│ │ │ │ ├── oop.js
│ │ │ │ └── useragent.js
│ │ │ ├── manifest.json
│ │ │ ├── modes.js
│ │ │ ├── require.js
│ │ │ ├── require_config.js
│ │ │ └── styles.css
│ │ ├── todomvc/
│ │ │ ├── background.js
│ │ │ ├── bower.json
│ │ │ ├── bower_components/
│ │ │ │ ├── director/
│ │ │ │ │ └── build/
│ │ │ │ │ └── director.js
│ │ │ │ └── todomvc-common/
│ │ │ │ └── base.css
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ ├── alarms.js
│ │ │ │ ├── app.js
│ │ │ │ ├── bootstrap.js
│ │ │ │ ├── controller.js
│ │ │ │ ├── export.js
│ │ │ │ ├── helpers.js
│ │ │ │ ├── model.js
│ │ │ │ ├── store.js
│ │ │ │ └── view.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ └── styles.css
│ │ ├── tts/
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── ttsdemo.css
│ │ │ ├── ttsdemo.html
│ │ │ └── ttsdemo.js
│ │ ├── udp/
│ │ │ ├── README.md
│ │ │ ├── demo.js
│ │ │ ├── echo_mco.html
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── mco.js
│ │ │ ├── networking.js
│ │ │ ├── raf.js
│ │ │ ├── sample_support_metadata.json
│ │ │ └── server/
│ │ │ └── dropping-server.js
│ │ ├── url-handler/
│ │ │ ├── README.md
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── usb/
│ │ │ ├── device-info/
│ │ │ │ ├── README.md
│ │ │ │ ├── background.js
│ │ │ │ ├── index.html
│ │ │ │ ├── manifest.json
│ │ │ │ ├── script.js
│ │ │ │ └── style.css
│ │ │ └── knob/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── knob.html
│ │ │ ├── knob.js
│ │ │ └── manifest.json
│ │ ├── usb-label-printer/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── dettach_kernel_driver.py
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── weather/
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ └── iscroll.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ ├── style.css
│ │ │ ├── weather.html
│ │ │ └── weather.js
│ │ ├── web-store/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── css/
│ │ │ │ └── index.css
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ ├── index.js
│ │ │ │ ├── webstore.js
│ │ │ │ └── zip/
│ │ │ │ ├── deflate.js
│ │ │ │ ├── inflate.js
│ │ │ │ └── zip.js
│ │ │ └── manifest.json
│ │ ├── webgl-pointer-lock/
│ │ │ ├── README.md
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ ├── Detector.js
│ │ │ │ └── showlogo3d.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── obj/
│ │ │ │ └── html5rocks.js
│ │ │ └── styles/
│ │ │ └── main.css
│ │ ├── webserver/
│ │ │ ├── README.md
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ └── styles/
│ │ │ ├── bootstrap.css
│ │ │ └── main.css
│ │ ├── websocket-server/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── http.js
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── manifest.json
│ │ │ ├── sample_support_metadata.json
│ │ │ └── sha1.js
│ │ ├── webview-samples/
│ │ │ ├── browser/
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── browser.js
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ ├── declarative-web-request/
│ │ │ │ ├── README.md
│ │ │ │ ├── blocked.css
│ │ │ │ ├── blocked.html
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── config.js
│ │ │ │ ├── content_blocker.js
│ │ │ │ ├── content_blocker_main.js
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ ├── insert-css/
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── config.js
│ │ │ │ ├── css.js
│ │ │ │ ├── css_main.js
│ │ │ │ ├── inject.css
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ ├── local-resources/
│ │ │ │ ├── README.md
│ │ │ │ ├── app.css
│ │ │ │ ├── bad_app.html
│ │ │ │ ├── crash.js
│ │ │ │ ├── good_app.html
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ └── trusted.html
│ │ │ ├── multi-tab-browser/
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── browser.js
│ │ │ │ ├── browser_main.js
│ │ │ │ ├── config.js
│ │ │ │ ├── context_menu.js
│ │ │ │ ├── exit_box_controller.js
│ │ │ │ ├── find_box_controller.js
│ │ │ │ ├── guest_messaging.js
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── permission_box_controller.js
│ │ │ │ ├── popup.js
│ │ │ │ ├── tabs.js
│ │ │ │ └── zoom_box_controller.js
│ │ │ ├── new-window/
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── browser.js
│ │ │ │ ├── browser_main.js
│ │ │ │ ├── config.js
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.js
│ │ │ │ ├── tabs.js
│ │ │ │ └── title.js
│ │ │ ├── new-window-user-agent/
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── browser.js
│ │ │ │ ├── browser_main.js
│ │ │ │ ├── config.js
│ │ │ │ ├── context_menu.js
│ │ │ │ ├── guest_messaging.js
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.js
│ │ │ │ └── tabs.js
│ │ │ ├── shared-script/
│ │ │ │ ├── README.md
│ │ │ │ ├── app.css
│ │ │ │ ├── correct_injection.html
│ │ │ │ ├── correct_injection.js
│ │ │ │ ├── incorrect_injection.html
│ │ │ │ ├── incorrect_injection.js
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ └── more_dragons.js
│ │ │ ├── user-agent/
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.css
│ │ │ │ ├── browser.html
│ │ │ │ ├── browser.js
│ │ │ │ ├── browser_bindings.js
│ │ │ │ ├── config.js
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ └── webview/
│ │ │ ├── README.md
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ ├── manifest.json
│ │ │ └── page_hosted_in_external_server.html
│ │ ├── window-options/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── css/
│ │ │ │ └── window.css
│ │ │ ├── icon_128.xcf
│ │ │ ├── manifest.json
│ │ │ ├── window.html
│ │ │ └── window.js
│ │ ├── window-state/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── icon_128.xcf
│ │ │ ├── manifest.json
│ │ │ ├── window.css
│ │ │ ├── window.html
│ │ │ └── window.js
│ │ └── windows/
│ │ ├── README.md
│ │ ├── copycat.html
│ │ ├── main.js
│ │ ├── manifest.json
│ │ ├── original.html
│ │ ├── scripts/
│ │ │ └── window.js
│ │ └── styles/
│ │ └── window.css
│ └── mv2/
│ ├── api/
│ │ ├── bookmarks/
│ │ │ └── basic/
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── browserAction/
│ │ │ ├── make_page_red/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ ├── print/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ ├── set_icon_path/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ └── set_page_color/
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── browsingData/
│ │ │ └── basic/
│ │ │ ├── manifest.json
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── commands/
│ │ │ ├── background.js
│ │ │ ├── browser_action.html
│ │ │ └── manifest.json
│ │ ├── contentSettings/
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── contextMenus/
│ │ │ ├── basic/
│ │ │ │ ├── manifest.json
│ │ │ │ └── sample.js
│ │ │ ├── event_page/
│ │ │ │ ├── manifest.json
│ │ │ │ └── sample.js
│ │ │ └── global_context_search/
│ │ │ ├── background.js
│ │ │ ├── locales.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ └── options.js
│ │ ├── cookies/
│ │ │ ├── background.js
│ │ │ ├── manager.html
│ │ │ ├── manager.js
│ │ │ └── manifest.json
│ │ ├── debugger/
│ │ │ ├── live-headers/
│ │ │ │ ├── background.js
│ │ │ │ ├── headers.html
│ │ │ │ ├── headers.js
│ │ │ │ └── manifest.json
│ │ │ └── pause-resume/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── default_command_override/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── desktopCapture/
│ │ │ ├── app.js
│ │ │ ├── background.js
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── deviceInfo/
│ │ │ └── basic/
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── devtools/
│ │ │ ├── network/
│ │ │ │ └── chrome-firephp/
│ │ │ │ ├── background.js
│ │ │ │ ├── devtools.html
│ │ │ │ ├── devtools.js
│ │ │ │ └── manifest.json
│ │ │ └── panels/
│ │ │ └── chrome-query/
│ │ │ ├── devtools.html
│ │ │ ├── devtools.js
│ │ │ └── manifest.json
│ │ ├── displaySource/
│ │ │ └── tabCast/
│ │ │ ├── README
│ │ │ ├── background.js
│ │ │ ├── main.css
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── document_scan/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── scan.css
│ │ │ ├── scan.html
│ │ │ └── scan.js
│ │ ├── downloads/
│ │ │ ├── download_filename_controller/
│ │ │ │ ├── bg.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── options.html
│ │ │ │ └── options.js
│ │ │ ├── download_links/
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.html
│ │ │ │ ├── popup.js
│ │ │ │ └── send_links.js
│ │ │ ├── download_manager/
│ │ │ │ ├── _locales/
│ │ │ │ │ └── en/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── background.js
│ │ │ │ ├── icons.html
│ │ │ │ ├── icons.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.css
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ ├── download_open/
│ │ │ │ ├── _locales/
│ │ │ │ │ └── en/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ └── downloads_overwrite/
│ │ │ ├── bg.js
│ │ │ └── manifest.json
│ │ ├── eventPage/
│ │ │ └── basic/
│ │ │ ├── background.js
│ │ │ ├── content.js
│ │ │ └── manifest.json
│ │ ├── extension/
│ │ │ └── isAllowedAccess/
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ ├── popup.js
│ │ │ └── sample.css
│ │ ├── fileSystemProvider/
│ │ │ ├── archive/
│ │ │ │ ├── background.js
│ │ │ │ ├── example1.fake
│ │ │ │ ├── example2.fake
│ │ │ │ └── manifest.json
│ │ │ └── basic/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── fontSettings/
│ │ │ ├── css/
│ │ │ │ ├── chrome_shared.css
│ │ │ │ ├── overlay.css
│ │ │ │ ├── uber_shared.css
│ │ │ │ └── widgets.css
│ │ │ ├── js/
│ │ │ │ ├── cr/
│ │ │ │ │ ├── ui/
│ │ │ │ │ │ └── overlay.js
│ │ │ │ │ └── ui.js
│ │ │ │ └── cr.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ ├── pending_changes.js
│ │ │ ├── slider.css
│ │ │ └── slider.js
│ │ ├── history/
│ │ │ ├── historyOverride/
│ │ │ │ ├── history.html
│ │ │ │ ├── logic.js
│ │ │ │ ├── manifest.json
│ │ │ │ └── style.css
│ │ │ └── showHistory/
│ │ │ ├── manifest.json
│ │ │ ├── typedUrls.html
│ │ │ └── typedUrls.js
│ │ ├── i18n/
│ │ │ ├── cld/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ ├── detectLanguage/
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ ├── getMessage/
│ │ │ │ ├── _locales/
│ │ │ │ │ ├── en_US/
│ │ │ │ │ │ └── messages.json
│ │ │ │ │ ├── es/
│ │ │ │ │ │ └── messages.json
│ │ │ │ │ └── sr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ └── localizedHostedApp/
│ │ │ ├── _locales/
│ │ │ │ ├── de/
│ │ │ │ │ └── messages.json
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ └── manifest.json
│ │ ├── idle/
│ │ │ └── idle_simple/
│ │ │ ├── background.js
│ │ │ ├── history.html
│ │ │ ├── history.js
│ │ │ └── manifest.json
│ │ ├── input.ime/
│ │ │ └── basic/
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ ├── messaging/
│ │ │ └── timer/
│ │ │ ├── manifest.json
│ │ │ ├── page.js
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── nativeMessaging/
│ │ │ ├── README.md
│ │ │ ├── app/
│ │ │ │ ├── main.html
│ │ │ │ ├── main.js
│ │ │ │ └── manifest.json
│ │ │ └── host/
│ │ │ ├── com.google.chrome.example.echo-win.json
│ │ │ ├── com.google.chrome.example.echo.json
│ │ │ ├── install_host.bat
│ │ │ ├── install_host.sh
│ │ │ ├── native-messaging-example-host
│ │ │ ├── native-messaging-example-host.bat
│ │ │ ├── uninstall_host.bat
│ │ │ └── uninstall_host.sh
│ │ ├── notifications/
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ └── style.css
│ │ ├── omnibox/
│ │ │ ├── newtab_search/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ └── simple-example/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── override/
│ │ │ ├── blank_ntp/
│ │ │ │ ├── blank.html
│ │ │ │ └── manifest.json
│ │ │ └── override_igoogle/
│ │ │ ├── manifest.json
│ │ │ └── redirect.html
│ │ ├── pageAction/
│ │ │ ├── pageaction_by_content/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ ├── pageaction_by_url/
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ └── set_icon/
│ │ │ ├── background.html
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── permissions/
│ │ │ ├── extension-questions/
│ │ │ │ ├── manifest.json
│ │ │ │ ├── options.html
│ │ │ │ ├── options.js
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ └── extension-questions.crx
│ │ ├── power/
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── preferences/
│ │ │ ├── allowThirdPartyCookies/
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.css
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ └── enableReferrer/
│ │ │ ├── manifest.json
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── printing/
│ │ │ ├── manifest.json
│ │ │ ├── printers.css
│ │ │ ├── printers.html
│ │ │ └── printers.js
│ │ ├── printingMetrics/
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── print_jobs.css
│ │ │ ├── print_jobs.html
│ │ │ └── print_jobs.js
│ │ ├── processes/
│ │ │ ├── process_monitor/
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ └── show_tabs/
│ │ │ ├── manifest.json
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── storage/
│ │ │ └── stylizr/
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── tabCapture/
│ │ │ ├── eventPage.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ ├── receiver.html
│ │ │ └── receiver.js
│ │ ├── tabs/
│ │ │ ├── inspector/
│ │ │ │ ├── background.js
│ │ │ │ ├── jstemplate_compiled.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── tabs_api.html
│ │ │ │ └── tabs_api.js
│ │ │ ├── pin/
│ │ │ │ ├── README
│ │ │ │ ├── background.js
│ │ │ │ └── manifest.json
│ │ │ ├── screenshot/
│ │ │ │ ├── background.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── screenshot.html
│ │ │ │ └── screenshot.js
│ │ │ └── zoom/
│ │ │ ├── README
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── topsites/
│ │ │ ├── basic/
│ │ │ │ ├── manifest.json
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ └── magic8ball/
│ │ │ ├── manifest.json
│ │ │ ├── newTab.css
│ │ │ ├── newTab.html
│ │ │ └── newTab.js
│ │ ├── ttsEngine/
│ │ │ └── console_tts_engine/
│ │ │ ├── console_tts_engine.html
│ │ │ ├── console_tts_engine.js
│ │ │ └── manifest.json
│ │ ├── water_alarm_notification/
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── webNavigation/
│ │ │ └── basic/
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── navigation_collector.js
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── webview/
│ │ │ ├── capturevisibleregion/
│ │ │ │ ├── display.html
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ ├── test.html
│ │ │ │ ├── test.js
│ │ │ │ └── test2.html
│ │ │ ├── comm_demo_app/
│ │ │ │ ├── app.js
│ │ │ │ ├── main.js
│ │ │ │ ├── manifest.json
│ │ │ │ └── test.html
│ │ │ └── comm_demo_ext/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ └── windows/
│ │ └── merge_windows/
│ │ ├── NOTICE
│ │ ├── background.js
│ │ └── manifest.json
│ ├── extensions/
│ │ ├── app_launcher/
│ │ │ ├── manifest.json
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── buildbot/
│ │ │ ├── active_issues.js
│ │ │ ├── bg.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ ├── popup.js
│ │ │ ├── prefs.js
│ │ │ ├── try_status.js
│ │ │ └── utils.js
│ │ ├── calendar/
│ │ │ ├── _locales/
│ │ │ │ ├── ar/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── bg/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ca/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── cs/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── da/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── de/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── el/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── en/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── en_GB/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── es/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── es_419/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── et/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── fi/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── fil/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── fr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── he/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── hi/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── hr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── hu/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── id/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── it/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ja/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ko/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── lt/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── lv/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── nb/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── nl/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── pl/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── pt_BR/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── pt_PT/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ro/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ru/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sk/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sl/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sv/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── th/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── tr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── uk/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── vi/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── zh_CN/
│ │ │ │ │ └── messages.json
│ │ │ │ └── zh_TW/
│ │ │ │ └── messages.json
│ │ │ ├── javascript/
│ │ │ │ ├── background.js
│ │ │ │ └── options.js
│ │ │ ├── manifest.json
│ │ │ └── views/
│ │ │ └── options.html
│ │ ├── catblock/
│ │ │ ├── background.js
│ │ │ ├── loldogs.js
│ │ │ └── manifest.json
│ │ ├── catifier/
│ │ │ ├── event_page.js
│ │ │ └── manifest.json
│ │ ├── chrome_search/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── constant_context/
│ │ │ ├── background.js
│ │ │ ├── content_script.js
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── download_images/
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── email_this_page/
│ │ │ ├── background.js
│ │ │ ├── content_script.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ └── options.js
│ │ ├── fx/
│ │ │ ├── bg.js
│ │ │ ├── content.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ └── options.js
│ │ ├── gdocs/
│ │ │ ├── README
│ │ │ ├── background.html
│ │ │ ├── chrome_ex_oauth.html
│ │ │ ├── chrome_ex_oauth.js
│ │ │ ├── chrome_ex_oauthsimple.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ └── popup.html
│ │ ├── gmail/
│ │ │ ├── _locales/
│ │ │ │ ├── ar/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── bg/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ca/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── cs/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── da/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── de/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── el/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── en/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── en_GB/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── es/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── es_419/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── et/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── fi/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── fil/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── fr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── he/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── hi/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── hr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── hu/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── id/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── it/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ja/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ko/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── lt/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── lv/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── nb/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── nl/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── pl/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── pt_BR/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── pt_PT/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ro/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── ru/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sk/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sl/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── sv/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── th/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── tr/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── uk/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── vi/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── zh_CN/
│ │ │ │ │ └── messages.json
│ │ │ │ └── zh_TW/
│ │ │ │ └── messages.json
│ │ │ ├── background.html
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── imageinfo/
│ │ │ ├── NOTICE
│ │ │ ├── background.js
│ │ │ ├── imageinfo/
│ │ │ │ ├── binaryajax.js
│ │ │ │ ├── exif.js
│ │ │ │ ├── imageinfo.js
│ │ │ │ └── readme.txt
│ │ │ ├── info.css
│ │ │ ├── info.html
│ │ │ ├── info.js
│ │ │ └── manifest.json
│ │ ├── irc/
│ │ │ ├── README.txt
│ │ │ ├── app/
│ │ │ │ └── manifest.json
│ │ │ ├── conf/
│ │ │ │ ├── irc.xml
│ │ │ │ ├── jetty.xml
│ │ │ │ └── webdefault.xml
│ │ │ └── servlet/
│ │ │ ├── WEB-INF/
│ │ │ │ └── web.xml
│ │ │ ├── addChannel.html
│ │ │ ├── addServer.html
│ │ │ ├── index.html
│ │ │ ├── irc.js
│ │ │ ├── jstemplate/
│ │ │ │ ├── jsevalcontext.js
│ │ │ │ ├── jstemplate.js
│ │ │ │ └── util.js
│ │ │ ├── notification.html
│ │ │ ├── src/
│ │ │ │ └── org/
│ │ │ │ └── chromium/
│ │ │ │ └── IRCProxyWebSocket.java
│ │ │ ├── styles.css
│ │ │ └── util.js
│ │ ├── managed_bookmarks/
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ └── schema.json
│ │ ├── mappy/
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── mappy_content_script.js
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── maps_app/
│ │ │ └── manifest.json
│ │ ├── news/
│ │ │ ├── README
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── css/
│ │ │ │ ├── feed.css
│ │ │ │ └── options.css
│ │ │ ├── javascript/
│ │ │ │ ├── feed.js
│ │ │ │ ├── options.js
│ │ │ │ └── util.js
│ │ │ ├── manifest.json
│ │ │ └── views/
│ │ │ ├── background.html
│ │ │ ├── feed.html
│ │ │ └── options.html
│ │ ├── news_a11y/
│ │ │ ├── README
│ │ │ ├── feed.css
│ │ │ ├── feed.html
│ │ │ ├── feed.js
│ │ │ ├── feed_iframe.css
│ │ │ ├── feed_iframe.js
│ │ │ └── manifest.json
│ │ ├── news_i18n/
│ │ │ ├── README
│ │ │ ├── _locales/
│ │ │ │ ├── en/
│ │ │ │ │ └── messages.json
│ │ │ │ ├── es/
│ │ │ │ │ └── messages.json
│ │ │ │ └── sr/
│ │ │ │ └── messages.json
│ │ │ ├── feed.css
│ │ │ ├── feed.html
│ │ │ ├── feed.js
│ │ │ └── manifest.json
│ │ ├── no_cookies/
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ ├── oauth_contacts/
│ │ │ ├── NOTICE
│ │ │ ├── README
│ │ │ ├── background.js
│ │ │ ├── chrome_ex_oauth.html
│ │ │ ├── chrome_ex_oauth.js
│ │ │ ├── chrome_ex_oauthsimple.js
│ │ │ ├── contacts.html
│ │ │ ├── contacts.js
│ │ │ ├── manifest.json
│ │ │ └── onload.js
│ │ ├── optional_permissions/
│ │ │ ├── logic.js
│ │ │ ├── manifest.json
│ │ │ ├── newtab.html
│ │ │ └── style.css
│ │ ├── plugin_settings/
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── css/
│ │ │ │ ├── plugin_list.css
│ │ │ │ └── rule_list.css
│ │ │ ├── domui/
│ │ │ │ ├── css/
│ │ │ │ │ ├── button.css
│ │ │ │ │ ├── chrome_shared.css
│ │ │ │ │ ├── list.css
│ │ │ │ │ └── select.css
│ │ │ │ └── js/
│ │ │ │ ├── cr/
│ │ │ │ │ ├── event_target.js
│ │ │ │ │ ├── ui/
│ │ │ │ │ │ ├── array_data_model.js
│ │ │ │ │ │ ├── list.js
│ │ │ │ │ │ ├── list_item.js
│ │ │ │ │ │ ├── list_selection_controller.js
│ │ │ │ │ │ ├── list_selection_model.js
│ │ │ │ │ │ └── list_single_selection_model.js
│ │ │ │ │ └── ui.js
│ │ │ │ ├── cr.js
│ │ │ │ └── util.js
│ │ │ ├── js/
│ │ │ │ ├── chrome_stubs.js
│ │ │ │ ├── main.js
│ │ │ │ ├── plugin_list.js
│ │ │ │ ├── plugin_list_test.html
│ │ │ │ ├── plugin_settings.js
│ │ │ │ ├── plugin_settings_test.html
│ │ │ │ ├── rule_list.js
│ │ │ │ └── rule_list_test.html
│ │ │ ├── manifest.json
│ │ │ ├── options/
│ │ │ │ ├── css/
│ │ │ │ │ └── list.css
│ │ │ │ └── js/
│ │ │ │ ├── deletable_item_list.js
│ │ │ │ └── inline_editable_list.js
│ │ │ └── options.html
│ │ ├── proxy_configuration/
│ │ │ ├── _locales/
│ │ │ │ └── en/
│ │ │ │ └── messages.json
│ │ │ ├── background.js
│ │ │ ├── manifest.json
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ ├── popup.js
│ │ │ ├── proxy_error_handler.js
│ │ │ ├── proxy_form_controller.js
│ │ │ └── test/
│ │ │ ├── jsunittest.js
│ │ │ ├── proxy_form_controller_test.html
│ │ │ ├── proxy_form_controller_test.js
│ │ │ └── unittest.css
│ │ ├── speak_selection/
│ │ │ ├── background.js
│ │ │ ├── content_script.js
│ │ │ ├── keycodes.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ └── tabs.js
│ │ ├── talking_alarm_clock/
│ │ │ ├── audio/
│ │ │ │ ├── cuckoo.ogg
│ │ │ │ ├── digital.ogg
│ │ │ │ ├── metal.ogg
│ │ │ │ ├── ringing.ogg
│ │ │ │ └── rooster.ogg
│ │ │ ├── background.js
│ │ │ ├── common.js
│ │ │ ├── credits.html
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── ttsdebug/
│ │ │ ├── manifest.json
│ │ │ ├── ttsdebug.css
│ │ │ ├── ttsdebug.html
│ │ │ └── ttsdebug.js
│ │ └── ttsdemo/
│ │ ├── manifest.json
│ │ ├── ttsdemo.html
│ │ └── ttsdemo.js
│ ├── howto/
│ │ ├── sandbox/
│ │ │ ├── LICENSE.handlebars
│ │ │ ├── eventpage.html
│ │ │ ├── eventpage.js
│ │ │ ├── handlebars-1.0.0.beta.6.js
│ │ │ ├── manifest.json
│ │ │ └── sandbox.html
│ │ └── tab_shortcuts/
│ │ ├── manifest.json
│ │ └── tab_shortcuts.js
│ ├── readme.md
│ └── tutorials/
│ ├── analytics/
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── broken_background_color/
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── popup.html
│ │ └── popup.js
│ ├── get_started/
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── popup.html
│ │ └── popup.js
│ ├── get_started_complete/
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── popup.html
│ │ └── popup.js
│ ├── getstarted/
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── hello_extensions/
│ │ ├── hello.html
│ │ └── manifest.json
│ ├── oauth_starter/
│ │ ├── background.js
│ │ ├── index.html
│ │ ├── manifest.json
│ │ └── oauth.js
│ └── oauth_tutorial_complete/
│ ├── background.js
│ ├── index.html
│ ├── manifest.json
│ └── oauth.js
├── api-samples/
│ ├── action/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── demo/
│ │ │ ├── index.css
│ │ │ ├── index.html
│ │ │ └── index.js
│ │ ├── manifest.json
│ │ ├── popups/
│ │ │ ├── a.html
│ │ │ ├── b.html
│ │ │ └── popup.html
│ │ └── third-party/
│ │ └── awsm/
│ │ └── awsm.css
│ ├── alarms/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── bg-wrapper.js
│ │ ├── index.css
│ │ ├── index.html
│ │ ├── index.js
│ │ └── manifest.json
│ ├── bookmarks/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── browsingData/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.css
│ │ ├── popup.html
│ │ └── popup.js
│ ├── commands/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── popup.css
│ │ ├── popup.html
│ │ └── popup.js
│ ├── contentSettings/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── contextMenus/
│ │ ├── basic/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ └── sample.js
│ │ └── global_context_search/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── locales.js
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── cookies/
│ │ └── cookie-clearer/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── debugger/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── declarativeNetRequest/
│ │ ├── no-cookies/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ ├── rules_1.json
│ │ │ └── service-worker.js
│ │ ├── url-blocker/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ ├── rules_1.json
│ │ │ └── service_worker.js
│ │ └── url-redirect/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── rules_1.json
│ │ └── service_worker.js
│ ├── default_command_override/
│ │ ├── README.md
│ │ ├── background.js
│ │ └── manifest.json
│ ├── devtools/
│ │ ├── inspectedWindow/
│ │ │ ├── README.md
│ │ │ ├── devtools.html
│ │ │ ├── devtools.js
│ │ │ ├── manifest.json
│ │ │ ├── panel.html
│ │ │ └── panel.js
│ │ └── panels/
│ │ ├── devtools.html
│ │ ├── devtools.js
│ │ ├── manifest.json
│ │ └── readme.md
│ ├── favicon/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── fontSettings/
│ │ ├── fontSettings Advanced/
│ │ │ ├── README.md
│ │ │ ├── css/
│ │ │ │ ├── chrome_shared.css
│ │ │ │ ├── overlay.css
│ │ │ │ ├── uber_shared.css
│ │ │ │ └── widgets.css
│ │ │ ├── js/
│ │ │ │ ├── cr/
│ │ │ │ │ ├── ui/
│ │ │ │ │ │ └── overlay.js
│ │ │ │ │ └── ui.js
│ │ │ │ └── cr.js
│ │ │ ├── manifest.json
│ │ │ ├── options.html
│ │ │ ├── options.js
│ │ │ ├── pending_changes.js
│ │ │ ├── slider.css
│ │ │ └── slider.js
│ │ └── fontSettings Basic/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── history/
│ │ ├── historyOverride/
│ │ │ ├── README.md
│ │ │ ├── history.html
│ │ │ ├── logic.js
│ │ │ ├── manifest.json
│ │ │ └── style.css
│ │ └── showHistory/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ ├── popup.js
│ │ └── service-worker.js
│ ├── identity/
│ │ ├── README.md
│ │ ├── identity.js
│ │ ├── index.html
│ │ ├── main.js
│ │ ├── manifest.json
│ │ └── style.css
│ ├── idle/
│ │ ├── README.md
│ │ ├── history.html
│ │ ├── history.js
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── il8n/
│ │ ├── README.md
│ │ ├── _locales/
│ │ │ ├── en/
│ │ │ │ └── messages.json
│ │ │ └── fr/
│ │ │ └── messages.json
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── nativeMessaging/
│ │ ├── README.md
│ │ ├── extension/
│ │ │ ├── main.html
│ │ │ ├── main.js
│ │ │ └── manifest.json
│ │ └── host/
│ │ ├── com.google.chrome.example.echo-win.json
│ │ ├── com.google.chrome.example.echo.json
│ │ ├── install_host.bat
│ │ ├── install_host.sh
│ │ ├── native-messaging-example-host
│ │ ├── native-messaging-example-host.bat
│ │ ├── uninstall_host.bat
│ │ └── uninstall_host.sh
│ ├── omnibox/
│ │ ├── new-tab-search/
│ │ │ ├── README.md
│ │ │ ├── background.js
│ │ │ └── manifest.json
│ │ └── simple-example/
│ │ ├── README.md
│ │ ├── logs.css
│ │ ├── logs.html
│ │ ├── logs.js
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── override/
│ │ └── blank_ntp/
│ │ ├── README.md
│ │ ├── blank.html
│ │ └── manifest.json
│ ├── power/
│ │ ├── README.md
│ │ ├── _locales/
│ │ │ └── en/
│ │ │ └── messages.json
│ │ ├── background.js
│ │ └── manifest.json
│ ├── printing/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── printers.css
│ │ ├── printers.html
│ │ └── printers.js
│ ├── privacy/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── readingList/
│ │ ├── README.md
│ │ ├── index.css
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── manifest.json
│ │ └── sw.js
│ ├── richNotification/
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ ├── popup.js
│ │ └── readme.md
│ ├── sandbox/
│ │ ├── sandbox/
│ │ │ ├── LICENSE.handlebars
│ │ │ ├── handlebars-1.0.0.beta.6.js
│ │ │ ├── mainpage.html
│ │ │ ├── mainpage.js
│ │ │ ├── manifest.json
│ │ │ ├── sandbox.html
│ │ │ ├── sandbox.md
│ │ │ ├── service-worker.js
│ │ │ └── styles/
│ │ │ └── main.css
│ │ └── sandboxed-content/
│ │ ├── README.md
│ │ ├── main.html
│ │ ├── manifest.json
│ │ ├── sandboxed.html
│ │ ├── service-worker.js
│ │ └── styles/
│ │ └── main.css
│ ├── scripting/
│ │ ├── README.md
│ │ ├── content-script.js
│ │ ├── index.css
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── manifest.json
│ │ └── sw.js
│ ├── storage/
│ │ └── stylizr/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── popup.html
│ │ └── popup.js
│ ├── tabCapture/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── receiver.html
│ │ ├── receiver.js
│ │ └── service-worker.js
│ ├── tabs/
│ │ ├── inspector/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ ├── service-worker.js
│ │ │ ├── window_and_tabs_manager.css
│ │ │ ├── window_and_tabs_manager.html
│ │ │ └── window_and_tabs_manager.js
│ │ ├── pin/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ └── service-worker.js
│ │ ├── screenshot/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ ├── screenshot.html
│ │ │ ├── screenshot.js
│ │ │ └── service-worker.js
│ │ └── zoom/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ ├── popup.js
│ │ └── service-worker.js
│ ├── topSites/
│ │ ├── basic/
│ │ │ ├── README.md
│ │ │ ├── manifest.json
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ └── magic8ball/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── newTab.css
│ │ ├── newTab.html
│ │ └── newTab.js
│ ├── userScripts/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── options.css
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── sw.js
│ │ └── user-script.js
│ ├── web-accessible-resources/
│ │ ├── README.md
│ │ ├── content-script.js
│ │ ├── index.html
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── webNavigation/
│ │ └── basic/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── webRequest/
│ │ └── http-auth/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── service-worker.js
│ └── windows/
│ ├── README.md
│ ├── background.js
│ └── manifest.json
├── eslint.config.js
├── functional-samples/
│ ├── ai.gemini-in-the-cloud/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── package.json
│ │ └── sidepanel/
│ │ ├── index.css
│ │ ├── index.html
│ │ └── index.js
│ ├── ai.gemini-on-device/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── package.json
│ │ ├── privacy.txt
│ │ ├── rollup.config.mjs
│ │ └── sidepanel/
│ │ ├── index.css
│ │ ├── index.html
│ │ └── index.js
│ ├── ai.gemini-on-device-alt-texter/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── ai.gemini-on-device-audio-scribe/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── bridge.js
│ │ ├── demo-chat-app/
│ │ │ ├── index.html
│ │ │ ├── script.js
│ │ │ └── style.css
│ │ ├── manifest.json
│ │ ├── override-createobject-url.js
│ │ ├── sidepanel.html
│ │ └── sidepanel.js
│ ├── ai.gemini-on-device-calendar-mate/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── package.json
│ │ └── rollup.config.mjs
│ ├── ai.gemini-on-device-summarization/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── package.json
│ │ ├── rollup.config.mjs
│ │ ├── scripts/
│ │ │ └── extract-content.js
│ │ └── sidepanel/
│ │ ├── index.css
│ │ ├── index.html
│ │ └── index.js
│ ├── cookbook.file_handlers/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── view-file.html
│ │ └── view-file.js
│ ├── cookbook.geolocation-contentscript/
│ │ ├── README.md
│ │ ├── content-script.js
│ │ └── manifest.json
│ ├── cookbook.geolocation-offscreen/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── offscreen.html
│ │ ├── offscreen.js
│ │ └── service_worker.js
│ ├── cookbook.geolocation-popup/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── cookbook.offscreen-clipboard-write/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── offscreen.html
│ │ └── offscreen.js
│ ├── cookbook.offscreen-dom/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── offscreen.html
│ │ └── offscreen.js
│ ├── cookbook.permissions-addhostaccessrequest/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── banner.js
│ │ └── manifest.json
│ ├── cookbook.push/
│ │ ├── README.md
│ │ ├── background.js
│ │ └── manifest.json
│ ├── cookbook.sidepanel-global/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ ├── sidepanel.html
│ │ └── sidepanel.js
│ ├── cookbook.sidepanel-multiple/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ └── sidepanels/
│ │ ├── main-sp.html
│ │ └── welcome-sp.html
│ ├── cookbook.sidepanel-open/
│ │ ├── README.md
│ │ ├── content-script.js
│ │ ├── manifest.json
│ │ ├── page.html
│ │ ├── script.js
│ │ ├── service-worker.js
│ │ ├── sidepanel-global.html
│ │ └── sidepanel-tab.html
│ ├── cookbook.sidepanel-site-specific/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ └── sidepanel.html
│ ├── cookbook.wasm-helloworld-print/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ └── wasm/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── pkg/
│ │ │ ├── helloworld_demo.d.ts
│ │ │ ├── helloworld_demo.js
│ │ │ ├── helloworld_demo_bg.wasm
│ │ │ └── helloworld_demo_bg.wasm.d.ts
│ │ └── src/
│ │ └── lib.rs
│ ├── cookbook.wasm-helloworld-print-nomodule/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ └── wasm/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── pkg/
│ │ │ ├── helloworld_demo.d.ts
│ │ │ ├── helloworld_demo.js
│ │ │ ├── helloworld_demo_bg.wasm
│ │ │ └── helloworld_demo_bg.wasm.d.ts
│ │ └── src/
│ │ └── lib.rs
│ ├── libraries-xhr-in-sw/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── package.json
│ │ ├── rollup.config.mjs
│ │ ├── sidepanel/
│ │ │ ├── index.html
│ │ │ └── script.js
│ │ └── third_party/
│ │ ├── fetchTitle.js
│ │ └── xhr-shim/
│ │ ├── LICENSE
│ │ └── xhr-shim.js
│ ├── reference.mv3-content-scripts/
│ │ ├── README.md
│ │ ├── content-script.js
│ │ ├── manifest.json
│ │ ├── popup.css
│ │ ├── popup.html
│ │ └── popup.js
│ ├── sample.bookmarks/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.css
│ │ ├── popup.html
│ │ ├── popup.js
│ │ └── third-party/
│ │ ├── jquery-1.12.4.js
│ │ ├── jquery-ui-1.12.1.js
│ │ ├── jquery-ui.css
│ │ ├── jquery-ui.structure.css
│ │ └── jquery-ui.theme.css
│ ├── sample.catifier/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── rules.json
│ ├── sample.co2meter/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── co2-state-iframe.html
│ │ ├── co2-state-iframe.js
│ │ ├── images/
│ │ │ └── icon32.psd
│ │ ├── main-page.html
│ │ ├── main-page.js
│ │ ├── manifest.json
│ │ ├── modules/
│ │ │ ├── co2_meter.js
│ │ │ ├── constant.js
│ │ │ └── icon.js
│ │ ├── popup.html
│ │ └── popup.js
│ ├── sample.dnr-rule-manager/
│ │ ├── README.md
│ │ ├── manager.css
│ │ ├── manager.html
│ │ ├── manager.js
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ ├── popup.js
│ │ └── service_worker.js
│ ├── sample.favicon-cs/
│ │ ├── README.md
│ │ ├── content.js
│ │ ├── manifest.json
│ │ └── style.css
│ ├── sample.milestones/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── sample.optional_permissions/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── newtab.html
│ │ ├── newtab.js
│ │ └── style.css
│ ├── sample.page-redder/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── sample.sidepanel-dictionary/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ ├── sidepanel.html
│ │ └── sidepanel.js
│ ├── sample.tabcapture-recorder/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── offscreen.html
│ │ ├── offscreen.js
│ │ └── service-worker.js
│ ├── sample.theme/
│ │ ├── Cached Theme.pak
│ │ ├── README.md
│ │ └── manifest.json
│ ├── sample.water_alarm_notification/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── manifest.json
│ │ ├── popup.html
│ │ └── popup.js
│ ├── sample.webgpu/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── tutorial.broken-color/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── popup.html
│ │ ├── popup.js
│ │ └── service-worker.js
│ ├── tutorial.custom-cursor/
│ │ ├── README.md
│ │ ├── counter.js
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ └── style.css
│ ├── tutorial.focus-mode/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── focus-mode.css
│ │ └── manifest.json
│ ├── tutorial.focus-mode-debugging/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── fixed/
│ │ │ ├── background.js
│ │ │ └── focus-mode.js
│ │ ├── focus-mode.css
│ │ ├── focus-mode.js
│ │ └── manifest.json
│ ├── tutorial.getting-started/
│ │ ├── README.md
│ │ ├── background.js
│ │ ├── button.css
│ │ ├── manifest.json
│ │ ├── options.html
│ │ ├── options.js
│ │ ├── popup.html
│ │ └── popup.js
│ ├── tutorial.google-analytics/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup/
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── scripts/
│ │ │ └── google-analytics.js
│ │ └── service-worker.js
│ ├── tutorial.hello-world/
│ │ ├── README.md
│ │ ├── hello.html
│ │ ├── manifest.json
│ │ └── popup.js
│ ├── tutorial.mole-game/
│ │ ├── README.md
│ │ ├── controller/
│ │ │ ├── manifest.json
│ │ │ └── service-worker.js
│ │ └── mole/
│ │ ├── manifest.json
│ │ └── service-worker.js
│ ├── tutorial.open-api-reference/
│ │ ├── README.md
│ │ ├── api-list.js
│ │ ├── content.js
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ ├── sw-omnibox.js
│ │ ├── sw-suggestions.js
│ │ └── sw-tips.js
│ ├── tutorial.puppeteer/
│ │ ├── README.md
│ │ ├── index.test.js
│ │ └── package.json
│ ├── tutorial.quick-api-reference/
│ │ ├── README.md
│ │ ├── content.js
│ │ ├── manifest.json
│ │ ├── service-worker.js
│ │ ├── sw-omnibox.js
│ │ └── sw-tips.js
│ ├── tutorial.reading-time/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ └── scripts/
│ │ └── content.js
│ ├── tutorial.tabs-manager/
│ │ ├── README.md
│ │ ├── manifest.json
│ │ ├── popup.css
│ │ ├── popup.html
│ │ └── popup.js
│ ├── tutorial.terminate-sw/
│ │ ├── README.md
│ │ ├── puppeteer/
│ │ │ ├── .eslintrc
│ │ │ ├── index.test.js
│ │ │ └── package.json
│ │ ├── selenium/
│ │ │ ├── .eslintrc
│ │ │ ├── index.test.js
│ │ │ └── package.json
│ │ └── test-extension/
│ │ ├── manifest.json
│ │ ├── page.html
│ │ ├── page.js
│ │ ├── service-worker-broken.js
│ │ └── service-worker-fixed.js
│ └── tutorial.websockets/
│ ├── README.md
│ ├── manifest.json
│ └── service-worker.js
└── package.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .allstar/binary_artifacts.yaml
================================================
# Ignore reason: Packed extension for demo purposes.
ignorePaths:
- _archive/mv2/api/permissions/extension-questions.crx
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
⚠️ If you have general Chrome Extensions questions, consider posting to the [Chromium Extensions Group](https://groups.google.com/a/chromium.org/forum/#!forum/chromium-extensions) or [Stack Overflow](https://stackoverflow.com/questions/tagged/google-chrome-extension).
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior, or file the issue is found in:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Notes**
Anything additional here. 🌈
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
================================================
FILE: .github/workflows/lint.yml
================================================
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install modules
run: npm ci
- name: Run ESLint
run: npm run lint
================================================
FILE: .github/workflows/sample-list-generator.yml
================================================
name: Sample List Generator
on:
push:
branches:
- main
defaults:
run:
working-directory: ./.repo/sample-list-generator
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install dependencies
run: npm install
- name: Generate sample list
run: npm run start
- name: Upload to artifacts
uses: actions/upload-artifact@v4
with:
name: extension-samples.json
path: ./.repo/sample-list-generator/extension-samples.json
if-no-files-found: error
================================================
FILE: .gitignore
================================================
*~
*.DS_store
node_modules
# Temporary directory for debugging extension samples
_debug
_metadata
dist
**/*.swp
================================================
FILE: .husky/pre-commit
================================================
npx lint-staged
================================================
FILE: .prettierignore
================================================
_archive
third-party
node_modules
dist
================================================
FILE: .prettierrc.json
================================================
{
"printWidth": 80,
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": true,
"arrowParens": "always"
}
================================================
FILE: .repo/migrate-samples.js
================================================
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview Intended to be run as a script on the old samples page, to
* extract a list of samples and render as a Markdown table.
*/
var sampleHeadings = Array.from(document.querySelectorAll('main h2'));
var samples = sampleHeadings2.map((heading) => {
const title = heading.textContent;
const link = heading.querySelector('a');
const href = link.href;
const expectedHrefPrefix = 'https://developer.chrome.com/extensions/examples/'
let id = '';
if (href.startsWith(expectedHrefPrefix)) {
id = href.substr(expectedHrefPrefix.length).replace(/\.zip$/, '');
} else {
console.warn('bad href', href);
}
let notes = '';
// probably a TEXT node
let curr = heading;
for (;;) {
curr = curr.nextSibling;
if (!(curr instanceof Text)) {
break;
}
notes += curr.textContent;
}
notes = notes.trim();
notes = notes.replace(/\s+/g, ' ');
// curr probably points to Calls: now
const callNodes = Array.from(curr.querySelectorAll('ul li code'));
const calls = callNodes.map((node) => node.textContent);
return {title, id, notes, calls};
});
var formatCallsList = (calls) => {
const parts = calls.map((call) => `<li>${call}</li>`);
return `<ul>${parts.join('')}</ul>`;
};
var formatRow = (sample) => {
return `[${sample.title}](${sample.id})<br />${sample.notes} | ${formatCallsList(sample.calls)}`;
};
var formatTable = (all) => {
return `Sample | Calls\n--- | ---\n${all.map(formatRow).join('\n')}`;
};
================================================
FILE: .repo/sample-list-generator/.gitignore
================================================
extension-samples.json
================================================
FILE: .repo/sample-list-generator/README.md
================================================
# Sample List Generator
## Overview
It's a script that generates `./extension-samples.json` with the list of all the samples available. Currently, this JSON will be provided to [developer.chrome.com](https://developer.chrome.com) for generating a list page containing all the samples. This allows developers to quickly find the sample they want to reference.
## How to use
### Install dependencies
```bash
npm install
```
### Run prefetch script (optional)
The prefetch script will generate a list of all the available extension apis on [developer.chrome.com](https://developer.chrome.com/docs/extensions/reference) and save it to `./extension-apis.json`.
The file `./extension-apis.json` will be committed so you don't need to run this script unless you want to update the list.
```bash
npm run prepare-chrome-types
```
### Run the generator
```bash
npm start
```
### Run the tests
```bash
npm test
```
## Types
```ts
type ApiTypeResult = 'event' | 'method' | 'property' | 'type' | 'unknown';
interface ApiItem {
type: ApiTypeResult;
namespace: string;
propertyName: string;
}
interface SampleItem {
type: 'API_SAMPLE' | 'FUNCTIONAL_SAMPLE';
name: string;
title: string;
description: string;
repo_link: string;
apis: ApiItem[];
permissions: string[];
}
// the type of extension-samples.json file is SampleItem[]
```
## Example
Here is an example of the generated `extension-samples.json` file:
```json
[
{
"type": "API_SAMPLE",
"name": "alarms",
"title": "Alarms API Demo",
"description": "",
"repo_link": "https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/api-samples/alarms",
"permissions": ["alarms"],
"apis": [
{
"type": "event",
"namespace": "runtime",
"propertyName": "onInstalled"
},
{
"type": "event",
"namespace": "action",
"propertyName": "onClicked"
},
{
"type": "event",
"namespace": "alarms",
"propertyName": "onAlarm"
},
{
"type": "type",
"namespace": "runtime",
"propertyName": "OnInstalledReason"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "create"
},
{
"type": "method",
"namespace": "tabs",
"propertyName": "create"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "clear"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "clearAll"
},
{
"type": "method",
"namespace": "alarms",
"propertyName": "getAll"
}
]
},
{
"type": "FUNCTIONAL_SAMPLE",
"name": "tutorial.getting-started",
"title": "Getting Started Example",
"description": "Build an Extension!",
"repo_link": "https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/functional-samples/tutorial.getting-started",
"permissions": ["storage", "activeTab", "scripting"],
"apis": [
{
"type": "event",
"namespace": "runtime",
"propertyName": "onInstalled"
},
{
"type": "property",
"namespace": "storage",
"propertyName": "sync"
},
{
"type": "method",
"namespace": "tabs",
"propertyName": "query"
},
{
"type": "method",
"namespace": "scripting",
"propertyName": "executeScript"
}
]
}
]
```
================================================
FILE: .repo/sample-list-generator/extension-apis.json
================================================
{
"_comment": "This file is autogenerated by running `npm run prepare-chrome-types`, do not edit.",
"accessibilityFeatures": {
"properties": [
"animationPolicy",
"autoclick",
"caretHighlight",
"cursorColor",
"cursorHighlight",
"dictation",
"dockedMagnifier",
"focusHighlight",
"highContrast",
"largeCursor",
"screenMagnifier",
"selectToSpeak",
"spokenFeedback",
"stickyKeys",
"switchAccess",
"virtualKeyboard"
],
"methods": [],
"types": [],
"events": []
},
"action": {
"properties": [],
"methods": [
"disable",
"enable",
"getBadgeBackgroundColor",
"getBadgeText",
"getBadgeTextColor",
"getPopup",
"getTitle",
"getUserSettings",
"isEnabled",
"openPopup",
"setBadgeBackgroundColor",
"setBadgeText",
"setBadgeTextColor",
"setIcon",
"setPopup",
"setTitle"
],
"types": [
"OpenPopupOptions",
"TabDetails",
"UserSettings",
"UserSettingsChange"
],
"events": ["onClicked", "onUserSettingsChanged"]
},
"alarms": {
"properties": [],
"methods": ["clear", "clearAll", "create", "get", "getAll"],
"types": ["Alarm", "AlarmCreateInfo"],
"events": ["onAlarm"]
},
"app.runtime": {
"properties": [],
"methods": [],
"types": ["EmbedRequest", "LaunchData", "LaunchItem", "LaunchSource"],
"events": ["onEmbedRequested", "onLaunched", "onRestarted"]
},
"app.window": {
"properties": [],
"methods": [
"canSetVisibleOnAllWorkspaces",
"create",
"current",
"get",
"getAll"
],
"types": [
"AppWindow",
"Bounds",
"BoundsSpecification",
"ContentBounds",
"CreateWindowOptions",
"FrameOptions",
"State",
"WindowType"
],
"events": [
"onBoundsChanged",
"onClosed",
"onFullscreened",
"onMaximized",
"onMinimized",
"onRestored"
]
},
"app": {
"properties": [],
"methods": ["getDetails", "getIsInstalled", "installState", "runningState"],
"types": ["DOMWindow", "Details", "InstallState", "RunningState"],
"events": []
},
"appviewTag": {
"properties": [],
"methods": ["connect"],
"types": ["EmbedRequest"],
"events": []
},
"audio": {
"properties": [],
"methods": [
"getDevices",
"getMute",
"setActiveDevices",
"setMute",
"setProperties"
],
"types": [
"AudioDeviceInfo",
"DeviceFilter",
"DeviceIdLists",
"DeviceProperties",
"LevelChangedEvent",
"MuteChangedEvent",
"DeviceType",
"StreamType"
],
"events": ["onDeviceListChanged", "onLevelChanged", "onMuteChanged"]
},
"bluetooth": {
"properties": [],
"methods": [
"getAdapterState",
"getDevice",
"getDevices",
"startDiscovery",
"stopDiscovery"
],
"types": [
"AdapterState",
"BluetoothFilter",
"Device",
"DeviceType",
"FilterType",
"Transport",
"VendorIdSource"
],
"events": [
"onAdapterStateChanged",
"onDeviceAdded",
"onDeviceChanged",
"onDeviceRemoved"
]
},
"bluetoothLowEnergy": {
"properties": [],
"methods": [
"connect",
"createCharacteristic",
"createDescriptor",
"createService",
"disconnect",
"getCharacteristic",
"getCharacteristics",
"getDescriptor",
"getDescriptors",
"getIncludedServices",
"getService",
"getServices",
"notifyCharacteristicValueChanged",
"readCharacteristicValue",
"readDescriptorValue",
"registerAdvertisement",
"registerService",
"removeService",
"resetAdvertising",
"sendRequestResponse",
"setAdvertisingInterval",
"startCharacteristicNotifications",
"stopCharacteristicNotifications",
"unregisterAdvertisement",
"unregisterService",
"writeCharacteristicValue",
"writeDescriptorValue"
],
"types": [
"Advertisement",
"Characteristic",
"ConnectProperties",
"Descriptor",
"Device",
"ManufacturerData",
"Notification",
"NotificationProperties",
"Request",
"Response",
"Service",
"ServiceData",
"AdvertisementType",
"CharacteristicProperty",
"DescriptorPermission"
],
"events": [
"onCharacteristicReadRequest",
"onCharacteristicValueChanged",
"onCharacteristicWriteRequest",
"onDescriptorReadRequest",
"onDescriptorValueChanged",
"onDescriptorWriteRequest",
"onServiceAdded",
"onServiceChanged",
"onServiceRemoved"
]
},
"bluetoothSocket": {
"properties": [],
"methods": [
"close",
"connect",
"create",
"disconnect",
"getInfo",
"getSockets",
"listenUsingL2cap",
"listenUsingRfcomm",
"send",
"setPaused",
"update"
],
"types": [
"AcceptErrorInfo",
"AcceptInfo",
"CreateInfo",
"ListenOptions",
"ReceiveErrorInfo",
"ReceiveInfo",
"SocketInfo",
"SocketProperties",
"AcceptError",
"ReceiveError"
],
"events": ["onAccept", "onAcceptError", "onReceive", "onReceiveError"]
},
"bookmarks": {
"properties": [
"MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE",
"MAX_WRITE_OPERATIONS_PER_HOUR"
],
"methods": [
"create",
"get",
"getChildren",
"getRecent",
"getSubTree",
"getTree",
"move",
"remove",
"removeTree",
"search",
"update"
],
"types": [
"BookmarkTreeNode",
"CreateDetails",
"BookmarkTreeNodeUnmodifiable",
"FolderType"
],
"events": [
"onChanged",
"onChildrenReordered",
"onCreated",
"onImportBegan",
"onImportEnded",
"onMoved",
"onRemoved"
]
},
"browser": {
"properties": [],
"methods": ["openTab"],
"types": ["OpenTabOptions"],
"events": []
},
"browserAction": {
"properties": [],
"methods": [
"disable",
"enable",
"getBadgeBackgroundColor",
"getBadgeText",
"getPopup",
"getTitle",
"setBadgeBackgroundColor",
"setBadgeText",
"setIcon",
"setPopup",
"setTitle"
],
"types": ["TabDetails", "ColorArray", "ImageDataType"],
"events": ["onClicked"]
},
"browsingData": {
"properties": [],
"methods": [
"remove",
"removeAppcache",
"removeCache",
"removeCacheStorage",
"removeCookies",
"removeDownloads",
"removeFileSystems",
"removeFormData",
"removeHistory",
"removeIndexedDB",
"removeLocalStorage",
"removePasswords",
"removePluginData",
"removeServiceWorkers",
"removeWebSQL",
"settings"
],
"types": ["DataTypeSet", "RemovalOptions"],
"events": []
},
"certificateProvider": {
"properties": [],
"methods": [
"reportSignature",
"requestPin",
"setCertificates",
"stopPinRequest"
],
"types": [
"CertificateInfo",
"CertificatesUpdateRequest",
"ClientCertificateInfo",
"PinResponseDetails",
"ReportSignatureDetails",
"RequestPinDetails",
"SetCertificatesDetails",
"SignRequest",
"SignatureRequest",
"StopPinRequestDetails",
"Algorithm",
"Error",
"Hash",
"PinRequestErrorType",
"PinRequestType"
],
"events": [
"onCertificatesRequested",
"onCertificatesUpdateRequested",
"onSignDigestRequested",
"onSignatureRequested"
]
},
"chrome_url_overrides": {
"properties": [],
"methods": [],
"types": ["UrlOverrideInfo"],
"events": []
},
"clipboard": {
"properties": [],
"methods": ["setImageData"],
"types": ["AdditionalDataItem", "DataItemType", "ImageType"],
"events": ["onClipboardDataChanged"]
},
"commands": {
"properties": [],
"methods": ["getAll"],
"types": ["Command"],
"events": ["onCommand"]
},
"contentScripts": {
"properties": [],
"methods": [],
"types": ["ContentScript"],
"events": []
},
"contentSettings": {
"properties": [
"autoVerify",
"automaticDownloads",
"camera",
"clipboard",
"cookies",
"fullscreen",
"images",
"javascript",
"location",
"microphone",
"mouselock",
"notifications",
"plugins",
"popups",
"unsandboxedPlugins"
],
"methods": [],
"types": [
"ContentSetting",
"ResourceIdentifier",
"AutoVerifyContentSetting",
"CameraContentSetting",
"ClipboardContentSetting",
"CookiesContentSetting",
"FullscreenContentSetting",
"ImagesContentSetting",
"JavascriptContentSetting",
"LocationContentSetting",
"MicrophoneContentSetting",
"MouselockContentSetting",
"MultipleAutomaticDownloadsContentSetting",
"NotificationsContentSetting",
"PluginsContentSetting",
"PopupsContentSetting",
"PpapiBrokerContentSetting",
"Scope"
],
"events": []
},
"contextMenus": {
"properties": ["ACTION_MENU_TOP_LEVEL_LIMIT"],
"methods": ["create", "remove", "removeAll", "update"],
"types": ["CreateProperties", "OnClickData", "ContextType", "ItemType"],
"events": ["onClicked"]
},
"cookies": {
"properties": [],
"methods": [
"get",
"getAll",
"getAllCookieStores",
"getPartitionKey",
"remove",
"set"
],
"types": [
"Cookie",
"CookieDetails",
"CookiePartitionKey",
"CookieStore",
"FrameDetails",
"OnChangedCause",
"SameSiteStatus"
],
"events": ["onChanged"]
},
"crossOriginIsolation": {
"properties": [],
"methods": [],
"types": ["ResponseHeader"],
"events": []
},
"debugger": {
"properties": [],
"methods": ["attach", "detach", "getTargets", "sendCommand"],
"types": [
"Debuggee",
"DebuggerSession",
"TargetInfo",
"DetachReason",
"TargetInfoType"
],
"events": ["onDetach", "onEvent"]
},
"declarativeContent": {
"properties": [],
"methods": [],
"types": [
"PageStateMatcher",
"RequestContentScript",
"SetIcon",
"ShowAction",
"ShowPageAction",
"ImageDataType"
],
"events": ["onPageChanged"]
},
"declarativeNetRequest": {
"properties": [
"DYNAMIC_RULESET_ID",
"GETMATCHEDRULES_QUOTA_INTERVAL",
"GUARANTEED_MINIMUM_STATIC_RULES",
"MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL",
"MAX_NUMBER_OF_DYNAMIC_RULES",
"MAX_NUMBER_OF_ENABLED_STATIC_RULESETS",
"MAX_NUMBER_OF_REGEX_RULES",
"MAX_NUMBER_OF_SESSION_RULES",
"MAX_NUMBER_OF_STATIC_RULESETS",
"MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES",
"MAX_NUMBER_OF_UNSAFE_SESSION_RULES",
"SESSION_RULESET_ID"
],
"methods": [
"getAvailableStaticRuleCount",
"getDisabledRuleIds",
"getDynamicRules",
"getEnabledRulesets",
"getMatchedRules",
"getSessionRules",
"isRegexSupported",
"setExtensionActionOptions",
"testMatchOutcome",
"updateDynamicRules",
"updateEnabledRulesets",
"updateSessionRules",
"updateStaticRules"
],
"types": [
"ExtensionActionOptions",
"GetDisabledRuleIdsOptions",
"GetRulesFilter",
"HeaderInfo",
"IsRegexSupportedResult",
"MatchedRule",
"MatchedRuleInfo",
"MatchedRuleInfoDebug",
"MatchedRulesFilter",
"ModifyHeaderInfo",
"QueryKeyValue",
"QueryTransform",
"Redirect",
"RegexOptions",
"RequestDetails",
"Rule",
"RuleAction",
"RuleCondition",
"RulesMatchedDetails",
"Ruleset",
"TabActionCountUpdate",
"TestMatchOutcomeResult",
"TestMatchRequestDetails",
"URLTransform",
"UpdateRuleOptions",
"UpdateRulesetOptions",
"UpdateStaticRulesOptions",
"DomainType",
"HeaderOperation",
"RequestMethod",
"ResourceType",
"RuleActionType",
"UnsupportedRegexReason"
],
"events": ["onRuleMatchedDebug"]
},
"declarativeWebRequest": {
"properties": [],
"methods": [],
"types": [
"AddRequestCookie",
"AddResponseCookie",
"AddResponseHeader",
"CancelRequest",
"EditRequestCookie",
"EditResponseCookie",
"IgnoreRules",
"RedirectByRegEx",
"RedirectRequest",
"RedirectToEmptyDocument",
"RedirectToTransparentImage",
"RemoveRequestCookie",
"RemoveRequestHeader",
"RemoveResponseCookie",
"RemoveResponseHeader",
"RequestMatcher",
"SendMessageToExtension",
"SetRequestHeader",
"FilterResponseCookie",
"HeaderFilter",
"RequestCookie",
"ResponseCookie",
"Stage"
],
"events": ["onMessage", "onRequest"]
},
"desktopCapture": {
"properties": [],
"methods": ["cancelChooseDesktopMedia", "chooseDesktopMedia"],
"types": [
"DesktopCaptureSourceType",
"SelfCapturePreferenceEnum",
"SystemAudioPreferenceEnum"
],
"events": []
},
"devtools.inspectedWindow": {
"properties": ["tabId"],
"methods": ["eval", "getResources", "reload"],
"types": ["Resource"],
"events": ["onResourceAdded", "onResourceContentCommitted"]
},
"devtools.network": {
"properties": [],
"methods": ["getHAR"],
"types": ["Request"],
"events": ["onNavigated", "onRequestFinished"]
},
"devtools.panels": {
"properties": ["elements", "sources", "themeName"],
"methods": ["create", "openResource", "setOpenResourceHandler"],
"types": [
"Button",
"ElementsPanel",
"ExtensionPanel",
"ExtensionSidebarPane",
"SourcesPanel"
],
"events": []
},
"devtools.performance": {
"properties": [],
"methods": [],
"types": [],
"events": ["onProfilingStarted", "onProfilingStopped"]
},
"devtools.recorder": {
"properties": [],
"methods": ["createView", "registerRecorderExtensionPlugin"],
"types": ["RecorderExtensionPlugin", "RecorderView"],
"events": []
},
"diagnostics": {
"properties": [],
"methods": ["sendPacket"],
"types": ["SendPacketOptions", "SendPacketResult"],
"events": []
},
"dns": {
"properties": [],
"methods": ["resolve"],
"types": ["ResolveCallbackResolveInfo"],
"events": []
},
"documentScan": {
"properties": [],
"methods": [
"cancelScan",
"closeScanner",
"getOptionGroups",
"getScannerList",
"openScanner",
"readScanData",
"scan",
"setOptions",
"startScan"
],
"types": [
"CancelScanResponse",
"CloseScannerResponse",
"DeviceFilter",
"GetOptionGroupsResponse",
"GetScannerListResponse",
"OpenScannerResponse",
"OptionConstraint",
"OptionGroup",
"OptionSetting",
"ReadScanDataResponse",
"ScanOptions",
"ScanResults",
"ScannerInfo",
"ScannerOption",
"SetOptionResult",
"SetOptionsResponse",
"StartScanOptions",
"StartScanResponse",
"Configurability",
"ConnectionType",
"ConstraintType",
"OperationResult",
"OptionType",
"OptionUnit"
],
"events": []
},
"dom": {
"properties": [],
"methods": ["openOrClosedShadowRoot"],
"types": [],
"events": []
},
"downloads": {
"properties": [],
"methods": [
"acceptDanger",
"cancel",
"download",
"erase",
"getFileIcon",
"open",
"pause",
"removeFile",
"resume",
"search",
"setShelfEnabled",
"setUiOptions",
"show",
"showDefaultFolder"
],
"types": [
"BooleanDelta",
"DoubleDelta",
"DownloadDelta",
"DownloadItem",
"DownloadOptions",
"DownloadQuery",
"FilenameSuggestion",
"GetFileIconOptions",
"HeaderNameValuePair",
"StringDelta",
"UiOptions",
"DangerType",
"FilenameConflictAction",
"HttpMethod",
"InterruptReason",
"State"
],
"events": ["onChanged", "onCreated", "onDeterminingFilename", "onErased"]
},
"enterprise.deviceAttributes": {
"properties": [],
"methods": [
"getDeviceAnnotatedLocation",
"getDeviceAssetId",
"getDeviceHostname",
"getDeviceSerialNumber",
"getDirectoryDeviceId"
],
"types": [],
"events": []
},
"enterprise.hardwarePlatform": {
"properties": [],
"methods": ["getHardwarePlatformInfo"],
"types": ["HardwarePlatformInfo"],
"events": []
},
"enterprise.kioskInput": {
"properties": [],
"methods": ["setCurrentInputMethod"],
"types": ["SetCurrentInputMethodOptions"],
"events": []
},
"enterprise.networkingAttributes": {
"properties": [],
"methods": ["getNetworkDetails"],
"types": ["NetworkDetails"],
"events": []
},
"enterprise.platformKeys": {
"properties": [],
"methods": [
"challengeKey",
"challengeMachineKey",
"challengeUserKey",
"getCertificates",
"getTokens",
"importCertificate",
"removeCertificate"
],
"types": [
"ChallengeKeyOptions",
"RegisterKeyOptions",
"Token",
"Algorithm",
"Scope"
],
"events": []
},
"events": {
"properties": [],
"methods": [],
"types": ["Event", "Rule", "UrlFilter"],
"events": []
},
"extension": {
"properties": ["inIncognitoContext", "lastError"],
"methods": [
"getBackgroundPage",
"getExtensionTabs",
"getURL",
"getViews",
"isAllowedFileSchemeAccess",
"isAllowedIncognitoAccess",
"sendRequest",
"setUpdateUrlData"
],
"types": ["ViewType"],
"events": ["onRequest", "onRequestExternal"]
},
"extensionTypes": {
"properties": [],
"methods": [],
"types": [
"DeleteInjectionDetails",
"ImageDetails",
"InjectDetails",
"CSSOrigin",
"DocumentLifecycle",
"ExecutionWorld",
"FrameType",
"ImageFormat",
"RunAt"
],
"events": []
},
"extensionsManifestTypes": {
"properties": [],
"methods": [],
"types": [
"ContentCapabilities",
"ExternallyConnectable",
"OptionsUI",
"UsbPrinters",
"bluetooth",
"sockets",
"KioskSecondaryApps",
"SocketHostPatterns",
"automation"
],
"events": []
},
"fileBrowserHandler": {
"properties": [],
"methods": [],
"types": ["FileHandlerExecuteEventDetails"],
"events": ["onExecute"]
},
"fileHandlers": {
"properties": [],
"methods": [],
"types": ["FileHandler", "Icon"],
"events": []
},
"fileSystem": {
"properties": [],
"methods": [
"chooseEntry",
"getDisplayPath",
"getVolumeList",
"getWritableEntry",
"isRestorable",
"isWritableEntry",
"requestFileSystem",
"restoreEntry",
"retainEntry"
],
"types": [
"AcceptOption",
"ChooseEntryOptions",
"RequestFileSystemOptions",
"Volume",
"VolumeListChangedEvent",
"ChooseEntryType"
],
"events": ["onVolumeListChanged"]
},
"fileSystemProvider": {
"properties": [],
"methods": ["get", "getAll", "mount", "notify", "unmount"],
"types": [
"AbortRequestedOptions",
"Action",
"AddWatcherRequestedOptions",
"Change",
"CloseFileRequestedOptions",
"CloudFileInfo",
"CloudIdentifier",
"ConfigureRequestedOptions",
"CopyEntryRequestedOptions",
"CreateDirectoryRequestedOptions",
"CreateFileRequestedOptions",
"DeleteEntryRequestedOptions",
"EntryMetadata",
"ExecuteActionRequestedOptions",
"FileSystemInfo",
"GetActionsRequestedOptions",
"GetMetadataRequestedOptions",
"MountOptions",
"MoveEntryRequestedOptions",
"NotifyOptions",
"OpenFileRequestedOptions",
"OpenedFile",
"ReadDirectoryRequestedOptions",
"ReadFileRequestedOptions",
"RemoveWatcherRequestedOptions",
"TruncateRequestedOptions",
"UnmountOptions",
"UnmountRequestedOptions",
"Watcher",
"WriteFileRequestedOptions",
"ChangeType",
"CommonActionId",
"OpenFileMode",
"ProviderError"
],
"events": [
"onAbortRequested",
"onAddWatcherRequested",
"onCloseFileRequested",
"onConfigureRequested",
"onCopyEntryRequested",
"onCreateDirectoryRequested",
"onCreateFileRequested",
"onDeleteEntryRequested",
"onExecuteActionRequested",
"onGetActionsRequested",
"onGetMetadataRequested",
"onMountRequested",
"onMoveEntryRequested",
"onOpenFileRequested",
"onReadDirectoryRequested",
"onReadFileRequested",
"onRemoveWatcherRequested",
"onTruncateRequested",
"onUnmountRequested",
"onWriteFileRequested"
]
},
"fontSettings": {
"properties": [],
"methods": [
"clearDefaultFixedFontSize",
"clearDefaultFontSize",
"clearFont",
"clearMinimumFontSize",
"getDefaultFixedFontSize",
"getDefaultFontSize",
"getFont",
"getFontList",
"getMinimumFontSize",
"setDefaultFixedFontSize",
"setDefaultFontSize",
"setFont",
"setMinimumFontSize"
],
"types": ["FontName", "GenericFamily", "LevelOfControl", "ScriptCode"],
"events": [
"onDefaultFixedFontSizeChanged",
"onDefaultFontSizeChanged",
"onFontChanged",
"onMinimumFontSizeChanged"
]
},
"gcm": {
"properties": ["MAX_MESSAGE_SIZE"],
"methods": ["register", "send", "unregister"],
"types": [],
"events": ["onMessage", "onMessagesDeleted", "onSendError"]
},
"hid": {
"properties": [],
"methods": [
"connect",
"disconnect",
"getDevices",
"receive",
"receiveFeatureReport",
"send",
"sendFeatureReport"
],
"types": [
"DeviceFilter",
"GetDevicesOptions",
"HidCollectionInfo",
"HidConnectInfo",
"HidDeviceInfo"
],
"events": ["onDeviceAdded", "onDeviceRemoved"]
},
"history": {
"properties": [],
"methods": [
"addUrl",
"deleteAll",
"deleteRange",
"deleteUrl",
"getVisits",
"search"
],
"types": ["HistoryItem", "UrlDetails", "VisitItem", "TransitionType"],
"events": ["onVisitRemoved", "onVisited"]
},
"i18n": {
"properties": [],
"methods": [
"detectLanguage",
"getAcceptLanguages",
"getMessage",
"getUILanguage"
],
"types": ["LanguageCode"],
"events": []
},
"identity": {
"properties": [],
"methods": [
"clearAllCachedAuthTokens",
"getAccounts",
"getAuthToken",
"getProfileUserInfo",
"getRedirectURL",
"launchWebAuthFlow",
"removeCachedAuthToken"
],
"types": [
"AccountInfo",
"GetAuthTokenResult",
"InvalidTokenDetails",
"ProfileDetails",
"ProfileUserInfo",
"TokenDetails",
"WebAuthFlowDetails",
"AccountStatus"
],
"events": ["onSignInChanged"]
},
"idle": {
"properties": [],
"methods": ["getAutoLockDelay", "queryState", "setDetectionInterval"],
"types": ["IdleState"],
"events": ["onStateChanged"]
},
"incognito": {
"properties": [],
"methods": [],
"types": ["IncognitoMode"],
"events": []
},
"input.ime": {
"properties": [],
"methods": [
"clearComposition",
"commitText",
"deleteSurroundingText",
"hideInputView",
"keyEventHandled",
"sendKeyEvents",
"setAssistiveWindowButtonHighlighted",
"setAssistiveWindowProperties",
"setCandidateWindowProperties",
"setCandidates",
"setComposition",
"setCursorPosition",
"setMenuItems",
"updateMenuItems"
],
"types": [
"AssistiveWindowProperties",
"InputContext",
"KeyboardEvent",
"MenuItem",
"MenuParameters",
"AssistiveWindowButton",
"AssistiveWindowType",
"AutoCapitalizeType",
"InputContextType",
"KeyboardEventType",
"MenuItemStyle",
"MouseButton",
"ScreenType",
"UnderlineStyle",
"WindowPosition"
],
"events": [
"onActivate",
"onAssistiveWindowButtonClicked",
"onBlur",
"onCandidateClicked",
"onDeactivated",
"onFocus",
"onInputContextUpdate",
"onKeyEvent",
"onMenuItemActivated",
"onReset",
"onSurroundingTextChanged"
]
},
"instanceID": {
"properties": [],
"methods": [
"deleteID",
"deleteToken",
"getCreationTime",
"getID",
"getToken"
],
"types": [],
"events": ["onTokenRefresh"]
},
"loginState": {
"properties": [],
"methods": ["getProfileType", "getSessionState"],
"types": ["ProfileType", "SessionState"],
"events": ["onSessionStateChanged"]
},
"management": {
"properties": [],
"methods": [
"createAppShortcut",
"generateAppForLink",
"get",
"getAll",
"getPermissionWarningsById",
"getPermissionWarningsByManifest",
"getSelf",
"installReplacementWebApp",
"launchApp",
"setEnabled",
"setLaunchType",
"uninstall",
"uninstallSelf"
],
"types": [
"ExtensionInfo",
"IconInfo",
"UninstallOptions",
"ExtensionDisabledReason",
"ExtensionInstallType",
"ExtensionType",
"LaunchType"
],
"events": ["onDisabled", "onEnabled", "onInstalled", "onUninstalled"]
},
"manifestTypes": {
"properties": [],
"methods": [],
"types": [
"ChromeSettingsOverrides",
"FileSystemProviderCapabilities",
"FileSystemProviderSource"
],
"events": []
},
"mdns": {
"properties": ["MAX_SERVICE_INSTANCES_PER_EVENT"],
"methods": ["forceDiscovery"],
"types": ["MDnsService"],
"events": ["onServiceList"]
},
"mediaGalleries": {
"properties": [],
"methods": [
"addGalleryWatch",
"addUserSelectedFolder",
"getMediaFileSystemMetadata",
"getMediaFileSystems",
"getMetadata",
"removeGalleryWatch"
],
"types": [
"AddGalleryWatchResult",
"GalleryChangeDetails",
"MediaFileSystemMetadata",
"MediaFileSystemsDetails",
"MediaMetadata",
"MediaMetadataOptions",
"StreamInfo",
"GalleryChangeType",
"GetMediaFileSystemsInteractivity",
"GetMetadataType"
],
"events": ["onGalleryChanged"]
},
"networking.onc": {
"properties": [],
"methods": [
"createNetwork",
"disableNetworkType",
"enableNetworkType",
"forgetNetwork",
"getCaptivePortalStatus",
"getDeviceStates",
"getGlobalPolicy",
"getManagedProperties",
"getNetworks",
"getProperties",
"getState",
"requestNetworkScan",
"setProperties",
"startConnect",
"startDisconnect"
],
"types": [
"CellularProperties",
"CellularProviderProperties",
"CellularStateProperties",
"CertificatePattern",
"DeviceStateProperties",
"EAPProperties",
"EthernetProperties",
"EthernetStateProperties",
"FoundNetworkProperties",
"GlobalPolicy",
"IPConfigProperties",
"IssuerSubjectPattern",
"ManagedBoolean",
"ManagedCellularProperties",
"ManagedDOMString",
"ManagedDOMStringList",
"ManagedEthernetProperties",
"ManagedIPConfigProperties",
"ManagedIPConfigType",
"ManagedLong",
"ManagedManualProxySettings",
"ManagedProperties",
"ManagedProxyLocation",
"ManagedProxySettings",
"ManagedProxySettingsType",
"ManagedThirdPartyVPNProperties",
"ManagedVPNProperties",
"ManagedWiFiProperties",
"ManualProxySettings",
"NetworkConfigProperties",
"NetworkFilter",
"NetworkProperties",
"NetworkStateProperties",
"PaymentPortal",
"ProxyLocation",
"ProxySettings",
"SIMLockStatus",
"ThirdPartyVPNProperties",
"VPNProperties",
"VPNStateProperties",
"WiFiProperties",
"WiFiStateProperties",
"WiMAXProperties",
"ActivationStateType",
"CaptivePortalStatus",
"ClientCertificateType",
"ConnectionStateType",
"DeviceStateType",
"IPConfigType",
"NetworkType",
"ProxySettingsType"
],
"events": [
"onDeviceStateListChanged",
"onNetworkListChanged",
"onNetworksChanged",
"onPortalDetectionCompleted"
]
},
"notifications": {
"properties": [],
"methods": ["clear", "create", "getAll", "getPermissionLevel", "update"],
"types": [
"NotificationBitmap",
"NotificationButton",
"NotificationItem",
"NotificationOptions",
"PermissionLevel",
"TemplateType"
],
"events": [
"onButtonClicked",
"onClicked",
"onClosed",
"onPermissionLevelChanged",
"onShowSettings"
]
},
"oauth2": {
"properties": [],
"methods": [],
"types": ["OAuth2Info"],
"events": []
},
"offscreen": {
"properties": [],
"methods": ["closeDocument", "createDocument"],
"types": ["CreateParameters", "Reason"],
"events": []
},
"omnibox": {
"properties": [],
"methods": ["setDefaultSuggestion"],
"types": [
"DefaultSuggestResult",
"SuggestResult",
"DescriptionStyleType",
"OnInputEnteredDisposition"
],
"events": [
"onDeleteSuggestion",
"onInputCancelled",
"onInputChanged",
"onInputEntered",
"onInputStarted"
]
},
"pageAction": {
"properties": [],
"methods": [
"getPopup",
"getTitle",
"hide",
"setIcon",
"setPopup",
"setTitle",
"show"
],
"types": ["TabDetails", "ImageDataType"],
"events": ["onClicked"]
},
"pageCapture": {
"properties": [],
"methods": ["saveAsMHTML"],
"types": [],
"events": []
},
"permissions": {
"properties": [],
"methods": [
"addHostAccessRequest",
"contains",
"getAll",
"remove",
"removeHostAccessRequest",
"request"
],
"types": ["Permissions"],
"events": ["onAdded", "onRemoved"]
},
"platformKeys": {
"properties": [],
"methods": [
"getKeyPair",
"getKeyPairBySpki",
"selectClientCertificates",
"subtleCrypto",
"verifyTLSServerCertificate"
],
"types": [
"ClientCertificateRequest",
"Match",
"SelectDetails",
"VerificationDetails",
"VerificationResult",
"ClientCertificateType"
],
"events": []
},
"power": {
"properties": [],
"methods": ["releaseKeepAwake", "reportActivity", "requestKeepAwake"],
"types": ["Level"],
"events": []
},
"printerProvider": {
"properties": [],
"methods": [],
"types": ["PrintJob", "PrinterInfo", "PrintError"],
"events": [
"onGetCapabilityRequested",
"onGetPrintersRequested",
"onGetUsbPrinterInfoRequested",
"onPrintRequested"
]
},
"printing": {
"properties": [
"MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE",
"MAX_SUBMIT_JOB_CALLS_PER_MINUTE"
],
"methods": [
"cancelJob",
"getJobStatus",
"getPrinterInfo",
"getPrinters",
"submitJob"
],
"types": [
"GetPrinterInfoResponse",
"Printer",
"SubmitJobRequest",
"SubmitJobResponse",
"JobStatus",
"PrinterSource",
"PrinterStatus",
"SubmitJobStatus"
],
"events": ["onJobStatusChanged"]
},
"printingMetrics": {
"properties": [],
"methods": ["getPrintJobs"],
"types": [
"MediaSize",
"PrintJobInfo",
"PrintSettings",
"Printer",
"ColorMode",
"DuplexMode",
"PrintJobSource",
"PrintJobStatus",
"PrinterSource"
],
"events": ["onPrintJobFinished"]
},
"privacy": {
"properties": ["network", "services", "websites"],
"methods": [],
"types": ["IPHandlingPolicy"],
"events": []
},
"processes": {
"properties": [],
"methods": ["getProcessIdForTab", "getProcessInfo", "terminate"],
"types": ["Cache", "Process", "TaskInfo", "ProcessType"],
"events": [
"onCreated",
"onExited",
"onUnresponsive",
"onUpdated",
"onUpdatedWithMemory"
]
},
"proxy": {
"properties": ["settings"],
"methods": [],
"types": [
"PacScript",
"ProxyConfig",
"ProxyRules",
"ProxyServer",
"Mode",
"Scheme"
],
"events": ["onProxyError"]
},
"readingList": {
"properties": [],
"methods": ["addEntry", "query", "removeEntry", "updateEntry"],
"types": [
"AddEntryOptions",
"QueryInfo",
"ReadingListEntry",
"RemoveOptions",
"UpdateEntryOptions"
],
"events": ["onEntryAdded", "onEntryRemoved", "onEntryUpdated"]
},
"runtime": {
"properties": ["id", "lastError"],
"methods": [
"connect",
"connectNative",
"getBackgroundPage",
"getContexts",
"getManifest",
"getPackageDirectoryEntry",
"getPlatformInfo",
"getURL",
"openOptionsPage",
"reload",
"requestUpdateCheck",
"restart",
"restartAfterDelay",
"sendMessage",
"sendNativeMessage",
"setUninstallURL"
],
"types": [
"ContextFilter",
"ExtensionContext",
"MessageSender",
"PlatformInfo",
"Port",
"ContextType",
"OnInstalledReason",
"OnRestartRequiredReason",
"PlatformArch",
"PlatformNaclArch",
"PlatformOs",
"RequestUpdateCheckStatus"
],
"events": [
"onBrowserUpdateAvailable",
"onConnect",
"onConnectExternal",
"onConnectNative",
"onInstalled",
"onMessage",
"onMessageExternal",
"onRestartRequired",
"onStartup",
"onSuspend",
"onSuspendCanceled",
"onUpdateAvailable",
"onUserScriptConnect",
"onUserScriptMessage"
]
},
"scripting": {
"properties": [],
"methods": [
"executeScript",
"getRegisteredContentScripts",
"insertCSS",
"registerContentScripts",
"removeCSS",
"unregisterContentScripts",
"updateContentScripts"
],
"types": [
"CSSInjection",
"ContentScriptFilter",
"InjectionResult",
"InjectionTarget",
"RegisteredContentScript",
"ScriptInjection",
"ExecutionWorld",
"StyleOrigin"
],
"events": []
},
"search": {
"properties": [],
"methods": ["query"],
"types": ["QueryInfo", "Disposition"],
"events": []
},
"serial": {
"properties": [],
"methods": [
"clearBreak",
"connect",
"disconnect",
"flush",
"getConnections",
"getControlSignals",
"getDevices",
"getInfo",
"send",
"setBreak",
"setControlSignals",
"setPaused",
"update"
],
"types": [
"ConnectionInfo",
"ConnectionOptions",
"DeviceControlSignals",
"DeviceInfo",
"HostControlSignals",
"ReceiveErrorInfo",
"ReceiveInfo",
"SendInfo",
"DataBits",
"ParityBit",
"ReceiveError",
"SendError",
"StopBits"
],
"events": ["onReceive", "onReceiveError"]
},
"sessions": {
"properties": ["MAX_SESSION_RESULTS"],
"methods": ["getDevices", "getRecentlyClosed", "restore"],
"types": ["Device", "Filter", "Session"],
"events": ["onChanged"]
},
"sharedModule": {
"properties": [],
"methods": [],
"types": ["Export", "Import"],
"events": []
},
"sidePanel": {
"properties": [],
"methods": [
"getOptions",
"getPanelBehavior",
"open",
"setOptions",
"setPanelBehavior"
],
"types": [
"GetPanelOptions",
"OpenOptions",
"PanelBehavior",
"PanelOptions",
"SidePanel"
],
"events": []
},
"socket": {
"properties": [],
"methods": [
"accept",
"bind",
"connect",
"create",
"destroy",
"disconnect",
"getInfo",
"getJoinedGroups",
"getNetworkList",
"joinGroup",
"leaveGroup",
"listen",
"read",
"recvFrom",
"secure",
"sendTo",
"setKeepAlive",
"setMulticastLoopbackMode",
"setMulticastTimeToLive",
"setNoDelay",
"write"
],
"types": [
"AcceptInfo",
"CreateInfo",
"CreateOptions",
"NetworkInterface",
"ReadInfo",
"RecvFromInfo",
"SecureOptions",
"SocketInfo",
"TLSVersionConstraints",
"WriteInfo",
"SocketType"
],
"events": []
},
"sockets.tcp": {
"properties": [],
"methods": [
"close",
"connect",
"create",
"disconnect",
"getInfo",
"getSockets",
"secure",
"send",
"setKeepAlive",
"setNoDelay",
"setPaused",
"update"
],
"types": [
"CreateInfo",
"ReceiveErrorInfo",
"ReceiveInfo",
"SecureOptions",
"SendInfo",
"SocketInfo",
"SocketProperties",
"TLSVersionConstraints",
"DnsQueryType"
],
"events": ["onReceive", "onReceiveError"]
},
"sockets.tcpServer": {
"properties": [],
"methods": [
"close",
"create",
"disconnect",
"getInfo",
"getSockets",
"listen",
"setPaused",
"update"
],
"types": [
"AcceptErrorInfo",
"AcceptInfo",
"CreateInfo",
"SocketInfo",
"SocketProperties"
],
"events": ["onAccept", "onAcceptError"]
},
"sockets.udp": {
"properties": [],
"methods": [
"bind",
"close",
"create",
"getInfo",
"getJoinedGroups",
"getSockets",
"joinGroup",
"leaveGroup",
"send",
"setBroadcast",
"setMulticastLoopbackMode",
"setMulticastTimeToLive",
"setPaused",
"update"
],
"types": [
"CreateInfo",
"ReceiveErrorInfo",
"ReceiveInfo",
"SendInfo",
"SocketInfo",
"SocketProperties",
"DnsQueryType"
],
"events": ["onReceive", "onReceiveError"]
},
"storage": {
"properties": ["local", "managed", "session", "sync"],
"methods": [],
"types": ["StorageArea", "StorageChange", "AccessLevel"],
"events": ["onChanged"]
},
"syncFileSystem": {
"properties": [],
"methods": [
"getConflictResolutionPolicy",
"getFileStatus",
"getFileStatuses",
"getServiceStatus",
"getUsageAndQuota",
"requestFileSystem",
"setConflictResolutionPolicy"
],
"types": [
"FileInfo",
"FileStatusInfo",
"ServiceInfo",
"StorageInfo",
"ConflictResolutionPolicy",
"FileStatus",
"ServiceStatus",
"SyncAction",
"SyncDirection"
],
"events": ["onFileStatusChanged", "onServiceStatusChanged"]
},
"system.cpu": {
"properties": [],
"methods": ["getInfo"],
"types": ["CpuInfo", "CpuTime", "ProcessorInfo"],
"events": []
},
"system.display": {
"properties": [],
"methods": [
"clearTouchCalibration",
"completeCustomTouchCalibration",
"enableUnifiedDesktop",
"getDisplayLayout",
"getInfo",
"overscanCalibrationAdjust",
"overscanCalibrationComplete",
"overscanCalibrationReset",
"overscanCalibrationStart",
"setDisplayLayout",
"setDisplayProperties",
"setMirrorMode",
"showNativeTouchCalibration",
"startCustomTouchCalibration"
],
"types": [
"Bounds",
"DisplayLayout",
"DisplayMode",
"DisplayProperties",
"DisplayUnitInfo",
"Edid",
"GetInfoFlags",
"Insets",
"MirrorModeInfo",
"Point",
"TouchCalibrationPair",
"TouchCalibrationPairQuad",
"ActiveState",
"LayoutPosition",
"MirrorMode"
],
"events": ["onDisplayChanged"]
},
"system.memory": {
"properties": [],
"methods": ["getInfo"],
"types": ["MemoryInfo"],
"events": []
},
"system.network": {
"properties": [],
"methods": ["getNetworkInterfaces"],
"types": ["NetworkInterface"],
"events": []
},
"system.storage": {
"properties": [],
"methods": ["ejectDevice", "getAvailableCapacity", "getInfo"],
"types": [
"StorageAvailableCapacityInfo",
"StorageUnitInfo",
"EjectDeviceResultCode",
"StorageUnitType"
],
"events": ["onAttached", "onDetached"]
},
"systemLog": {
"properties": [],
"methods": ["add"],
"types": ["MessageOptions"],
"events": []
},
"tabCapture": {
"properties": [],
"methods": ["capture", "getCapturedTabs", "getMediaStreamId"],
"types": [
"CaptureInfo",
"CaptureOptions",
"GetMediaStreamOptions",
"MediaStreamConstraint",
"TabCaptureState"
],
"events": ["onStatusChanged"]
},
"tabGroups": {
"properties": ["TAB_GROUP_ID_NONE"],
"methods": ["get", "move", "query", "update"],
"types": ["TabGroup", "Color"],
"events": ["onCreated", "onMoved", "onRemoved", "onUpdated"]
},
"tabs": {
"properties": [
"MAX_CAPTURE_VISIBLE_TAB_CALLS_PER_SECOND",
"TAB_ID_NONE",
"TAB_INDEX_NONE"
],
"methods": [
"captureVisibleTab",
"connect",
"create",
"detectLanguage",
"discard",
"duplicate",
"executeScript",
"get",
"getAllInWindow",
"getCurrent",
"getSelected",
"getZoom",
"getZoomSettings",
"goBack",
"goForward",
"group",
"highlight",
"insertCSS",
"move",
"query",
"reload",
"remove",
"removeCSS",
"sendMessage",
"sendRequest",
"setZoom",
"setZoomSettings",
"ungroup",
"update"
],
"types": [
"MutedInfo",
"Tab",
"ZoomSettings",
"MutedInfoReason",
"TabStatus",
"WindowType",
"ZoomSettingsMode",
"ZoomSettingsScope"
],
"events": [
"onActivated",
"onActiveChanged",
"onAttached",
"onCreated",
"onDetached",
"onHighlightChanged",
"onHighlighted",
"onMoved",
"onRemoved",
"onReplaced",
"onSelectionChanged",
"onUpdated",
"onZoomChange"
]
},
"topSites": {
"properties": [],
"methods": ["get"],
"types": ["MostVisitedURL"],
"events": []
},
"tts": {
"properties": [],
"methods": ["getVoices", "isSpeaking", "pause", "resume", "speak", "stop"],
"types": ["TtsEvent", "TtsOptions", "TtsVoice", "EventType", "VoiceGender"],
"events": ["onVoicesChanged"]
},
"ttsEngine": {
"properties": [],
"methods": ["updateLanguage", "updateVoices"],
"types": [
"AudioBuffer",
"AudioStreamOptions",
"LanguageStatus",
"LanguageUninstallOptions",
"SpeakOptions",
"TtsClient",
"LanguageInstallStatus",
"TtsClientSource",
"VoiceGender"
],
"events": [
"onInstallLanguageRequest",
"onLanguageStatusRequest",
"onPause",
"onResume",
"onSpeak",
"onSpeakWithAudioStream",
"onStop",
"onUninstallLanguageRequest"
]
},
"types": {
"properties": [],
"methods": [],
"types": ["ChromeSetting", "ChromeSettingScope", "LevelOfControl"],
"events": []
},
"usb": {
"properties": [],
"methods": [
"bulkTransfer",
"claimInterface",
"closeDevice",
"controlTransfer",
"findDevices",
"getConfiguration",
"getConfigurations",
"getDevices",
"getUserSelectedDevices",
"interruptTransfer",
"isochronousTransfer",
"listInterfaces",
"openDevice",
"releaseInterface",
"requestAccess",
"resetDevice",
"setConfiguration",
"setInterfaceAlternateSetting"
],
"types": [
"ConfigDescriptor",
"ConnectionHandle",
"ControlTransferInfo",
"Device",
"DeviceFilter",
"DevicePromptOptions",
"EndpointDescriptor",
"EnumerateDevicesAndRequestAccessOptions",
"EnumerateDevicesOptions",
"GenericTransferInfo",
"InterfaceDescriptor",
"IsochronousTransferInfo",
"TransferResultInfo",
"Direction",
"Recipient",
"RequestType",
"SynchronizationType",
"TransferType",
"UsageType"
],
"events": ["onDeviceAdded", "onDeviceRemoved"]
},
"userScripts": {
"properties": [],
"methods": [
"configureWorld",
"execute",
"getScripts",
"getWorldConfigurations",
"register",
"resetWorldConfiguration",
"unregister",
"update"
],
"types": [
"InjectionResult",
"InjectionTarget",
"RegisteredUserScript",
"ScriptSource",
"UserScriptFilter",
"UserScriptInjection",
"WorldProperties",
"ExecutionWorld"
],
"events": []
},
"virtualKeyboard": {
"properties": [],
"methods": ["restrictFeatures"],
"types": ["FeatureRestrictions"],
"events": []
},
"vpnProvider": {
"properties": [],
"methods": [
"createConfig",
"destroyConfig",
"notifyConnectionStateChanged",
"sendPacket",
"setParameters"
],
"types": ["Parameters", "PlatformMessage", "UIEvent", "VpnConnectionState"],
"events": [
"onConfigCreated",
"onConfigRemoved",
"onPacketReceived",
"onPlatformMessage",
"onUIEvent"
]
},
"wallpaper": {
"properties": [],
"methods": ["setWallpaper"],
"types": ["WallpaperLayout"],
"events": []
},
"webAccessibleResources": {
"properties": [],
"methods": [],
"types": ["WebAccessibleResource"],
"events": []
},
"webAuthenticationProxy": {
"properties": [],
"methods": [
"attach",
"completeCreateRequest",
"completeGetRequest",
"completeIsUvpaaRequest",
"detach"
],
"types": [
"CreateRequest",
"CreateResponseDetails",
"DOMExceptionDetails",
"GetRequest",
"GetResponseDetails",
"IsUvpaaRequest",
"IsUvpaaResponseDetails"
],
"events": [
"onCreateRequest",
"onGetRequest",
"onIsUvpaaRequest",
"onRemoteSessionStateChange",
"onRequestCanceled"
]
},
"webNavigation": {
"properties": [],
"methods": ["getAllFrames", "getFrame"],
"types": ["TransitionQualifier", "TransitionType"],
"events": [
"onBeforeNavigate",
"onCommitted",
"onCompleted",
"onCreatedNavigationTarget",
"onDOMContentLoaded",
"onErrorOccurred",
"onHistoryStateUpdated",
"onReferenceFragmentUpdated",
"onTabReplaced"
]
},
"webRequest": {
"properties": ["MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES"],
"methods": ["handlerBehaviorChanged"],
"types": [
"BlockingResponse",
"RequestFilter",
"UploadData",
"FormDataItem",
"HttpHeaders",
"IgnoredActionType",
"OnAuthRequiredOptions",
"OnBeforeRedirectOptions",
"OnBeforeRequestOptions",
"OnBeforeSendHeadersOptions",
"OnCompletedOptions",
"OnErrorOccurredOptions",
"OnHeadersReceivedOptions",
"OnResponseStartedOptions",
"OnSendHeadersOptions",
"ResourceType"
],
"events": [
"onActionIgnored",
"onAuthRequired",
"onBeforeRedirect",
"onBeforeRequest",
"onBeforeSendHeaders",
"onCompleted",
"onErrorOccurred",
"onHeadersReceived",
"onResponseStarted",
"onSendHeaders"
]
},
"webviewTag": {
"properties": ["contentWindow", "contextMenus", "request"],
"methods": [
"addContentScripts",
"back",
"canGoBack",
"canGoForward",
"captureVisibleRegion",
"clearData",
"executeScript",
"find",
"forward",
"getAudioState",
"getProcessId",
"getUserAgent",
"getZoom",
"getZoomMode",
"go",
"insertCSS",
"isAudioMuted",
"isSpatialNavigationEnabled",
"isUserAgentOverridden",
"loadDataWithBaseUrl",
"print",
"reload",
"removeContentScripts",
"setAudioMuted",
"setSpatialNavigationEnabled",
"setUserAgentOverride",
"setZoom",
"setZoomMode",
"stop",
"stopFinding",
"terminate"
],
"types": [
"ClearDataOptions",
"ClearDataTypeSet",
"ContentScriptDetails",
"ContentWindow",
"ContextMenuCreateProperties",
"ContextMenuUpdateProperties",
"ContextMenus",
"DialogController",
"DownloadPermissionRequest",
"FileSystemPermissionRequest",
"FindCallbackResults",
"FindOptions",
"FullscreenPermissionRequest",
"GeolocationPermissionRequest",
"HidPermissionRequest",
"InjectDetails",
"InjectionItems",
"LoadPluginPermissionRequest",
"MediaPermissionRequest",
"NewWindow",
"PointerLockPermissionRequest",
"SelectionRect",
"WebRequestEventInterface",
"ContextType",
"ZoomMode"
],
"events": [
"close",
"consolemessage",
"contentload",
"dialog",
"exit",
"findupdate",
"loadabort",
"loadcommit",
"loadredirect",
"loadstart",
"loadstop",
"newwindow",
"permissionrequest",
"responsive",
"sizechanged",
"unresponsive",
"zoomchange"
]
},
"windows": {
"properties": ["WINDOW_ID_CURRENT", "WINDOW_ID_NONE"],
"methods": [
"create",
"get",
"getAll",
"getCurrent",
"getLastFocused",
"remove",
"update"
],
"types": [
"QueryOptions",
"Window",
"CreateType",
"WindowState",
"WindowType"
],
"events": ["onBoundsChanged", "onCreated", "onFocusChanged", "onRemoved"]
}
}
================================================
FILE: .repo/sample-list-generator/package.json
================================================
{
"name": "sample-list-generator",
"version": "1.0.0",
"scripts": {
"start": "ts-node src/index.ts",
"prepare-chrome-types": "ts-node src/prepare-chrome-types.ts",
"test": "mocha --require ts-node/register test/**/*.test.ts"
},
"devDependencies": {
"@types/babel__core": "7.20.1",
"@types/mocha": "10.0.1",
"@types/node-fetch": "2.6.4",
"@types/sinon": "10.0.15",
"mocha": "10.2.0",
"sinon": "15.2.0",
"ts-node": "10.9.1",
"typescript": "5.1.3"
},
"dependencies": {
"@babel/core": "7.22.5",
"node-fetch": "2.6.11",
"typedoc": "0.24.8"
}
}
================================================
FILE: .repo/sample-list-generator/src/constants.ts
================================================
export type FolderTypes = "API_SAMPLE" | "FUNCTIONAL_SAMPLE";
// Define all available folders for samples
export const AVAILABLE_FOLDERS: { path: string, type: FolderTypes }[] = [
{
path: 'api-samples',
type: 'API_SAMPLE'
},
{
path: 'functional-samples',
type: 'FUNCTIONAL_SAMPLE'
}
];
export const REPO_BASE_URL =
'https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/';
================================================
FILE: .repo/sample-list-generator/src/index.ts
================================================
import path from 'path';
import fs from 'fs/promises';
import { getAllSamples } from './libs/sample-collector';
const start = async () => {
const samples = await getAllSamples();
// write to extension-samples.json
await fs.writeFile(
path.join(__dirname, '../extension-samples.json'),
JSON.stringify(samples, null, 2)
);
};
start();
================================================
FILE: .repo/sample-list-generator/src/libs/api-detector.ts
================================================
import {
ApiItem,
ApiItemWithType,
ApiTypeResult,
ExtensionApiMap
} from '../types';
import * as babel from '@babel/core';
import { isIdentifier } from '@babel/types';
import fs from 'fs/promises';
import { getAllJsFiles } from '../utils/filesystem';
import { loadExtensionApis } from './api-loader';
let EXTENSION_API_MAP: ExtensionApiMap = loadExtensionApis();
/**
* Gets the type of an api call.
* @param namespace - The namespace of the api call.
* @param propertyName - The property name of the api call.
* @returns The type of the api call.
* @example
* getApiType('tabs', 'query')
* // returns 'method'
*/
export const getApiType = (
namespace: string,
propertyName: string
): ApiTypeResult => {
namespace = namespace.replace(/_/g, '.');
const apiTypes = EXTENSION_API_MAP[namespace];
if (apiTypes) {
if (apiTypes.methods.includes(propertyName)) {
return 'method';
}
if (apiTypes.events.includes(propertyName)) {
return 'event';
}
if (apiTypes.properties.includes(propertyName)) {
return 'property';
}
if (apiTypes.types.includes(propertyName)) {
return 'type';
}
}
return 'unknown';
};
/**
* Gets all the api calls in a sample.
* @param sampleFolderPath - The path to the sample folder.
* @returns A promise that resolves to an array of apis the sample uses.
*/
export const getApiListForSample = async (
sampleFolderPath: string
): Promise<ApiItemWithType[]> => {
// get all js files in the folder
const jsFiles = await getAllJsFiles(sampleFolderPath);
const calls: ApiItemWithType[] = [];
await Promise.all(
jsFiles.map(async (file) => {
const callsFromFile = await extractApiCalls((await fs.readFile(file)).toString('utf-8'));
calls.push(...callsFromFile);
})
);
return uniqueItems(calls);
};
/**
* Gets the complete API call for the member expression.
* @param path - The path to the MemberExpression node.
* @returns The full member expression.
* @example
* getFullMemberExpression(path.node)
* // returns ['chrome', 'tabs', 'query']
*/
export function getFullMemberExpression(
path: babel.NodePath<babel.types.MemberExpression>
): string[] {
const result: string[] = [];
// Include the chrome. or browser. identifier
if (isIdentifier(path.node.object)) {
result.push(path.node.object.name);
} else {
// We don't support expressions
return result;
}
while (path) {
if (isIdentifier(path.node.property)) {
result.push(path.node.property.name);
} else {
// We don't support expressions
break;
}
const parentPath = path.parentPath;
if (!parentPath || !parentPath.isMemberExpression()) {
break;
} else {
path = parentPath;
}
}
return result;
}
/**
* Gets the namespace and property name of an api call.
* @param parts - The parts of the api call.
* @returns The namespace and property name of the api call.
* @example
* getApiItem(['chrome', 'tabs', 'query'])
* // returns { namespace: 'tabs', propertyName: 'query' }
* getApiItem(['chrome', 'devtools', 'inspectedWindow', 'eval'])
* // returns { namespace: 'devtools.inspectedWindow', propertyName: 'eval' }
*/
export function getApiItem(parts: string[]): ApiItem {
let namespace = '';
let propertyName = '';
// For some apis like `chrome.devtools.inspectedWindow.eval`,
// the namespace is actually `devtools.inspectedWindow`.
// So we need to check if the first two parts combined is a valid namespace.
if (EXTENSION_API_MAP[`${parts[0]}.${parts[1]}`]) {
namespace = `${parts[0]}.${parts[1]}`;
propertyName = parts[2];
} else {
namespace = parts[0];
propertyName = parts[1];
}
return { namespace, propertyName };
}
/**
* Filters an array of ApiItemWithType to remove duplicates.
* @param array - The array of ApiItemWithType to filter.
*/
function uniqueItems(array: ApiItemWithType[]) {
const tmp = new Set<string>();
return array.filter((item) => {
const fullApiString = `${item.namespace}.${item.propertyName}`;
return !tmp.has(fullApiString) && tmp.add(fullApiString);
});
}
/**
* Extracts all chrome and browser api calls from a file.
* @param script - The script string to extract api calls from.
* @returns A promise that resolves to an array of ApiItemWithType.
* @example
* extractApiCalls('chrome.tabs.query({})')
* // returns [{ type: 'method', namespace: 'tabs', propertyName: 'query' }]
*/
export const extractApiCalls = (script: string): Promise<ApiItemWithType[]> => {
return new Promise((resolve, reject) => {
const calls: ApiItemWithType[] = [];
babel.parse(
script,
{ ast: true, compact: false },
(err, result) => {
if (err || !result) {
reject(err);
return;
}
babel.traverse(result, {
MemberExpression(path) {
const parts = getFullMemberExpression(path);
// not a chrome or browser api
if (!['chrome', 'browser'].includes(parts.shift() || '')) {
return;
}
const { namespace, propertyName } = getApiItem(parts);
let type = getApiType(namespace, propertyName);
// api not found
if (type === 'unknown') {
console.warn('api not found', namespace, propertyName);
return;
}
calls.push({ type, namespace, propertyName });
}
});
resolve(calls);
}
);
});
};
================================================
FILE: .repo/sample-list-generator/src/libs/api-loader.ts
================================================
import path from 'path';
import fs from 'fs';
import type { ExtensionApiMap } from '../types';
import { isFileExistsSync } from '../utils/filesystem';
export const loadExtensionApis = (): ExtensionApiMap => {
const filePath = path.join(__dirname, '../../extension-apis.json');
// check if extension-apis.json exists
if (!isFileExistsSync(filePath)) {
console.error(
'extension-apis.json does not exist. Please run "npm run prepare-chrome-types" first.'
);
process.exit(1);
}
let data = fs.readFileSync(filePath, 'utf8');
const apiMap = JSON.parse(data);
// Due to the specific implementation of this API, we need to manually add it
// to the list of APIs recognised by the sample list generator.
apiMap['aiOriginTrial.languageModel'] = {
properties: [],
methods: ['create', 'capabilities', 'params', 'availability'],
types: [],
events: []
};
return apiMap;
};
================================================
FILE: .repo/sample-list-generator/src/libs/sample-collector.ts
================================================
import path from 'path';
import fs from 'fs/promises';
import { AVAILABLE_FOLDERS, REPO_BASE_URL } from '../constants';
import { getApiListForSample } from './api-detector';
import type { AvailableFolderItem, SampleItem } from '../types';
import { getBasePath, isDirectory, isFileExists } from '../utils/filesystem';
import { getManifest } from '../utils/manifest';
export const getAllSamples = async () => {
let samples: SampleItem[] = [];
// loop through all available folders
// e.g. api-samples, functional-samples
for (let samplesFolder of AVAILABLE_FOLDERS) {
const currentSamples = await getSamples(
samplesFolder.path,
samplesFolder.type
);
samples.push(...currentSamples);
}
return samples;
};
const getSamples = async (
currentRootFolderPath: string,
sampleType: AvailableFolderItem['type']
): Promise<SampleItem[]> => {
const samples: SampleItem[] = [];
const basePath = getBasePath();
// get all contents in the folder
const contents = await fs.readdir(path.join(basePath, currentRootFolderPath));
for (let content of contents) {
const currentPath = path.join(basePath, currentRootFolderPath, content);
// if content is not a folder, skip
if (!(await isDirectory(currentPath))) {
continue;
}
const manifestPath = path.join(currentPath, 'manifest.json');
// check if manifest.json exists
const manifestExists = await isFileExists(manifestPath);
if (manifestExists) {
// get manifest metadata
const manifestData = await getManifest(manifestPath);
// add to samples
samples.push({
type: sampleType,
name: content,
repo_link: new URL(
`${REPO_BASE_URL}${currentPath.replace(basePath, '')}`
).toString(),
apis: await getApiListForSample(currentPath),
title: manifestData.name || content,
description: manifestData.description || '',
permissions: manifestData.permissions || []
});
} else {
// if manifest.json does not exist, loop through all folders in current folder
const currentSamples = await getSamples(
path.join(currentRootFolderPath, content),
sampleType
);
samples.push(...currentSamples);
}
}
return samples;
};
================================================
FILE: .repo/sample-list-generator/src/prepare-chrome-types.ts
================================================
import fetch from 'node-fetch';
import path from 'path';
import fs from 'fs/promises';
import { ExtensionApiMap } from './types';
import { ReflectionKind } from 'typedoc';
// Bucket used to store processed types data
const STORAGE_BUCKET = process.env.STORAGE_BUCKET;
// Fetch the latest version of the chrome types from storage
const fetchChromeTypes = async (): Promise<Record<string, any>> => {
if (!STORAGE_BUCKET) {
throw new Error('The STORAGE_BUCKET environment variable must be set.');
}
console.log('Fetching chrome types...');
const response = await fetch(
`https://storage.googleapis.com/download/storage/v1/b/${STORAGE_BUCKET}/o/chrome-types.json?alt=media`
);
const chromeTypes = await response.json();
return chromeTypes;
};
const run = async () => {
const result: ExtensionApiMap = {};
const chromeTypes = await fetchChromeTypes();
for (const [chromeApiKey, chromeApiDetails] of Object.entries(chromeTypes)) {
const apiDetails: ExtensionApiMap[string] = {
properties: [],
methods: [],
types: [],
events: []
};
for (let property of chromeApiDetails._type.properties) {
const name = property.name as string;
// check property type
let propertyType = 'types';
if (property.kind & ReflectionKind.VariableOrProperty) {
propertyType = 'properties';
}
if (
property.type?.type === 'reference' &&
['CustomChromeEvent', 'events.Event', 'Event'].includes(
property.type.name
)
) {
propertyType = 'events';
}
if (property.signatures) {
propertyType = 'methods';
}
apiDetails[propertyType].push(name);
}
result[chromeApiKey] = apiDetails;
}
console.log('Writing to file...');
await fs.writeFile(
path.join(__dirname, '../extension-apis.json'),
JSON.stringify(
{
_comment:
'This file is autogenerated by running `npm run prepare-chrome-types`, do not edit.',
...result
},
null,
2
)
);
console.log('Done!');
};
run();
================================================
FILE: .repo/sample-list-generator/src/types.ts
================================================
import type { FolderTypes } from './constants';
export interface ApiItem {
namespace: string;
propertyName: string;
}
export interface ApiItemWithType extends ApiItem {
type: ApiTypeResult;
}
export interface ManifestData {
[key: string]: string;
name: string;
description: string;
permissions: string[];
}
export interface LocaleData {
[key: string]: {
message: string;
description: string;
};
}
export type SampleItem = {
type: FolderTypes;
name: string;
repo_link: string;
apis: ApiItem[];
title: string;
description: string;
permissions: string[];
};
export interface AvailableFolderItem {
path: string;
type: FolderTypes;
}
export type ApiTypeResult =
| 'event'
| 'method'
| 'property'
| 'type'
| 'unknown';
export type ExtensionApiMap = Record<string, Record<string, string[]>>
================================================
FILE: .repo/sample-list-generator/src/utils/filesystem.ts
================================================
import fs from 'fs/promises';
import { accessSync } from 'fs';
import path from 'path';
export const getAllFiles = async (dir: string): Promise<string[]> => {
const result: string[] = [];
for (const file of await fs.readdir(dir)) {
const filePath = path.join(dir, file);
const stats = await fs.stat(filePath);
if (stats.isFile()) {
result.push(filePath);
} else if (stats.isDirectory()) {
if (file === "node_modules") continue;
result.push(...(await getAllFiles(filePath)));
}
}
return result;
};
export const getAllJsFiles = async (dir: string): Promise<string[]> => {
const allFiles = await getAllFiles(dir);
return allFiles.filter((file) =>
file.endsWith('.js')
);
}
export const isDirectory = async (path: string): Promise<boolean> => {
return (await fs.stat(path)).isDirectory()
}
export const isFileExists = async (filePath: string): Promise<boolean> => {
try {
await fs.access(filePath);
return true;
} catch {
return false;
}
};
export const isFileExistsSync = (filePath: string): boolean => {
try {
accessSync(filePath);
return true;
} catch {
return false;
}
};
export const getBasePath = (): string => {
return path.join(__dirname, '../../../../');
};
================================================
FILE: .repo/sample-list-generator/src/utils/manifest.ts
================================================
import fs from 'fs/promises';
import { dirname } from 'path';
import { ManifestData, LocaleData } from '../types';
const localeRegex = /__MSG_([^_]*)__/
function usesLocaleFiles(obj: object): boolean {
// recursively check if any value in a supplied object
// is a string that starts with __MSG_. If found, it
// means that the extension uses locale files.
return Object.values(obj).some((value) => {
if (Object.prototype.toString.call(value) === '[object Object]') {
return usesLocaleFiles(value);
}
return typeof value === 'string' && value.startsWith('__MSG_')
});
}
export const getManifest = async (
manifestPath: string
): Promise<ManifestData> => {
const manifest = await fs.readFile(manifestPath, 'utf8');
const parsedManifest = JSON.parse(manifest);
if (usesLocaleFiles(parsedManifest)) {
const directory = dirname(manifestPath);
const localeFile: string = await fs.readFile(`${directory}/_locales/en/messages.json`, 'utf8')
const localeData: LocaleData = JSON.parse(localeFile);
for (const [key, value] of Object.entries(parsedManifest)) {
if (typeof value === 'string' && value.startsWith('__MSG_')) {
const localeKey: string | undefined = value.match(localeRegex)?.[1];
if (localeKey) {
const localeKeyData = localeData[localeKey]
const localeMessage: string = localeKeyData?.message;
parsedManifest[key] = localeMessage;
}
}
}
}
return parsedManifest;
};
================================================
FILE: .repo/sample-list-generator/test/api-detector/api-detector.test.ts
================================================
import { describe, it, beforeEach } from 'mocha';
import assert from 'assert';
import sinon from 'sinon';
import {
getApiType,
extractApiCalls,
getApiItem
} from '../../src/libs/api-detector';
describe('API Detector', function () {
beforeEach(function () {
sinon.reset();
});
describe('extractApiCalls()', function () {
it('should return correct api list for sample file (normal)', async function () {
const file = `
let a = 1;
let b = chrome.action.getBadgeText();
let c = chrome.action.setBadgeText(a);
chrome.action.onClicked.addListener(function (tab) {
console.log('clicked');
});
alert(chrome.contextMenus.ACTION_MENU_TOP_LEVEL_LIMIT)
`;
const result = await extractApiCalls(file);
assert.deepEqual(result, [
{
namespace: 'action',
propertyName: 'getBadgeText',
type: 'method'
},
{
namespace: 'action',
propertyName: 'setBadgeText',
type: 'method'
},
{
namespace: 'action',
propertyName: 'onClicked',
type: 'event'
},
{
namespace: 'contextMenus',
propertyName: 'ACTION_MENU_TOP_LEVEL_LIMIT',
type: 'property'
}
]);
});
it('should return correct api list for sample file (storage)', async function () {
const file = `
let b = await chrome.storage.local.get();
let c = await chrome.storage.sync.get();
let d = await chrome.storage.managed.get();
let e = await chrome.storage.session.get();
let f = await chrome.storage.onChanged.addListener();
`;
const result = await extractApiCalls(file);
assert.deepEqual(result, [
{
namespace: 'storage',
propertyName: 'local',
type: 'property'
},
{
namespace: 'storage',
propertyName: 'sync',
type: 'property'
},
{
namespace: 'storage',
propertyName: 'managed',
type: 'property'
},
{
namespace: 'storage',
propertyName: 'session',
type: 'property'
},
{
namespace: 'storage',
propertyName: 'onChanged',
type: 'event'
}
]);
});
it('should return correct api list for sample file (async)', async function () {
const file = `
let a = 1;
let b = await chrome.action.getBadgeText();
await chrome.action.setBadgeText(a);
`;
const result = await extractApiCalls(file);
assert.deepEqual(result, [
{
namespace: 'action',
propertyName: 'getBadgeText',
type: 'method'
},
{
namespace: 'action',
propertyName: 'setBadgeText',
type: 'method'
}
]);
});
it('should return correct api list for sample file (special case)', async function () {
const file = `
let a = 1;
let b = await chrome.system.cpu.getInfo();
chrome.devtools.network.onRequestFinished.addListener(
function(request) {
if (request.response.bodySize > 40*1024) {
chrome.devtools.inspectedWindow.eval(
'console.log("Large image: " + unescape("' +
escape(request.request.url) + '"))');
}
}
);
`;
const result = await extractApiCalls(file);
assert.deepEqual(result, [
{
namespace: 'system.cpu',
propertyName: 'getInfo',
type: 'method'
},
{
namespace: 'devtools.network',
propertyName: 'onRequestFinished',
type: 'event'
},
{
namespace: 'devtools.inspectedWindow',
propertyName: 'eval',
type: 'method'
}
]);
});
});
describe('getApiType()', function () {
it('should return correct type of api in normal case', function () {
let apiType = getApiType('action', 'getBadgeText');
assert.equal(apiType, 'method');
});
it('should return correct type of api in special case', function () {
let apiType = getApiType('devtools.network', 'onNavigated');
assert.equal(apiType, 'event');
});
it('should return unknown when api not found', function () {
let apiType = getApiType('action', '123');
assert.equal(apiType, 'unknown');
});
});
describe('getApiItem()', function () {
it('should return correct api item', function () {
let apiItem = getApiItem(['action', 'getBadgeText']);
assert.deepEqual(apiItem, {
namespace: 'action',
propertyName: 'getBadgeText'
});
});
it('should return correct api item (storage)', function () {
let apiItem = getApiItem(['storage', 'sync', 'get']);
assert.deepEqual(apiItem, {
namespace: 'storage',
propertyName: 'sync'
});
apiItem = getApiItem(['storage', 'sync', 'onChanged']);
assert.deepEqual(apiItem, {
namespace: 'storage',
propertyName: 'sync'
});
apiItem = getApiItem(['storage', 'onChanged']);
assert.deepEqual(apiItem, {
namespace: 'storage',
propertyName: 'onChanged'
});
});
it('should return correct api item (special case)', function () {
let apiItem = getApiItem([
'devtools',
'network',
'onRequestFinished',
'addListener'
]);
assert.deepEqual(apiItem, {
namespace: 'devtools.network',
propertyName: 'onRequestFinished'
});
});
});
});
================================================
FILE: CONTRIBUTING.md
================================================
# How to Contribute
We'd love to accept your patches and contributions to this project.
## Before you begin
### Sign our Contributor License Agreement
Contributions to this project must be accompanied by a
[Contributor License Agreement](https://cla.developers.google.com/about) (CLA).
You (or your employer) retain the copyright to your contribution; this simply
gives us permission to use and redistribute your contributions as part of the
project.
If you or your current employer have already signed the Google CLA (even if it
was for a different project), you probably don't need to do it again.
Visit <https://cla.developers.google.com/> to see your current agreements or to
sign a new one.
### Review our Community Guidelines
This project follows [Google's Open Source Community
Guidelines](https://opensource.google/conduct/).
## Contribution process
### Create an issue first
Before adding a new sample, [create an issue first](https://github.com/GoogleChrome/chrome-extensions-samples/issues/new).
Describe why this sample is needed and how you plan to implement it. Only once
you've got the approval from one of the maintainers start working on a PR. Non
trivial PRs without an approved issue will be rejected.
### Code Reviews
All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.
### Setting up your Environment
If you want to contribute to this repository, you need to first [create your own fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo).
After forking chrome-extensions-samples to your own Github account, run the
following steps to get started:
```sh
# clone your fork to your local machine
git clone https://github.com/your-fork/chrome-extensions-samples.git
cd chrome-extensions-samples
# install dependencies
npm install
```
### Writing a README
All new code samples or samples updated from Manifest V2 should include a
README file. Please copy the [provided template](./README-template.md) into
your sample's folder and follow the instructions therein.
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README-template.md
================================================
_To create a README for your sample_
1. _Copy this file to your sample folder._
1. _Enter the requested information below._
1. _Delete these instructions._
_For API samples use the name of the API. For example, a sample about the `chrome.declarativeNetRequest` would simply be called "chrome.declarativeNetRequest". (Do not use special formatting in headings.) For functional samples, the title should be what the sample demonstrates_
# Title
_Describe what the sample demonstrates. If this is an API sample, link to the API._
This sample demonstrates ...
## Overview
_Describe how the sample demonstrates the API or use case and briefly describe how to use it._
## Implementation Notes
_Add any information that doesn't fit elsewhere in the README._
## Running this extension
1. Clone this repository.
2. Load this directory in Chrome as an [unpacked extension](https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/#load-unpacked).
3. _Add the rest of the instructions here_
================================================
FILE: README.md
================================================
# Chrome Extensions samples
Official samples for Chrome Extensions and the Chrome Apps platform. (Chrome Apps are deprecated. Learn more [on the Chromium blog](https://blog.chromium.org/2020/08/changes-to-chrome-app-support-timeline.html)).
For more information on extensions, see [Chrome Developers](https://developer.chrome.com).
## Explore samples
The directory structure is as follows:
- [api-samples/](api-samples/) - extensions focused on a single API package
- [functional-samples/](functional-samples/) - full featured extensions spanning multiple API packages
- [\_archive/apps/](_archive/apps/) - deprecated Chrome Apps platform (not listed below)
- [\_archive/mv2/](_archive/mv2/) - resources for manifest version 2
You can also use the [Samples](https://developer.chrome.com/docs/extensions/samples/) page to discover extensions by type, permissions, and extension API.
## Installation
To experiment with these samples, please clone this repo and use 'Load Unpacked Extension'.
Read more on [Development Basics](https://developer.chrome.com/docs/extensions/mv3/getstarted/development-basics/#load-unpacked).
## Contributing
Please see [the CONTRIBUTING file](/CONTRIBUTING.md) for information on contributing to the `chrome-extensions-samples` project.
## License
`chrome-extensions-samples` are authored by Google and are licensed under the [Apache License, Version 2.0](/LICENSE).
================================================
FILE: _archive/apps/README.md
================================================
# Chrome Apps samples
Official samples for deprecated Chrome Apps platform. If you want to learn about the platform, you can:
1. look at the source code of the samples below. Most samples have a "Try it now" button that allows you to install and play with it.
2. read the [official docs](http://developer.chrome.com/apps)
If you have questions, [search](http://stackoverflow.com/questions/tagged/google-chrome-app) or [ask at StackOverflow](http://stackoverflow.com/questions/ask?tags=google-chrome-app) (observe the google-chrome-app tag) or join the [Chromium Apps](https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-apps) Google group.
# Samples
<!-- sample_table_autogen_start THIS TABLE IS AUTOGENERATED! PLEASE, DON'T EDIT IT DIRECTLY! -->
Sample | API or feature | Link
--- | --- |:---:
<a name="_sample_analytics" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/analytics">analytics</a> | <a href="#_feature_storage">storage</a><br> <a href="#mobile-support">ios</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/anfhlhgdnbpnglngmblhkdifdbcepjce"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_appengine-channelapi_app" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/appengine-channelapi/app">appengine-channelapi/app</a> | <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/alieplnmdkoekpkepkfgickpmhhabfkl"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_appsquare" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/appsquare">appsquare</a> | <a href="#_feature_geolocation">geolocation</a><br> <a href="#_feature_identity">identity</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/loimmcmmgnhkbppokdpfhlccebcpicld"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_appview_embedded-app" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/appview/embedded-app">appview/embedded-app</a> | <a href="#_feature_getUserMedia">getUserMedia</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/mighjnlldblaiimoaidiggecdkobklfe"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_appview_host-app" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/appview/host-app">appview/host-app</a> | <a href="#_feature_appview">appview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/gkmjlnhjcdognmniiadfdhdlgdocngda"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_blink1" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/blink1">blink1</a> | <a href="#_feature_hid">hid</a><br> <a href="#_feature_usb">usb</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/kcpjgiicabigbjejdjnkflkdkjknkdch"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_bluetooth-samples_battery-service-demo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/bluetooth-samples/battery-service-demo">bluetooth-samples/battery-service-demo</a> | <a href="#_feature_bluetooth">bluetooth</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/kllncpgahapecnfkhefffabcemaknamh"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_bluetooth-samples_device-info-demo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/bluetooth-samples/device-info-demo">bluetooth-samples/device-info-demo</a> | <a href="#_feature_bluetooth">bluetooth</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/dblimghcclaakknbpajckcamddhjaaai"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_bluetooth-samples_heart-rate-sensor" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/bluetooth-samples/heart-rate-sensor">bluetooth-samples/heart-rate-sensor</a> | <a href="#_feature_bluetooth">bluetooth</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/nmlcgjldnboapnjdmllfcdenlljfjanm"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_calculator" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/calculator">calculator</a> | <a href="#_feature_clipboard">clipboard</a><br> <a href="#mobile-support">ios</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/pelimflkpjiicnajdjcmekpioacmahkh"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_camera-capture" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/camera-capture">camera-capture</a> | <a href="#_feature_getUserMedia">getUserMedia</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ilefapmpngkdnnllcnlcjffipbolhklf"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_clock" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/clock">clock</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_geolocation">geolocation</a><br> <a href="#_feature_richNotifications">richNotifications</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/lhfiglpmnendbchimlikaeachppfonmm"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_context-menu" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/context-menu">context-menu</a> | <a href="#_feature_contextMenu">contextMenu</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/biknlgbccocnocjfclpedecpgopjokik"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_dart" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/dart">dart</a> | <a href="#_feature_dart">dart</a><br> <a href="#mobile-support">ios</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/pcbbhbaibaphjlbaoahmahgmncbdkeli"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_desktop-capture" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/desktop-capture">desktop-capture</a> | <a href="#_feature_desktopCapture">desktopCapture</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/mhkidniocjdaiddjckopkigjmjbadfji"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_dialog-element" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/dialog-element">dialog-element</a> | | <a target="_blank" href="https://chrome.google.com/webstore/detail/mikhnkopoddcomlgmcjgfnaccjhibiec"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_diff" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/diff">diff</a> | <a href="#_feature_clipboard">clipboard</a><br> <a href="#_feature_fileSystem">fileSystem</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/neifiophhpiohjlhiohlhlekkfokcepk"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_filesystem-access" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/filesystem-access">filesystem-access</a> | <a href="#_feature_fileSystem">fileSystem</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ehbhjpchdgepkgjhfkhpkjdbnljedllm"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_frameless-window" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/frameless-window">frameless-window</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hjjdaddngnaofnfjpajdcbdmkegiakec"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_gcm-notifications" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/gcm-notifications">gcm-notifications</a> | <a href="#_feature_gcm">gcm</a><br> <a href="#_feature_richNotifications">richNotifications</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/gpededflkpcoehfjpdecdkoiagajloin"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_gdrive" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/gdrive">gdrive</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_identity">identity</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/jpabeekbjicamajjcfejnochhmlbpgjh"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_github-auth" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/github-auth">github-auth</a> | <a href="#_feature_identity">identity</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/laolmfhjaobpboigjfbclcphckmjodlp"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_hello-world" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/hello-world">hello-world</a> | <a href="#mobile-support">ios</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/nmfpplkdkcbhediajmbhljkafnlahcda"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_hello-world-sync" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/hello-world-sync">hello-world-sync</a> | <a href="#_feature_storage">storage</a><br> <a href="#mobile-support">ios</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ajjcafkkflbcealbcfjajolnkogffgcb"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_hid" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/hid">hid</a> | <a href="#_feature_hid">hid</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ohndmecdhlgohpibepbboddcoecomnpc"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_identity" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/identity">identity</a> | <a href="#_feature_identity">identity</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/oficlfehfenioickohognhdhmmcpceil"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_image-edit" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/image-edit">image-edit</a> | <a href="#_feature_fileSystem">fileSystem</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/foibnkkcggahkmckladbmgkajodpcjfh"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_instagram-auth" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/instagram-auth">instagram-auth</a> | <a href="#_feature_identity">identity</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/baaenjnmlaejajnalldcecpdafeggelb"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_io2012-presentation" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/io2012-presentation">io2012-presentation</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_getUserMedia">getUserMedia</a><br> <a href="#_feature_serial">serial</a><br> <a href="#_feature_storage">storage</a><br> <a href="#_feature_webview">webview</a><br> | -
<a name="_sample_io2012-presentation_helloworld" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/io2012-presentation/helloworld">io2012-presentation/helloworld</a> | | -
<a name="_sample_io2012-presentation_servo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/io2012-presentation/servo">io2012-presentation/servo</a> | <a href="#_feature_getUserMedia">getUserMedia</a><br> <a href="#_feature_serial">serial</a><br> | -
<a name="_sample_ioio" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/ioio">ioio</a> | <a href="#_feature_bluetooth">bluetooth</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hknlnnbpihcamokfeggmahjgldbcpkof"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_keyboard-handler" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/keyboard-handler">keyboard-handler</a> | | <a target="_blank" href="https://chrome.google.com/webstore/detail/pcbbaldjljokfnnkphllabnpolciapjc"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_managed-in-app-payments" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/managed-in-app-payments">managed-in-app-payments</a> | <a href="#_feature_in-app-payments">in-app-payments</a><br> | -
<a name="_sample_manga-cam" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/manga-cam">manga-cam</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_getUserMedia">getUserMedia</a><br> <a href="#_feature_syncFileSystem">syncFileSystem</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/cnehcenehakkickcnoiaemcpjpaigmbb"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_mdns-browser" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/mdns-browser">mdns-browser</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_sockets">sockets</a><br> <a href="#_feature_systemInfo">systemInfo</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/kipighjpklofchgbdgclfaoccdlghidp"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_media-gallery" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/media-gallery">media-gallery</a> | <a href="#_feature_mediaGallery">mediaGallery</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/lidepfgfmameopopgagobnpndcnfgbnk"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_messaging_app1" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/messaging/app1">messaging/app1</a> | <a href="#_feature_messaging">messaging</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/mcfaknmahgbmjlbondlciokappnnjbnf"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_messaging_app2" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/messaging/app2">messaging/app2</a> | <a href="#_feature_messaging">messaging</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hdligeegpimhdjepakblhneiekccbhol"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_messaging_extension" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/messaging/extension">messaging/extension</a> | <a href="#_feature_messaging">messaging</a><br> <a href="#_feature_richNotifications">richNotifications</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ihhkahhkmiddbnfhlglocakcdfbgddkj"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_mini-code-edit" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/mini-code-edit">mini-code-edit</a> | <a href="#_feature_commands">commands</a><br> <a href="#_feature_contextMenu">contextMenu</a><br> <a href="#_feature_fileSystem">fileSystem</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/inbjbbebnhailhhkfaaokegkfjlmgabb"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_multicast" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/multicast">multicast</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_messaging">messaging</a><br> <a href="#_feature_sockets">sockets</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/bnheobjndkaipbloffigkiddhcbblihl"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_one-time-payment" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/one-time-payment">one-time-payment</a> | <a href="#_feature_identity">identity</a><br> <a href="#_feature_storage">storage</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ebcgmmcbgnpoclkoibogeiokfdmjbbob"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_optional-permissions" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/optional-permissions">optional-permissions</a> | <a href="#_feature_optionalPermissions">optionalPermissions</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ggkojffeaocnfigijnfbnliopcilipgg"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_parrot-ar-drone" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/parrot-ar-drone">parrot-ar-drone</a> | <a href="#_feature_old_sockets">old_sockets</a><br> <a href="#_feature_sockets">sockets</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/lhdfniaagbjbipjmgfbnlbcmlbcgklkh"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_platform-title" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/platform-title">platform-title</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/gdpimhplfcmbiakglpomcdcchbmgfiaj"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_printing" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/printing">printing</a> | <a href="#_feature_print">print</a><br> <a href="#_feature_storage">storage</a><br> <a href="#_feature_systemInfo">systemInfo</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/eahldfpkmibbaajaoeifhjeehfgdagdm"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_restarted-demo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/restarted-demo">restarted-demo</a> | <a href="#_feature_storage">storage</a><br> <a href="#mobile-support">ios</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ljngdccbopfaompkjfhepllagnijbdne"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_rich-notifications" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/rich-notifications">rich-notifications</a> | <a href="#_feature_richNotifications">richNotifications</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/cndmbddaappldijonoekcdfdlhemhejm"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_sandbox" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/sandbox">sandbox</a> | <a href="#_feature_sandbox">sandbox</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ipchbpppeafbpnmnjbkljpfhkkiaeikd"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_sandboxed-content" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/sandboxed-content">sandboxed-content</a> | <a href="#_feature_sandbox">sandbox</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/gaaeficfcmngmogaejhikdnkdijlpgec"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_serial-control-signals" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/serial-control-signals">serial-control-signals</a> | <a href="#_feature_serial">serial</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/gmlopmidlcfikepbnklkochchhehjpak"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_serial_adkjs_app" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/serial/adkjs/app">serial/adkjs/app</a> | <a href="#_feature_serial">serial</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ieoiddehfkbacdideciijbdjfjegmpjo"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_serial_espruino" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/serial/espruino">serial/espruino</a> | <a href="#_feature_serial">serial</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ghbnaccmkndoembcopnaklidmocbdkfp"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_serial_ledtoggle" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/serial/ledtoggle">serial/ledtoggle</a> | <a href="#_feature_serial">serial</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/bdiclhdalonemjdeeaglackjgdboboem"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_servo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/servo">servo</a> | <a href="#_feature_getUserMedia">getUserMedia</a><br> <a href="#_feature_serial">serial</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/lhedgapiolhajjkgokaplenafmdppmak"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_storage" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/storage">storage</a> | | <a target="_blank" href="https://chrome.google.com/webstore/detail/bpncolcpekidijienghhkibflikohggn"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_syncfs-editor" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/syncfs-editor">syncfs-editor</a> | <a href="#_feature_syncFileSystem">syncFileSystem</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ccphiekjjhfnhbmpcbmkmjjhbfhlijkc"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_systemInfo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/systemInfo">systemInfo</a> | <a href="#_feature_systemInfo">systemInfo</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/lfkebofdngpbnooppdhiibpdpepgjoch"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_tasks" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/tasks">tasks</a> | <a href="#_feature_identity">identity</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/tasks-sample-using-gapi/licakmgdnppmfjlkgijcbnobnkoaegko"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_tcpserver" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/tcpserver">tcpserver</a> | <a href="#_feature_sockets">sockets</a><br> <a href="#_feature_systemInfo">systemInfo</a><br> <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ahlcocbkjpjkobcdpjcobmibmpbeecpg"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_telnet" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/telnet">telnet</a> | <a href="#_feature_sockets">sockets</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ebckmolcafdmfjbkmamhoacnmmkiohpe"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_text-editor" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/text-editor">text-editor</a> | <a href="#_feature_clipboard">clipboard</a><br> <a href="#_feature_fileSystem">fileSystem</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/jkgbibkjioaefdopcdbhjehefhajgadh"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_todomvc" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/todomvc">todomvc</a> | <a href="#_feature_alarms">alarms</a><br> <a href="#_feature_fileSystem">fileSystem</a><br> <a href="#_feature_richNotifications">richNotifications</a><br> <a href="#_feature_storage">storage</a><br> <a href="#_feature_syncFileSystem">syncFileSystem</a><br> <a href="#mobile-support">android</a><br> | -
<a name="_sample_tts" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/tts">tts</a> | <a href="#_feature_tts">tts</a><br> | -
<a name="_sample_udp" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/udp">udp</a> | <a href="#_feature_sockets">sockets</a><br> <a href="#mobile-support">ios</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/okhdmjejphblookgnkabaoaalhcoobec"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_url-handler" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/url-handler">url-handler</a> | <a href="#_feature_storage">storage</a><br> <a href="#_feature_webview">webview</a><br> | -
<a name="_sample_usb-label-printer" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/usb-label-printer">usb-label-printer</a> | <a href="#_feature_fileSystem">fileSystem</a><br> <a href="#_feature_getUserMedia">getUserMedia</a><br> <a href="#_feature_optionalPermissions">optionalPermissions</a><br> <a href="#_feature_usb">usb</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/fgnncpfphbgfchijmoopegkdhihegfla"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_usb_device-info" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/usb/device-info">usb/device-info</a> | <a href="#_feature_usb">usb</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/igkmggljimacfdfalpeelenjeicmfnll"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_usb_knob" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/usb/knob">usb/knob</a> | <a href="#_feature_optionalPermissions">optionalPermissions</a><br> <a href="#_feature_usb">usb</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/npiachjbcianljljdlckbnkilpnddnfn"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_weather" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/weather">weather</a> | <a href="#_feature_geolocation">geolocation</a><br> <a href="#_feature_storage">storage</a><br> <a href="#mobile-support">ios</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hfgmgghdkhgcklddhfefhdhcpkpmikhi"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_web-store" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/web-store">web-store</a> | <a href="#_feature_fileSystem">fileSystem</a><br> <a href="#_feature_identity">identity</a><br> <a href="#_feature_storage">storage</a><br> <a href="#_feature_webstore">webstore</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ndgidogppopohjpghapeojgoehfmflab"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webgl-pointer-lock" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webgl-pointer-lock">webgl-pointer-lock</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> <a href="#_feature_pointerLock">pointerLock</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/pjfconokbhkicolnaaphhfhjpcgnnfpj"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webserver" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webserver">webserver</a> | <a href="#_feature_sockets">sockets</a><br> <a href="#_feature_systemInfo">systemInfo</a><br> <a href="#mobile-support">android</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hflhcpmgeolmjlbmdicgkjedjmkoocbe"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_websocket-server" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/websocket-server">websocket-server</a> | <a href="#_feature_sockets">sockets</a><br> <a href="#mobile-support">ios</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/pkbpddppnkjmlbgliipgmhjeialadokj"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_browser" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/browser">webview-samples/browser</a> | <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/edggnmnajhcbhlnpjnogkjpghaikidaa"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_declarative-web-request" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/declarative-web-request">webview-samples/declarative-web-request</a> | <a href="#_feature_storage">storage</a><br> <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hhflblflkeainajnkamabjibdbfnbilb"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_insert-css" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/insert-css">webview-samples/insert-css</a> | <a href="#_feature_storage">storage</a><br> <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/dnedmnfnnbpgnedogbljhiacgmkbklfj"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_local-resources" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/local-resources">webview-samples/local-resources</a> | <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/nfeplfjagjlljomimjealpedhjgamkle"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_multi-tab-browser" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/multi-tab-browser">webview-samples/multi-tab-browser</a> | <a href="#_feature_contextMenu">contextMenu</a><br> <a href="#_feature_webview">webview</a><br> | -
<a name="_sample_webview-samples_new-window" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/new-window">webview-samples/new-window</a> | <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/kpgjodoohleggakakpaadgjeedfgeafi"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_new-window-user-agent" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/new-window-user-agent">webview-samples/new-window-user-agent</a> | <a href="#_feature_contextMenu">contextMenu</a><br> <a href="#_feature_webview">webview</a><br> | -
<a name="_sample_webview-samples_shared-script" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/shared-script">webview-samples/shared-script</a> | <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/cbdacningpambfjjejgfebeagmhpdcko"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_user-agent" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/user-agent">webview-samples/user-agent</a> | <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/fbkdeonndngdbojbccanjnpnlpdmgchc"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_webview-samples_webview" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webview-samples/webview">webview-samples/webview</a> | <a href="#_feature_geolocation">geolocation</a><br> <a href="#_feature_getUserMedia">getUserMedia</a><br> <a href="#_feature_pointerLock">pointerLock</a><br> <a href="#_feature_webview">webview</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hnanccpkhjhkkgiipckodmdldeomdohj"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_window-options" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/window-options">window-options</a> | <a href="#_feature_fullscreen">fullscreen</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/cfcgoifcnpnadlhhoolkemkjkhoajfmk"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_window-state" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/window-state">window-state</a> | <a href="#_feature_fullscreen">fullscreen</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/hcbhfbnaaancmblfhdknlnojpafjohbi"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<a name="_sample_windows" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/windows">windows</a> | <a href="#_feature_framelessWindows">framelessWindows</a><br> | <a target="_blank" href="https://chrome.google.com/webstore/detail/ldenchfohdfgggloeimambnckhjpedgc"><img alt="Try it now" src="https://raw.github.com/GoogleChrome/chrome-extensions-samples/main/_archive/apps/tryitnowbutton_small.png" title="Click here to install this sample from the Chrome Web Store"></img></a>
<!-- sample_table_autogen_end THIS TABLE IS AUTOGENERATED! PLEASE, DON'T EDIT IT DIRECTLY! -->
# Samples by features
<!-- feature_table_autogen_start THIS TABLE IS AUTOGENERATED! PLEASE, DON'T EDIT IT DIRECTLY! -->
API or feature | Samples
--- | ---
<a name="_feature_alarms"></a>alarms | <a href="#_sample_todomvc">todomvc</a>
<a name="_feature_appview"></a>appview | <a href="#_sample_appview_host-app">appview_host-app</a>
<a name="_feature_bluetooth"></a>bluetooth | <a href="#_sample_bluetooth-samples_battery-service-demo">bluetooth-samples_battery-service-demo</a> <a href="#_sample_bluetooth-samples_device-info-demo">bluetooth-samples_device-info-demo</a> <a href="#_sample_bluetooth-samples_heart-rate-sensor">bluetooth-samples_heart-rate-sensor</a> <a href="#_sample_ioio">ioio</a>
<a name="_feature_clipboard"></a>clipboard | <a href="#_sample_calculator">calculator</a> <a href="#_sample_diff">diff</a> <a href="#_sample_text-editor">text-editor</a>
<a name="_feature_commands"></a>commands | <a href="#_sample_mini-code-edit">mini-code-edit</a>
<a name="_feature_contextMenu"></a>contextMenu | <a href="#_sample_context-menu">context-menu</a> <a href="#_sample_mini-code-edit">mini-code-edit</a> <a href="#_sample_webview-samples_multi-tab-browser">webview-samples_multi-tab-browser</a> <a href="#_sample_webview-samples_new-window-user-agent">webview-samples_new-window-user-agent</a>
<a name="_feature_dart"></a>dart | <a href="#_sample_dart">dart</a>
<a name="_feature_desktopCapture"></a>desktopCapture | <a href="#_sample_desktop-capture">desktop-capture</a>
<a name="_feature_fileSystem"></a>fileSystem | <a href="#_sample_diff">diff</a> <a href="#_sample_filesystem-access">filesystem-access</a> <a href="#_sample_image-edit">image-edit</a> <a href="#_sample_mini-code-edit">mini-code-edit</a> <a href="#_sample_text-editor">text-editor</a> <a href="#_sample_todomvc">todomvc</a> <a href="#_sample_usb-label-printer">usb-label-printer</a> <a href="#_sample_web-store">web-store</a>
<a name="_feature_framelessWindows"></a>framelessWindows | <a href="#_sample_clock">clock</a> <a href="#_sample_frameless-window">frameless-window</a> <a href="#_sample_gdrive">gdrive</a> <a href="#_sample_io2012-presentation">io2012-presentation</a> <a href="#_sample_manga-cam">manga-cam</a> <a href="#_sample_mdns-browser">mdns-browser</a> <a href="#_sample_multicast">multicast</a> <a href="#_sample_platform-title">platform-title</a> <a href="#_sample_webgl-pointer-lock">webgl-pointer-lock</a> <a href="#_sample_windows">windows</a>
<a name="_feature_fullscreen"></a>fullscreen | <a href="#_sample_window-options">window-options</a> <a href="#_sample_window-state">window-state</a>
<a name="_feature_gcm"></a>gcm | <a href="#_sample_gcm-notifications">gcm-notifications</a>
<a name="_feature_geolocation"></a>geolocation | <a href="#_sample_appsquare">appsquare</a> <a href="#_sample_clock">clock</a> <a href="#_sample_weather">weather</a> <a href="#_sample_webview-samples_webview">webview-samples_webview</a>
<a name="_feature_getUserMedia"></a>getUserMedia | <a href="#_sample_appview_embedded-app">appview_embedded-app</a> <a href="#_sample_camera-capture">camera-capture</a> <a href="#_sample_io2012-presentation">io2012-presentation</a> <a href="#_sample_io2012-presentation_servo">io2012-presentation_servo</a> <a href="#_sample_manga-cam">manga-cam</a> <a href="#_sample_servo">servo</a> <a href="#_sample_usb-label-printer">usb-label-printer</a> <a href="#_sample_webview-samples_webview">webview-samples_webview</a>
<a name="_feature_hid"></a>hid | <a href="#_sample_blink1">blink1</a> <a href="#_sample_hid">hid</a>
<a name="_feature_identity"></a>identity | <a href="#_sample_appsquare">appsquare</a> <a href="#_sample_gdrive">gdrive</a> <a href="#_sample_github-auth">github-auth</a> <a href="#_sample_identity">identity</a> <a href="#_sample_instagram-auth">instagram-auth</a> <a href="#_sample_one-time-payment">one-time-payment</a> <a href="#_sample_tasks">tasks</a> <a href="#_sample_web-store">web-store</a>
<a name="_feature_in-app-payments"></a>in-app-payments | <a href="#_sample_managed-in-app-payments">managed-in-app-payments</a>
<a name="_feature_mediaGallery"></a>mediaGallery | <a href="#_sample_media-gallery">media-gallery</a>
<a name="_feature_messaging"></a>messaging | <a href="#_sample_messaging_app1">messaging_app1</a> <a href="#_sample_messaging_app2">messaging_app2</a> <a href="#_sample_messaging_extension">messaging_extension</a> <a href="#_sample_multicast">multicast</a>
<a name="_feature_old_sockets"></a>old_sockets | <a href="#_sample_parrot-ar-drone">parrot-ar-drone</a>
<a name="_feature_optionalPermissions"></a>optionalPermissions | <a href="#_sample_optional-permissions">optional-permissions</a> <a href="#_sample_usb-label-printer">usb-label-printer</a> <a href="#_sample_usb_knob">usb_knob</a>
<a name="_feature_pointerLock"></a>pointerLock | <a href="#_sample_webgl-pointer-lock">webgl-pointer-lock</a> <a href="#_sample_webview-samples_webview">webview-samples_webview</a>
<a name="_feature_print"></a>print | <a href="#_sample_printing">printing</a>
<a name="_feature_richNotifications"></a>richNotifications | <a href="#_sample_clock">clock</a> <a href="#_sample_gcm-notifications">gcm-notifications</a> <a href="#_sample_messaging_extension">messaging_extension</a> <a href="#_sample_rich-notifications">rich-notifications</a> <a href="#_sample_todomvc">todomvc</a>
<a name="_feature_sandbox"></a>sandbox | <a href="#_sample_sandbox">sandbox</a> <a href="#_sample_sandboxed-content">sandboxed-content</a>
<a name="_feature_serial"></a>serial | <a href="#_sample_io2012-presentation">io2012-presentation</a> <a href="#_sample_io2012-presentation_servo">io2012-presentation_servo</a> <a href="#_sample_serial-control-signals">serial-control-signals</a> <a href="#_sample_serial_adkjs_app">serial_adkjs_app</a> <a href="#_sample_serial_espruino">serial_espruino</a> <a href="#_sample_serial_ledtoggle">serial_ledtoggle</a> <a href="#_sample_servo">servo</a>
<a name="_feature_sockets"></a>sockets | <a href="#_sample_mdns-browser">mdns-browser</a> <a href="#_sample_multicast">multicast</a> <a href="#_sample_parrot-ar-drone">parrot-ar-drone</a> <a href="#_sample_tcpserver">tcpserver</a> <a href="#_sample_telnet">telnet</a> <a href="#_sample_udp">udp</a> <a href="#_sample_webserver">webserver</a> <a href="#_sample_websocket-server">websocket-server</a>
<a name="_feature_storage"></a>storage | <a href="#_sample_analytics">analytics</a> <a href="#_sample_appsquare">appsquare</a> <a href="#_sample_clock">clock</a> <a href="#_sample_diff">diff</a> <a href="#_sample_filesystem-access">filesystem-access</a> <a href="#_sample_gcm-notifications">gcm-notifications</a> <a href="#_sample_hello-world-sync">hello-world-sync</a> <a href="#_sample_image-edit">image-edit</a> <a href="#_sample_io2012-presentation">io2012-presentation</a> <a href="#_sample_multicast">multicast</a> <a href="#_sample_one-time-payment">one-time-payment</a> <a href="#_sample_printing">printing</a> <a href="#_sample_restarted-demo">restarted-demo</a> <a href="#_sample_todomvc">todomvc</a> <a href="#_sample_url-handler">url-handler</a> <a href="#_sample_weather">weather</a> <a href="#_sample_web-store">web-store</a> <a href="#_sample_webview-samples_declarative-web-request">webview-samples_declarative-web-request</a> <a href="#_sample_webview-samples_insert-css">webview-samples_insert-css</a>
<a name="_feature_syncFileSystem"></a>syncFileSystem | <a href="#_sample_manga-cam">manga-cam</a> <a href="#_sample_syncfs-editor">syncfs-editor</a> <a href="#_sample_todomvc">todomvc</a>
<a name="_feature_systemInfo"></a>systemInfo | <a href="#_sample_mdns-browser">mdns-browser</a> <a href="#_sample_printing">printing</a> <a href="#_sample_systemInfo">systemInfo</a> <a href="#_sample_tcpserver">tcpserver</a> <a href="#_sample_webserver">webserver</a>
<a name="_feature_tts"></a>tts | <a href="#_sample_tts">tts</a>
<a name="_feature_usb"></a>usb | <a href="#_sample_blink1">blink1</a> <a href="#_sample_usb-label-printer">usb-label-printer</a> <a href="#_sample_usb_device-info">usb_device-info</a> <a href="#_sample_usb_knob">usb_knob</a>
<a name="_feature_webstore"></a>webstore | <a href="#_sample_web-store">web-store</a>
<a name="_feature_webview"></a>webview | <a href="#_sample_appengine-channelapi_app">appengine-channelapi_app</a> <a href="#_sample_io2012-presentation">io2012-presentation</a> <a href="#_sample_tcpserver">tcpserver</a> <a href="#_sample_url-handler">url-handler</a> <a href="#_sample_webview-samples_browser">webview-samples_browser</a> <a href="#_sample_webview-samples_declarative-web-request">webview-samples_declarative-web-request</a> <a href="#_sample_webview-samples_insert-css">webview-samples_insert-css</a> <a href="#_sample_webview-samples_local-resources">webview-samples_local-resources</a> <a href="#_sample_webview-samples_multi-tab-browser">webview-samples_multi-tab-browser</a> <a href="#_sample_webview-samples_new-window">webview-samples_new-window</a> <a href="#_sample_webview-samples_new-window-user-agent">webview-samples_new-window-user-agent</a> <a href="#_sample_webview-samples_shared-script">webview-samples_shared-script</a> <a href="#_sample_webview-samples_user-agent">webview-samples_user-agent</a> <a href="#_sample_webview-samples_webview">webview-samples_webview</a>
<!-- feature_table_autogen_end THIS TABLE IS AUTOGENERATED! PLEASE, DON'T EDIT IT DIRECTLY! -->
# Mobile support
You can generate native mobile versions of the samples below using the procedure
described <a
href="https://github.com/MobileChromeApps/mobile-chrome-apps/blob/master/README.md">here</a>.
<!-- mobile_table_autogen_start THIS TABLE IS AUTOGENERATED! PLEASE, DON'T EDIT IT DIRECTLY! -->
<table>
<tr><th width="16%">Sample</th><th width="42%">Android support</th><th width="42%">iOS support</th></tr>
<tr><td><a name="_mobile_analytics" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/analytics">analytics</a></td><td>Supported.</td><td>Supported.</td></tr>
<tr><td><a name="_mobile_calculator" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/calculator">calculator</a></td><td>Supported. Visual issues caused by fixed-size layout</td><td>Supported. Visual issues caused by fixed-size layout</td></tr>
<tr><td><a name="_mobile_dart" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/dart">dart</a></td><td></td><td>Supported. Visual issues caused by fixed-size layout</td></tr>
<tr><td><a name="_mobile_hello-world" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/hello-world">hello-world</a></td><td>Supported.</td><td>Supported.</td></tr>
<tr><td><a name="_mobile_hello-world-sync" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/hello-world-sync">hello-world-sync</a></td><td>Supported. sync storage doesn't actually sync - works local</td><td>Supported. sync storage doesn't actually sync - works local</td></tr>
<tr><td><a name="_mobile_identity" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/identity">identity</a></td><td>Supported. You need to add an Android OAuth app in the Cloud API console of the OAuth project. The app's SHA1 can be the debug one (see more <a href="https://developers.google.com/console/help/new/#installedapplications">here</a>), and the package name is org.chromium.identity.MyApp. If you don't add the Android OAuth app and tries to use the OAuth client-id from the Chrome app, you will get a generic message GoogleAuthException</td><td></td></tr>
<tr><td><a name="_mobile_parrot-ar-drone" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/parrot-ar-drone">parrot-ar-drone</a></td><td>Supported. Communication to the Drone works, but the UI requires a connected gamepad.</td><td></td></tr>
<tr><td><a name="_mobile_restarted-demo" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/restarted-demo">restarted-demo</a></td><td></td><td>Supported. Restart must be done via Safari remote debugging.</td></tr>
<tr><td><a name="_mobile_rich-notifications" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/rich-notifications">rich-notifications</a></td><td>Supported.</td><td></td></tr>
<tr><td><a name="_mobile_tasks" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/tasks">tasks</a></td><td>Supported.</td><td></td></tr>
<tr><td><a name="_mobile_todomvc" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/todomvc">todomvc</a></td><td>Supported.</td><td></td></tr>
<tr><td><a name="_mobile_udp" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/udp">udp</a></td><td></td><td>Supported.</td></tr>
<tr><td><a name="_mobile_weather" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/weather">weather</a></td><td></td><td>Supported.</td></tr>
<tr><td><a name="_mobile_webserver" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/webserver">webserver</a></td><td>Supported. Directory picking doesn't work on some versions of Android</td><td></td></tr>
<tr><td><a name="_mobile_websocket-server" href="https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/websocket-server">websocket-server</a></td><td></td><td>Supported.</td></tr>
</table>
<!-- mobile_table_autogen_end THIS TABLE IS AUTOGENERATED! PLEASE, DON'T EDIT IT DIRECTLY! -->
# Libraries and tools
* [Google APIs client library for Chrome Apps](https://github.com/GoogleChrome/chrome-extensions-samples/blob/main/_archive/apps/libraries/gapi-chrome-apps-lib)
* [Google Analytics for Chrome Apps and Extensions](https://github.com/GoogleChrome/chrome-platform-analytics)
================================================
FILE: _archive/apps/libraries/gapi-chrome-apps-lib/LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: _archive/apps/libraries/gapi-chrome-apps-lib/README.md
================================================
# Google API javascript client library loader for Chrome Packaged Apps
Provides the Google API javascript client 'gapi' as
appropriate for hosted websites, or if in a Chrome packaged
app implement a minimal set of functionality that is Content
Security Policy compliant and uses the chrome identity api.
## Status
This library is likely not suitable for use without additional modifications.
## Usage
To be expanded upon, but essentially:
- Add 'identity' permission to manifest.
- Reference this script instead of the apis.google.com online version.
- Call gapi methods as usual.
## Examples:
* [Tasks app using GAPI](https://github.com/GoogleChrome/chrome-extensions-samples/tree/main/_archive/apps/samples/tasks)
## Resources
* [JavaScript Client Library Reference](https://developers.google.com/api-client-library/javascript/reference/referencedocs)
================================================
FILE: _archive/apps/libraries/gapi-chrome-apps-lib/gapi-chrome-apps.js
================================================
/**
* Copyright 2013 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* gapi-chrome-apps version 0.001
*
* Provides the Google API javascript client 'gapi' as
* appropriate for hosted websites, or if in a Chrome packaged
* app implement a minimal set of functionality that is Content
* Security Policy compliant and uses the chrome identity api.
*
* https://github.com/GoogleChrome/chrome-app-samples/tree/master/gapi-chrome-apps-lib
*
*/
"use strict";
(function () {
if (typeof gapi !== 'undefined')
throw new Error('gapi already defined.');
if (typeof gapiIsLoaded !== 'function')
throw new Error('gapiIsLoaded callback function must be defined prior to ' +
'loading gapi-chrome-apps.js');
// If not running in a chrome packaged app, load web gapi:
if (!(chrome && chrome.app && chrome.app.runtime)) {
// Load web gapi.
var script = document.createElement('script');
script.src = 'https://apis.google.com/js/client.js?onload=gapiIsLoaded';
document.documentElement.appendChild(script);
return;
}
window.gapi = {};
window.gapi.auth = {};
window.gapi.client = {};
var access_token = undefined;
gapi.auth.authorize = function (params, callback) {
if (typeof callback !== 'function')
throw new Error('callback required');
var details = {};
details.interactive = params.immediate === false || false;
if (params.accountHint) {
// Specifying this prevents the account chooser from appearing on Android.
details.accountHint = params.accountHint;
}
console.assert(!params.response_type || params.response_type == 'token');
var callbackWrapper = function (getAuthTokenCallbackParam) {
access_token = getAuthTokenCallbackParam;
// TODO: error conditions?
if (typeof access_token !== 'undefined')
callback({ access_token: access_token});
else
callback();
}
chrome.identity.getAuthToken(details, callbackWrapper);
};
gapi.client.request = function (args) {
if (typeof args !== 'object')
throw new Error('args required');
if (typeof args.callback !== 'function')
throw new Error('callback required');
if (typeof args.path !== 'string')
throw new Error('path required');
if (args.root && args.root === 'string') {
var path = args.root + args.path;
} else {
var path = 'https://www.googleapis.com' + args.path;
}
if (typeof args.params === 'object') {
var deliminator = '?';
for (var i in args.params) {
path += deliminator + encodeURIComponent(i) + "="
+ encodeURIComponent(args.params[i]);
deliminator = '&';
}
}
var xhr = new XMLHttpRequest();
xhr.open(args.method || 'GET', path);
xhr.setRequestHeader('Authorization', 'Bearer ' + access_token);
if (typeof args.body !== 'undefined') {
xhr.setRequestHeader('content-type', 'application/json');
xhr.send(JSON.stringify(args.body));
} else {
xhr.send();
}
xhr.onerror = function () {
// TODO, error handling.
debugger;
};
xhr.onload = function() {
var rawResponseObject = {
// TODO: body, headers.
gapiRequest: {
data: {
status: this.status,
statusText: this.statusText
}
}
};
var rawResp = JSON.stringify(rawResponseObject);
if (this.response) {
var jsonResp = JSON.parse(this.response);
args.callback(jsonResp, rawResp);
} else {
args.callback(null, rawResp);
}
};
};
// Call client handler when gapi is ready.
setTimeout(function () { gapiIsLoaded(); }, 0);
})();
================================================
FILE: _archive/apps/samples/analytics/README.md
================================================
<a target="_blank" href="https://chrome.google.com/webstore/detail/anfhlhgdnbpnglngmblhkdifdbcepjce"></a>
# Analytics
This example demonstrates how to include support for Google Analytics in your
packaged application. It uses the
[chrome-platform-analytics](https://github.com/GoogleChrome/chrome-platform-analytics) library,
which allows tracking app views or any arbitrary event to Google Analytics.
See more at the [project wiki](https://github.com/GoogleChrome/chrome-platform-analytics/wiki)
*Please note: You will need to modify main.js to include real Google Analytics credentials.*
## Resources
* [Runtime](https://developer.chrome.com/docs/extensions/reference/app_runtime)
* [Window](https://developer.chrome.com/docs/extensions/reference/app_window)
* [chrome-platform-analytics](https://github.com/GoogleChrome/chrome-platform-analytics/wiki)
## Screenshot

================================================
FILE: _archive/apps/samples/analytics/background.js
================================================
// Copyright 2013 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('main.html', {"id": "analyticsWinID"}, function() {});
});
================================================
FILE: _archive/apps/samples/analytics/google-analytics-bundle.js
================================================
(function() { var g,aa=aa||{},h=this,ba=function(){},ca=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&
!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},m=function(a){return"array"==ca(a)},da=function(a){var b=ca(a);return"array"==b||"object"==b&&"number"==typeof a.length},n=function(a){return"string"==typeof a},ea=function(a){return"number"==typeof a},p=function(a){return"function"==ca(a)},q=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b},fa=function(a,b,c){return a.call.apply(a.bind,
arguments)},ga=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}},r=function(a,b,c){r=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?fa:ga;return r.apply(null,arguments)},ha=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=
c.slice();b.push.apply(b,arguments);return a.apply(this,b)}},s=Date.now||function(){return+new Date},t=function(a,b){var c=a.split("."),d=h;c[0]in d||!d.execScript||d.execScript("var "+c[0]);for(var e;c.length&&(e=c.shift());)c.length||void 0===b?d=d[e]?d[e]:d[e]={}:d[e]=b},u=function(a,b){function c(){}c.prototype=b.prototype;a.L=b.prototype;a.prototype=new c;a.Pc=function(a,c,f){return b.prototype[c].apply(a,Array.prototype.slice.call(arguments,2))}};
Function.prototype.bind=Function.prototype.bind||function(a,b){if(1<arguments.length){var c=Array.prototype.slice.call(arguments,1);c.unshift(this,a);return r.apply(null,c)}return r(this,a)};var v=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,v);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))};u(v,Error);v.prototype.name="CustomError";var ia=function(a,b){return a<b?-1:a>b?1:0};var w=Array.prototype,ja=w.indexOf?function(a,b,c){return w.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(n(a))return n(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},ka=w.forEach?function(a,b,c){w.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=n(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)},la=w.some?function(a,b,c){return w.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=n(a)?a.split(""):
a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1},ma=w.every?function(a,b,c){return w.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=n(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0},oa=function(a){var b;t:{b=na;for(var c=a.length,d=n(a)?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break t}b=-1}return 0>b?null:n(a)?a.charAt(b):a[b]},pa=function(a,b){var c=ja(a,b),d;(d=0<=c)&&w.splice.call(a,c,1);return d},qa=function(a){return w.concat.apply(w,
arguments)},ra=function(a,b,c){return 2>=arguments.length?w.slice.call(a,b):w.slice.call(a,b,c)};var sa="StopIteration"in h?h.StopIteration:Error("StopIteration"),ta=function(){};ta.prototype.next=function(){throw sa;};ta.prototype.vc=function(){return this};var ua=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)},va=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b},wa=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b},xa=function(a,b){var c;t:{for(c in a)if(b.call(void 0,a[c],c,a))break t;c=void 0}return c&&a[c]},ya="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),za=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<ya.length;f++)c=
ya[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};var x=function(a,b){this.p={};this.b=[];this.oa=this.h=0;var c=arguments.length;if(1<c){if(c%2)throw Error("Uneven number of arguments");for(var d=0;d<c;d+=2)this.set(arguments[d],arguments[d+1])}else a&&this.ia(a)};x.prototype.t=function(){Aa(this);for(var a=[],b=0;b<this.b.length;b++)a.push(this.p[this.b[b]]);return a};x.prototype.F=function(){Aa(this);return this.b.concat()};x.prototype.Q=function(a){return y(this.p,a)};
x.prototype.remove=function(a){return y(this.p,a)?(delete this.p[a],this.h--,this.oa++,this.b.length>2*this.h&&Aa(this),!0):!1};var Aa=function(a){if(a.h!=a.b.length){for(var b=0,c=0;b<a.b.length;){var d=a.b[b];y(a.p,d)&&(a.b[c++]=d);b++}a.b.length=c}if(a.h!=a.b.length){for(var e={},c=b=0;b<a.b.length;)d=a.b[b],y(e,d)||(a.b[c++]=d,e[d]=1),b++;a.b.length=c}};g=x.prototype;g.get=function(a,b){return y(this.p,a)?this.p[a]:b};
g.set=function(a,b){y(this.p,a)||(this.h++,this.b.push(a),this.oa++);this.p[a]=b};g.ia=function(a){var b;a instanceof x?(b=a.F(),a=a.t()):(b=wa(a),a=va(a));for(var c=0;c<b.length;c++)this.set(b[c],a[c])};g.forEach=function(a,b){for(var c=this.F(),d=0;d<c.length;d++){var e=c[d],f=this.get(e);a.call(b,f,e,this)}};g.clone=function(){return new x(this)};g.Jb=function(){Aa(this);for(var a={},b=0;b<this.b.length;b++){var c=this.b[b];a[c]=this.p[c]}return a};
g.vc=function(a){Aa(this);var b=0,c=this.b,d=this.p,e=this.oa,f=this,k=new ta;k.next=function(){for(;;){if(e!=f.oa)throw Error("The map has changed since the iterator was created");if(b>=c.length)throw sa;var k=c[b++];return a?k:d[k]}};return k};var y=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var Ba,Ca,Da={id:"hitType",name:"t",valueType:"text",maxLength:void 0,defaultValue:void 0},Ea={id:"sessionControl",name:"sc",valueType:"text",maxLength:void 0,defaultValue:void 0},Fa={id:"description",name:"cd",valueType:"text",maxLength:2048,defaultValue:void 0},Ga={id:"eventCategory",name:"ec",valueType:"text",maxLength:150,defaultValue:void 0},Ha={id:"eventAction",name:"ea",valueType:"text",maxLength:500,defaultValue:void 0},Ia={id:"eventLabel",name:"el",valueType:"text",maxLength:500,defaultValue:void 0},
Ja={id:"eventValue",name:"ev",valueType:"integer",maxLength:void 0,defaultValue:void 0},Ka={pd:Da,Qc:{id:"anonymizeIp",name:"aip",valueType:"boolean",maxLength:void 0,defaultValue:void 0},Ad:{id:"queueTime",name:"qt",valueType:"integer",maxLength:void 0,defaultValue:void 0},Wc:{id:"cacheBuster",name:"z",valueType:"text",maxLength:void 0,defaultValue:void 0},Gd:Ea,Wd:{id:"userId",name:"uid",valueType:"text",maxLength:void 0,defaultValue:void 0},xd:{id:"nonInteraction",name:"ni",valueType:"boolean",
maxLength:void 0,defaultValue:void 0},fd:Fa,Pd:{id:"title",name:"dt",valueType:"text",maxLength:1500,defaultValue:void 0},Sc:{id:"appId",name:"aid",valueType:"text",maxLength:150,defaultValue:void 0},Tc:{id:"appInstallerId",name:"aiid",valueType:"text",maxLength:150,defaultValue:void 0},jd:Ga,hd:Ha,kd:Ia,ld:Ja,Id:{id:"socialNetwork",name:"sn",valueType:"text",maxLength:50,defaultValue:void 0},Hd:{id:"socialAction",name:"sa",valueType:"text",maxLength:50,defaultValue:void 0},Jd:{id:"socialTarget",
name:"st",valueType:"text",maxLength:2048,defaultValue:void 0},Sd:{id:"transactionId",name:"ti",valueType:"text",maxLength:500,defaultValue:void 0},Rd:{id:"transactionAffiliation",name:"ta",valueType:"text",maxLength:500,defaultValue:void 0},Td:{id:"transactionRevenue",name:"tr",valueType:"currency",maxLength:void 0,defaultValue:void 0},Ud:{id:"transactionShipping",name:"ts",valueType:"currency",maxLength:void 0,defaultValue:void 0},Vd:{id:"transactionTax",name:"tt",valueType:"currency",maxLength:void 0,
defaultValue:void 0},dd:{id:"currencyCode",name:"cu",valueType:"text",maxLength:10,defaultValue:void 0},td:{id:"itemPrice",name:"ip",valueType:"currency",maxLength:void 0,defaultValue:void 0},ud:{id:"itemQuantity",name:"iq",valueType:"integer",maxLength:void 0,defaultValue:void 0},rd:{id:"itemCode",name:"ic",valueType:"text",maxLength:500,defaultValue:void 0},sd:{id:"itemName",name:"in",valueType:"text",maxLength:500,defaultValue:void 0},qd:{id:"itemCategory",name:"iv",valueType:"text",maxLength:500,
defaultValue:void 0},bd:{id:"campaignSource",name:"cs",valueType:"text",maxLength:100,defaultValue:void 0},$c:{id:"campaignMedium",name:"cm",valueType:"text",maxLength:50,defaultValue:void 0},ad:{id:"campaignName",name:"cn",valueType:"text",maxLength:100,defaultValue:void 0},Zc:{id:"campaignKeyword",name:"ck",valueType:"text",maxLength:500,defaultValue:void 0},Xc:{id:"campaignContent",name:"cc",valueType:"text",maxLength:500,defaultValue:void 0},Yc:{id:"campaignId",name:"ci",valueType:"text",maxLength:100,
defaultValue:void 0},od:{id:"gclid",name:"gclid",valueType:"text",maxLength:void 0,defaultValue:void 0},ed:{id:"dclid",name:"dclid",valueType:"text",maxLength:void 0,defaultValue:void 0},zd:{id:"pageLoadTime",name:"plt",valueType:"integer",maxLength:void 0,defaultValue:void 0},gd:{id:"dnsTime",name:"dns",valueType:"integer",maxLength:void 0,defaultValue:void 0},Kd:{id:"tcpConnectTime",name:"tcp",valueType:"integer",maxLength:void 0,defaultValue:void 0},Fd:{id:"serverResponseTime",name:"srt",valueType:"integer",
maxLength:void 0,defaultValue:void 0},yd:{id:"pageDownloadTime",name:"pdt",valueType:"integer",maxLength:void 0,defaultValue:void 0},Bd:{id:"redirectResponseTime",name:"rrt",valueType:"integer",maxLength:void 0,defaultValue:void 0},Ld:{id:"timingCategory",name:"utc",valueType:"text",maxLength:150,defaultValue:void 0},Od:{id:"timingVar",name:"utv",valueType:"text",maxLength:500,defaultValue:void 0},Nd:{id:"timingValue",name:"utt",valueType:"integer",maxLength:void 0,defaultValue:void 0},Md:{id:"timingLabel",
name:"utl",valueType:"text",maxLength:500,defaultValue:void 0},md:{id:"exDescription",name:"exd",valueType:"text",maxLength:150,defaultValue:void 0},nd:{id:"exFatal",name:"exf",valueType:"boolean",maxLength:void 0,defaultValue:"1"}},La=function(a){if(1>a||200<a)throw Error("Expected dimension index range 1-200, but was : "+a);return{id:"dimension"+a,name:"cd"+a,valueType:"text",maxLength:150,defaultValue:void 0}},Ma=function(a){if(1>a||200<a)throw Error("Expected metric index range 1-200, but was : "+
a);return{id:"metric"+a,name:"cm"+a,valueType:"integer",maxLength:void 0,defaultValue:void 0}};var Na=function(a){if(1>a)return"0";if(3>a)return"1-2";a=Math.floor(Math.log(a-1)/Math.log(2));return Math.pow(2,a)+1+"-"+Math.pow(2,a+1)},Oa=function(a,b){for(var c=0,d=a.length-1,e=0;c<=d;){var f=Math.floor((c+d)/2),e=a[f];if(b<=e){d=0==f?0:a[f-1];if(b>d)return(d+1).toString()+"-"+e.toString();d=f-1}else if(b>e){if(f>=a.length-1)return(a[a.length-1]+1).toString()+"+";c=f+1}}return"<= 0"};var z=function(){this.ab=[]},Pa=function(){return new z};g=z.prototype;g.when=function(a){this.ab.push(a);return this};g.zb=function(a){var b=arguments;this.when(function(a){return 0<=ja(b,a.Gb())});return this};g.Oc=function(a,b){var c=ra(arguments,1);this.when(function(b){b=b.T().get(a);return 0<=ja(c,b)});return this};g.xb=function(a,b){if(q(this.e))throw Error("Filter has already been set.");this.e=q(b)?r(a,b):a;return this};
g.Ca=function(){if(0==this.ab.length)throw Error("Must specify at least one predicate using #when or a helper method.");if(!q(this.e))throw Error("Must specify a delegate filter using #applyFilter.");return r(function(a){ma(this.ab,function(b){return b(a)})&&this.e(a)},this)};var A=function(){this.Ab=!1;this.Bb="";this.qb=!1;this.za=null};A.prototype.wc=function(a){this.Ab=!0;this.Bb=a||" - ";return this};A.prototype.Nc=function(){this.qb=!0;return this};A.prototype.Ec=function(){return Qa(this,Na)};A.prototype.Fc=function(a){return Qa(this,ha(Oa,a))};
var Qa=function(a,b){if(null!=a.za)throw Error("LabelerBuilder: Only one labeling strategy may be used.");a.za=r(function(a){var d=a.T().get(Ja),e=a.T().get(Ia);ea(d)&&(d=b(d),null!=e&&this.Ab&&(d=e+this.Bb+d),a.T().set(Ia,d))},a);return a};A.prototype.Ca=function(){if(null==this.za)throw Error("LabelerBuilder: a labeling strategy must be specified prior to calling build().");return Pa().zb("event").xb(r(function(a){this.za(a);this.qb&&a.T().remove(Ja)},this)).Ca()};var Ra=function(a,b){var c=Array.prototype.slice.call(arguments),d=c.shift();if("undefined"==typeof d)throw Error("[goog.string.format] Template required");return d.replace(/%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g,function(a,b,d,l,N,J,U,V){if("%"==J)return"%";var Db=c.shift();if("undefined"==typeof Db)throw Error("[goog.string.format] Not enough arguments");arguments[0]=Db;return B[J].apply(null,arguments)})},B={s:function(a,b,c){return isNaN(c)||""==c||a.length>=c?a:a=-1<b.indexOf("-",0)?a+Array(c-
a.length+1).join(" "):Array(c-a.length+1).join(" ")+a},f:function(a,b,c,d,e){d=a.toString();isNaN(e)||""==e||(d=a.toFixed(e));var f;f=0>a?"-":0<=b.indexOf("+")?"+":0<=b.indexOf(" ")?" ":"";0<=a&&(d=f+d);if(isNaN(c)||d.length>=c)return d;d=isNaN(e)?Math.abs(a).toString():Math.abs(a).toFixed(e);a=c-d.length-f.length;return d=0<=b.indexOf("-",0)?f+d+Array(a+1).join(" "):f+Array(a+1).join(0<=b.indexOf("0",0)?"0":" ")+d},d:function(a,b,c,d,e,f,k,l){return B.f(parseInt(a,10),b,c,d,0,f,k,l)}};B.i=B.d;
B.u=B.d;var Sa=function(a){if("function"==typeof a.t)return a.t();if(n(a))return a.split("");if(da(a)){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}return va(a)},Ta=function(a,b){if("function"==typeof a.forEach)a.forEach(b,void 0);else if(da(a)||n(a))ka(a,b,void 0);else{var c;if("function"==typeof a.F)c=a.F();else if("function"!=typeof a.t)if(da(a)||n(a)){c=[];for(var d=a.length,e=0;e<d;e++)c.push(e)}else c=wa(a);else c=void 0;for(var d=Sa(a),e=d.length,f=0;f<e;f++)b.call(void 0,d[f],c&&c[f],
a)}};var C=function(a){this.B=new x;for(var b=arguments,c=0;c<b.length;c+=2)this.set(b[c],b[c+1])};C.prototype.set=function(a,b){this.B.set(a.name,{key:a,value:b})};C.prototype.remove=function(a){this.B.remove(a.name)};C.prototype.get=function(a){a=this.B.get(a.name,null);return null===a?null:a.value};C.prototype.ia=function(a){this.B.ia(a.B)};var Ua=function(a,b){ka(a.B.t(),function(a){b(a.key,a.value)})};C.prototype.Jb=function(){var a={};Ua(this,function(b,c){a[b.id]=c});return a};
C.prototype.clone=function(){var a=new C;a.B=this.B.clone();return a};C.prototype.toString=function(){var a={};Ua(this,function(b,c){a[b.id]=c});return JSON.stringify(a)};var D=function(a){this.e=a};g=D.prototype;g.xc=function(a){var b=new D(r(this.P,this));b.I=Ga;b.N=a;return b};g.action=function(a){var b=new D(r(this.P,this));b.I=Ha;b.N=a;return b};g.label=function(a){var b=new D(r(this.P,this));b.I=Ia;b.N=a;return b};g.value=function(a){var b=new D(r(this.P,this));b.I=Ja;b.N=a;return b};g.yc=function(a,b){var c=new D(r(this.P,this));c.I=La(a);c.N=b;return c};g.Dc=function(a,b){var c=new D(r(this.P,this));c.I=Ma(a);c.N=b;return c};
g.send=function(a){var b=new C;this.P(b);return a.send("event",b)};g.P=function(a){null!=this.I&&null!=this.N&&!a.B.Q(this.I.name)&&a.set(this.I,this.N);q(this.e)&&this.e(a)};var Va=new D(ba);var E=function(){this.Y=this.Y;this.Da=this.Da};E.prototype.Y=!1;E.prototype.xa=function(){this.Y||(this.Y=!0,this.l())};E.prototype.l=function(){if(this.Da)for(;this.Da.length;)this.Da.shift()()};var F=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.U=!1;this.kb=!0};F.prototype.l=function(){};F.prototype.xa=function(){};F.prototype.preventDefault=function(){this.defaultPrevented=!0;this.kb=!1};var Wa=function(a){Wa[" "](a);return a};Wa[" "]=ba;var G;t:{var Xa=h.navigator;if(Xa){var Ya=Xa.userAgent;if(Ya){G=Ya;break t}}G=""}var H=function(a){return-1!=G.indexOf(a)};var Za=H("Opera")||H("OPR"),I=H("Trident")||H("MSIE"),K=H("Gecko")&&-1==G.toLowerCase().indexOf("webkit")&&!(H("Trident")||H("MSIE")),L=-1!=G.toLowerCase().indexOf("webkit"),$a=function(){var a=h.document;return a?a.documentMode:void 0},ab=function(){var a="",b;if(Za&&h.opera)return a=h.opera.version,p(a)?a():a;K?b=/rv\:([^\);]+)(\)|;)/:I?b=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/:L&&(b=/WebKit\/(\S+)/);b&&(a=(a=b.exec(G))?a[1]:"");return I&&(b=$a(),b>parseFloat(a))?String(b):a}(),bb={},M=function(a){var b;
if(!(b=bb[a])){b=0;for(var c=String(ab).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),d=String(a).replace(/^[\s\xa0]+|[\s\xa0]+$/g,"").split("."),e=Math.max(c.length,d.length),f=0;0==b&&f<e;f++){var k=c[f]||"",l=d[f]||"",N=RegExp("(\\d*)(\\D*)","g"),J=RegExp("(\\d*)(\\D*)","g");do{var U=N.exec(k)||["","",""],V=J.exec(l)||["","",""];if(0==U[0].length&&0==V[0].length)break;b=ia(0==U[1].length?0:parseInt(U[1],10),0==V[1].length?0:parseInt(V[1],10))||ia(0==U[2].length,0==V[2].length)||ia(U[2],V[2])}while(0==
b)}b=bb[a]=0<=b}return b},cb=h.document,db=cb&&I?$a()||("CSS1Compat"==cb.compatMode?parseInt(ab,10):5):void 0;var eb=!I||I&&9<=db,fb=I&&!M("9"),gb=!L||M("528"),hb=K&&M("1.9b")||I&&M("8")||Za&&M("9.5")||L&&M("528"),ib=K&&!M("8")||I&&!M("9");var O=function(a,b){F.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.charCode=this.keyCode=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.Db=this.state=null;if(a){var c=this.type=a.type;this.target=a.target||a.srcElement;this.currentTarget=b;var d=a.relatedTarget;if(d){if(K){var e;t:{try{Wa(d.nodeName);e=!0;break t}catch(f){}e=!1}e||(d=null)}}else"mouseover"==
c?d=a.fromElement:"mouseout"==c&&(d=a.toElement);this.relatedTarget=d;this.offsetX=L||void 0!==a.offsetX?a.offsetX:a.layerX;this.offsetY=L||void 0!==a.offsetY?a.offsetY:a.layerY;this.clientX=void 0!==a.clientX?a.clientX:a.pageX;this.clientY=void 0!==a.clientY?a.clientY:a.pageY;this.screenX=a.screenX||0;this.screenY=a.screenY||0;this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"
gitextract_wq83segv/ ├── .allstar/ │ └── binary_artifacts.yaml ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ ├── dependabot.yml │ └── workflows/ │ ├── lint.yml │ └── sample-list-generator.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierignore ├── .prettierrc.json ├── .repo/ │ ├── migrate-samples.js │ └── sample-list-generator/ │ ├── .gitignore │ ├── README.md │ ├── extension-apis.json │ ├── package.json │ ├── src/ │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── libs/ │ │ │ ├── api-detector.ts │ │ │ ├── api-loader.ts │ │ │ └── sample-collector.ts │ │ ├── prepare-chrome-types.ts │ │ ├── types.ts │ │ └── utils/ │ │ ├── filesystem.ts │ │ └── manifest.ts │ └── test/ │ └── api-detector/ │ └── api-detector.test.ts ├── CONTRIBUTING.md ├── LICENSE ├── README-template.md ├── README.md ├── _archive/ │ ├── apps/ │ │ ├── README.md │ │ ├── libraries/ │ │ │ └── gapi-chrome-apps-lib/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ └── gapi-chrome-apps.js │ │ └── samples/ │ │ ├── analytics/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── google-analytics-bundle.js │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── sample_support_metadata.json │ │ ├── appengine-channelapi/ │ │ │ ├── README.md │ │ │ ├── app/ │ │ │ │ ├── README.md │ │ │ │ ├── channel_in_a_webview.js │ │ │ │ ├── game.js │ │ │ │ ├── index.css │ │ │ │ ├── index.html │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ └── appengine/ │ │ │ ├── app.yaml │ │ │ ├── chatactoe.py │ │ │ └── static/ │ │ │ └── channel_in_a_webview.html │ │ ├── appsquare/ │ │ │ ├── README.md │ │ │ ├── assets/ │ │ │ │ └── icon.psd │ │ │ ├── background.js │ │ │ ├── foursquare.js │ │ │ ├── loader.js │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── appview/ │ │ │ ├── README.md │ │ │ ├── embedded-app/ │ │ │ │ ├── README.md │ │ │ │ ├── camera.html │ │ │ │ ├── camera.js │ │ │ │ ├── default.html │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ └── host-app/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── blink1/ │ │ │ ├── README.md │ │ │ ├── blink1.js │ │ │ ├── color-picker.html │ │ │ ├── color-picker.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── style.css │ │ │ └── udev/ │ │ │ └── 61-blink1.rules │ │ ├── bluetooth-samples/ │ │ │ ├── battery-service-demo/ │ │ │ │ ├── README.md │ │ │ │ ├── background.js │ │ │ │ ├── main.html │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── style.css │ │ │ │ └── ui.js │ │ │ ├── device-info-demo/ │ │ │ │ ├── README.md │ │ │ │ ├── background.js │ │ │ │ ├── main.html │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── style.css │ │ │ │ └── ui.js │ │ │ └── heart-rate-sensor/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── style.css │ │ │ └── ui.js │ │ ├── calculator/ │ │ │ ├── README.md │ │ │ ├── calculator.html │ │ │ ├── controller.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── model.js │ │ │ ├── sample_support_metadata.json │ │ │ ├── style.css │ │ │ ├── tests/ │ │ │ │ ├── calculator_test.html │ │ │ │ └── calculator_test.js │ │ │ └── view.js │ │ ├── camera-capture/ │ │ │ ├── README.md │ │ │ ├── app.js │ │ │ ├── background.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── clock/ │ │ │ ├── README.md │ │ │ ├── alarm.js │ │ │ ├── clock.js │ │ │ ├── index.html │ │ │ ├── lib/ │ │ │ │ └── tipTipv13/ │ │ │ │ ├── jquery.tipTip.js │ │ │ │ ├── jquery.tipTip.minified.js │ │ │ │ └── tipTip.css │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── script.js │ │ │ ├── stopwatch.js │ │ │ ├── style.css │ │ │ ├── tests/ │ │ │ │ ├── clock_test.html │ │ │ │ ├── clock_test.js │ │ │ │ └── lib/ │ │ │ │ ├── prototype.js │ │ │ │ └── right.js │ │ │ └── timer.js │ │ ├── context-menu/ │ │ │ ├── README.md │ │ │ ├── a.html │ │ │ ├── a.js │ │ │ ├── b.html │ │ │ ├── b.js │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── dart/ │ │ │ ├── README.md │ │ │ ├── clock.html │ │ │ ├── compile.sh │ │ │ ├── css/ │ │ │ │ └── clock.css │ │ │ ├── dart/ │ │ │ │ ├── balls.dart │ │ │ │ ├── clock.dart │ │ │ │ ├── clock.dart.precompiled.js │ │ │ │ └── numbers.dart │ │ │ ├── js/ │ │ │ │ ├── browser_dart_csp_safe.js │ │ │ │ └── main.js │ │ │ ├── manifest.json │ │ │ ├── pubspec.yaml │ │ │ └── sample_support_metadata.json │ │ ├── desktop-capture/ │ │ │ ├── README.md │ │ │ ├── app.js │ │ │ ├── background.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── dialog-element/ │ │ │ ├── README.md │ │ │ ├── dialog.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── diff/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ ├── editor.css │ │ │ │ └── style.css │ │ │ ├── js/ │ │ │ │ ├── background.js │ │ │ │ ├── diff.js │ │ │ │ └── filesystem.js │ │ │ ├── lib/ │ │ │ │ ├── diff_match_patch.js │ │ │ │ ├── diff_match_patch_test.html │ │ │ │ ├── diff_match_patch_test.js │ │ │ │ ├── diff_match_patch_uncompressed.js │ │ │ │ └── jquery.activity-indicator.js │ │ │ ├── main.html │ │ │ └── manifest.json │ │ ├── dojo/ │ │ │ ├── .gitignore │ │ │ ├── Markdown_1.0.1/ │ │ │ │ ├── License.text │ │ │ │ ├── Markdown Readme.text │ │ │ │ └── Markdown.pl │ │ │ ├── README.md │ │ │ ├── build.sh │ │ │ ├── crxmake.sh │ │ │ ├── executable_list │ │ │ └── include/ │ │ │ └── main.css │ │ ├── filesystem-access/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ ├── app.js │ │ │ │ └── dnd.js │ │ │ └── manifest.json │ │ ├── frameless-window/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── frameless_window.html │ │ │ ├── frameless_window.js │ │ │ ├── manifest.json │ │ │ ├── style.css │ │ │ └── titlebar.js │ │ ├── gcm-notifications/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── register.html │ │ │ └── register.js │ │ ├── gdrive/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ ├── bootstrap.css │ │ │ │ └── main.css │ │ │ ├── js/ │ │ │ │ ├── app.js │ │ │ │ ├── background.js │ │ │ │ ├── dnd.js │ │ │ │ ├── gdocs.js │ │ │ │ ├── upload.js │ │ │ │ └── util.js │ │ │ ├── main.html │ │ │ └── manifest.json │ │ ├── github-auth/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── hello-world/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ └── styles/ │ │ │ └── main.css │ │ ├── hello-world-sync/ │ │ │ ├── README.md │ │ │ ├── app.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ └── style.css │ │ ├── hid/ │ │ │ ├── README.md │ │ │ ├── control-panel.html │ │ │ ├── control-panel.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── style.css │ │ ├── identity/ │ │ │ ├── README.md │ │ │ ├── identity.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support/ │ │ │ │ ├── README.md │ │ │ │ ├── google-code-prettify/ │ │ │ │ │ ├── lang-css.js │ │ │ │ │ └── run_prettify.js │ │ │ │ ├── prettify.css │ │ │ │ ├── prettify.js │ │ │ │ ├── prettify_theme.css │ │ │ │ ├── sample_support.js │ │ │ │ ├── show_snippets.html │ │ │ │ ├── show_snippets.js │ │ │ │ ├── snippets.css │ │ │ │ └── standard.css │ │ │ └── sample_support_metadata.json │ │ ├── image-edit/ │ │ │ ├── README.md │ │ │ ├── app.js │ │ │ ├── background.js │ │ │ ├── dnd.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── instagram-auth/ │ │ │ ├── README.md │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles/ │ │ │ └── main.css │ │ ├── io2012-presentation/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ ├── presentation.css │ │ │ │ └── theme.css │ │ │ ├── diff-sample-files/ │ │ │ │ ├── new-manifest.json │ │ │ │ └── old-manifest.json │ │ │ ├── helloworld/ │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── snippets │ │ │ │ ├── window.html │ │ │ │ └── window.js │ │ │ ├── js/ │ │ │ │ ├── main.js │ │ │ │ ├── servo.js │ │ │ │ ├── slide-config.js │ │ │ │ ├── slide-controller.js │ │ │ │ ├── slide-deck.js │ │ │ │ └── slides.js │ │ │ ├── manifest.json │ │ │ ├── presentation.html │ │ │ ├── servo/ │ │ │ │ ├── background.js │ │ │ │ ├── main.html │ │ │ │ ├── manifest.json │ │ │ │ ├── servo.js │ │ │ │ └── styles.css │ │ │ └── windowing_api/ │ │ │ ├── copycat.html │ │ │ ├── original.html │ │ │ ├── window.css │ │ │ └── window.js │ │ ├── ioio/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── keyboard-handler/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── window.html │ │ │ └── window.js │ │ ├── managed-in-app-payments/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ └── app.css │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── scripts/ │ │ │ ├── app.js │ │ │ └── buy.js │ │ ├── manga-cam/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── css/ │ │ │ │ └── index.css │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ ├── index.js │ │ │ │ ├── loader.js │ │ │ │ ├── postproc.js │ │ │ │ └── shaders/ │ │ │ │ ├── blur.x.glsl │ │ │ │ ├── blur.y.glsl │ │ │ │ ├── copy.fs.glsl │ │ │ │ ├── flake.fs.glsl │ │ │ │ ├── index.include.glsl │ │ │ │ ├── merge.fs.glsl │ │ │ │ ├── packing.include.glsl │ │ │ │ ├── sobel.fs.glsl │ │ │ │ └── toonize.fs.glsl │ │ │ └── manifest.json │ │ ├── mdns-browser/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── dns.js │ │ │ ├── header.css │ │ │ ├── main.css │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── service-types.js │ │ ├── media-gallery/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ ├── media-gallery.js │ │ │ ├── page.html │ │ │ ├── runtime.js │ │ │ └── styles.css │ │ ├── messaging/ │ │ │ ├── README.md │ │ │ ├── app1/ │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── index.js │ │ │ │ ├── main.css │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ ├── app2/ │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── index.js │ │ │ │ ├── main.css │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ └── extension/ │ │ │ ├── README.md │ │ │ ├── eventPage.js │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.css │ │ │ └── manifest.json │ │ ├── mini-code-edit/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── cm/ │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── demo/ │ │ │ │ │ ├── activeline.html │ │ │ │ │ ├── changemode.html │ │ │ │ │ ├── closetag.html │ │ │ │ │ ├── complete.html │ │ │ │ │ ├── emacs.html │ │ │ │ │ ├── folding.html │ │ │ │ │ ├── formatting.html │ │ │ │ │ ├── fullscreen.html │ │ │ │ │ ├── loadmode.html │ │ │ │ │ ├── marker.html │ │ │ │ │ ├── matchhighlighter.html │ │ │ │ │ ├── mustache.html │ │ │ │ │ ├── preview.html │ │ │ │ │ ├── resize.html │ │ │ │ │ ├── runmode.html │ │ │ │ │ ├── search.html │ │ │ │ │ ├── theme.html │ │ │ │ │ ├── vim.html │ │ │ │ │ └── visibletabs.html │ │ │ │ ├── doc/ │ │ │ │ │ ├── compress.html │ │ │ │ │ ├── docs.css │ │ │ │ │ ├── internals.html │ │ │ │ │ ├── manual.html │ │ │ │ │ ├── oldrelease.html │ │ │ │ │ ├── reporting.html │ │ │ │ │ └── upgrade_v2.2.html │ │ │ │ ├── index.html │ │ │ │ ├── keymap/ │ │ │ │ │ ├── emacs.js │ │ │ │ │ └── vim.js │ │ │ │ ├── lib/ │ │ │ │ │ ├── codemirror.css │ │ │ │ │ ├── codemirror.js │ │ │ │ │ └── util/ │ │ │ │ │ ├── closetag.js │ │ │ │ │ ├── dialog.css │ │ │ │ │ ├── dialog.js │ │ │ │ │ ├── foldcode.js │ │ │ │ │ ├── formatting.js │ │ │ │ │ ├── javascript-hint.js │ │ │ │ │ ├── loadmode.js │ │ │ │ │ ├── match-highlighter.js │ │ │ │ │ ├── overlay.js │ │ │ │ │ ├── runmode.js │ │ │ │ │ ├── search.js │ │ │ │ │ ├── searchcursor.js │ │ │ │ │ ├── simple-hint.css │ │ │ │ │ └── simple-hint.js │ │ │ │ ├── mode/ │ │ │ │ │ ├── clike/ │ │ │ │ │ │ ├── clike.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── clojure/ │ │ │ │ │ │ ├── clojure.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── coffeescript/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── coffeescript.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── css/ │ │ │ │ │ │ ├── css.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── diff/ │ │ │ │ │ │ ├── diff.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── ecl/ │ │ │ │ │ │ ├── ecl.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── erlang/ │ │ │ │ │ │ ├── erlang.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── gfm/ │ │ │ │ │ │ ├── gfm.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── go/ │ │ │ │ │ │ ├── go.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── groovy/ │ │ │ │ │ │ ├── groovy.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── haskell/ │ │ │ │ │ │ ├── haskell.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── htmlembedded/ │ │ │ │ │ │ ├── htmlembedded.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── htmlmixed/ │ │ │ │ │ │ ├── htmlmixed.js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── javascript/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── javascript.js │ │ │ │ │ ├── jinja2/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── jinja2.js │ │ │ │ │ ├── less/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── less.js │ │ │ │ │ ├── lua/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── lua.js │ │ │ │ │ ├── markdown/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── markdown.js │ │ │ │ │ ├── mysql/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── mysql.js │ │ │ │ │ ├── ntriples/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── ntriples.js │ │ │ │ │ ├── pascal/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── pascal.js │ │ │ │ │ ├── perl/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── perl.js │ │ │ │ │ ├── php/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── php.js │ │ │ │ │ ├── pig/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── pig.js │ │ │ │ │ ├── plsql/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── plsql.js │ │ │ │ │ ├── properties/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── properties.js │ │ │ │ │ ├── python/ │ │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── python.js │ │ │ │ │ ├── r/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── r.js │ │ │ │ │ ├── rpm/ │ │ │ │ │ │ ├── changes/ │ │ │ │ │ │ │ ├── changes.js │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── spec/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── spec.css │ │ │ │ │ │ └── spec.js │ │ │ │ │ ├── rst/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── rst.js │ │ │ │ │ ├── ruby/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── ruby.js │ │ │ │ │ ├── rust/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── rust.js │ │ │ │ │ ├── scheme/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── scheme.js │ │ │ │ │ ├── shell/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── shell.js │ │ │ │ │ ├── smalltalk/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── smalltalk.js │ │ │ │ │ ├── smarty/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── smarty.js │ │ │ │ │ ├── sparql/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── sparql.js │ │ │ │ │ ├── stex/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── stex.js │ │ │ │ │ │ └── test.html │ │ │ │ │ ├── tiddlywiki/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── tiddlywiki.css │ │ │ │ │ │ └── tiddlywiki.js │ │ │ │ │ ├── tiki/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── tiki.css │ │ │ │ │ │ └── tiki.js │ │ │ │ │ ├── vbscript/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vbscript.js │ │ │ │ │ ├── velocity/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── velocity.js │ │ │ │ │ ├── verilog/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── verilog.js │ │ │ │ │ ├── xml/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── xml.js │ │ │ │ │ ├── xquery/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── test/ │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── testBase.js │ │ │ │ │ │ │ ├── testEmptySequenceKeyword.js │ │ │ │ │ │ │ ├── testMultiAttr.js │ │ │ │ │ │ │ ├── testNamespaces.js │ │ │ │ │ │ │ ├── testProcessingInstructions.js │ │ │ │ │ │ │ └── testQuotes.js │ │ │ │ │ │ └── xquery.js │ │ │ │ │ └── yaml/ │ │ │ │ │ ├── index.html │ │ │ │ │ └── yaml.js │ │ │ │ ├── test/ │ │ │ │ │ ├── index.html │ │ │ │ │ ├── mode_test.css │ │ │ │ │ ├── mode_test.js │ │ │ │ │ └── test.js │ │ │ │ └── theme/ │ │ │ │ ├── ambiance.css │ │ │ │ ├── blackboard.css │ │ │ │ ├── cobalt.css │ │ │ │ ├── eclipse.css │ │ │ │ ├── elegant.css │ │ │ │ ├── erlang-dark.css │ │ │ │ ├── lesser-dark.css │ │ │ │ ├── monokai.css │ │ │ │ ├── neat.css │ │ │ │ ├── night.css │ │ │ │ ├── rubyblue.css │ │ │ │ └── xq-dark.css │ │ │ ├── editor.js │ │ │ ├── img/ │ │ │ │ └── README.txt │ │ │ ├── main.html │ │ │ ├── manifest.json │ │ │ ├── snippets.js │ │ │ └── style.css │ │ ├── multicast/ │ │ │ ├── ChatClient.js │ │ │ ├── Collection.js │ │ │ ├── MulticastSocket.js │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ └── manifest.json │ │ ├── one-time-payment/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ ├── app.css │ │ │ │ └── bootstrap.css │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── scripts/ │ │ │ └── app.js │ │ ├── optional-permissions/ │ │ │ ├── README.md │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── permissions.html │ │ │ └── permissions.js │ │ ├── parrot-ar-drone/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── lib/ │ │ │ │ ├── API.js │ │ │ │ ├── Command.js │ │ │ │ ├── Gamepad.js │ │ │ │ ├── NavData.js │ │ │ │ ├── Sequence.js │ │ │ │ └── Util.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ ├── scripts/ │ │ │ │ └── app.js │ │ │ ├── styles/ │ │ │ │ └── drone.css │ │ │ └── third-party/ │ │ │ └── gamepad.js │ │ ├── platform-title/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── main.css │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── platform-mac.css │ │ ├── printing/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── a.js │ │ │ ├── application.js │ │ │ ├── controls.html │ │ │ ├── controls.js │ │ │ ├── document.html │ │ │ ├── document.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── printout.html │ │ │ ├── printout.js │ │ │ └── style.css │ │ ├── restarted-demo/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── main.html │ │ │ ├── manifest.json │ │ │ └── sample_support_metadata.json │ │ ├── rich-notifications/ │ │ │ ├── README.md │ │ │ ├── app.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ ├── styles.css │ │ │ └── window.html │ │ ├── sandbox/ │ │ │ ├── LICENSE.handlebars │ │ │ ├── README.md │ │ │ ├── handlebars-1.0.0.beta.6.js │ │ │ ├── main.js │ │ │ ├── mainpage.html │ │ │ ├── mainpage.js │ │ │ ├── manifest.json │ │ │ ├── sandbox.html │ │ │ └── styles/ │ │ │ └── main.css │ │ ├── sandboxed-content/ │ │ │ ├── README.md │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sandboxed.html │ │ │ └── styles/ │ │ │ └── main.css │ │ ├── serial/ │ │ │ ├── adkjs/ │ │ │ │ ├── README.md │ │ │ │ ├── app/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── comm.html │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── main.css │ │ │ │ │ ├── img/ │ │ │ │ │ │ └── icon.xcf │ │ │ │ │ ├── js/ │ │ │ │ │ │ ├── adk.js │ │ │ │ │ │ ├── background.js │ │ │ │ │ │ └── serial.js │ │ │ │ │ └── manifest.json │ │ │ │ └── firmware/ │ │ │ │ ├── arduino_libs/ │ │ │ │ │ ├── AndroidAccessory/ │ │ │ │ │ │ ├── AndroidAccessory.cpp │ │ │ │ │ │ └── AndroidAccessory.h │ │ │ │ │ ├── CapSense/ │ │ │ │ │ │ ├── CapSense.cpp │ │ │ │ │ │ └── CapSense.h │ │ │ │ │ ├── TimedAction/ │ │ │ │ │ │ ├── TimedAction.cpp │ │ │ │ │ │ └── TimedAction.h │ │ │ │ │ └── USB_Host_Shield/ │ │ │ │ │ ├── Max3421e.cpp │ │ │ │ │ ├── Max3421e.h │ │ │ │ │ ├── Max3421e_constants.h │ │ │ │ │ ├── Max_LCD.cpp │ │ │ │ │ ├── Max_LCD.h │ │ │ │ │ ├── README │ │ │ │ │ ├── Usb.cpp │ │ │ │ │ ├── Usb.h │ │ │ │ │ └── ch9.h │ │ │ │ └── demokitclient/ │ │ │ │ └── demokitclient.ino │ │ │ ├── espruino/ │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── launch.js │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ └── ledtoggle/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── launch.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── sketches/ │ │ │ └── serial_light/ │ │ │ └── serial_light.ino │ │ ├── serial-control-signals/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── logic.js │ │ │ ├── main.html │ │ │ ├── manifest.json │ │ │ └── styles.css │ │ ├── servo/ │ │ │ ├── README.md │ │ │ ├── Servo/ │ │ │ │ └── Servo.ino │ │ │ ├── background.js │ │ │ ├── main.html │ │ │ ├── manifest.json │ │ │ ├── servo.js │ │ │ └── styles.css │ │ ├── storage/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── syncfs-editor/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ └── editor.css │ │ │ ├── js/ │ │ │ │ ├── background.js │ │ │ │ ├── editor.js │ │ │ │ ├── filer.js │ │ │ │ ├── main.js │ │ │ │ └── utils.js │ │ │ ├── main.html │ │ │ └── manifest.json │ │ ├── systemInfo/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── systemInfo.js │ │ ├── tasks/ │ │ │ ├── README.md │ │ │ ├── gapi-chrome-apps.js │ │ │ ├── gapiCallback.js │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── sample_support_metadata.json │ │ ├── tcpserver/ │ │ │ ├── README.md │ │ │ ├── commands/ │ │ │ │ ├── BrowserCommands.js │ │ │ │ └── webview.html │ │ │ ├── index.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ ├── server.js │ │ │ ├── styles/ │ │ │ │ ├── main.css │ │ │ │ └── webview.css │ │ │ └── tcp-server.js │ │ ├── telnet/ │ │ │ ├── README.md │ │ │ ├── ansi-converter.js │ │ │ ├── launch.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ ├── tcp-client.js │ │ │ ├── terminal.css │ │ │ ├── terminal.html │ │ │ └── terminal.js │ │ ├── text-editor/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── editor.html │ │ │ ├── editor.js │ │ │ ├── icons/ │ │ │ │ └── Readme.txt │ │ │ ├── lib/ │ │ │ │ ├── ace/ │ │ │ │ │ ├── ace.js │ │ │ │ │ ├── anchor.js │ │ │ │ │ ├── anchor_test.js │ │ │ │ │ ├── background_tokenizer.js │ │ │ │ │ ├── commands/ │ │ │ │ │ │ ├── command_manager.js │ │ │ │ │ │ ├── command_manager_test.js │ │ │ │ │ │ ├── default_commands.js │ │ │ │ │ │ └── multi_select_commands.js │ │ │ │ │ ├── config.js │ │ │ │ │ ├── css/ │ │ │ │ │ │ └── editor.css │ │ │ │ │ ├── document.js │ │ │ │ │ ├── document_test.js │ │ │ │ │ ├── edit_session/ │ │ │ │ │ │ ├── bracket_match.js │ │ │ │ │ │ ├── fold.js │ │ │ │ │ │ ├── fold_line.js │ │ │ │ │ │ └── folding.js │ │ │ │ │ ├── edit_session.js │ │ │ │ │ ├── edit_session_test.js │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── editor_change_document_test.js │ │ │ │ │ ├── editor_highlight_selected_word_test.js │ │ │ │ │ ├── editor_navigation_test.js │ │ │ │ │ ├── editor_text_edit_test.js │ │ │ │ │ ├── ext/ │ │ │ │ │ │ ├── static.css │ │ │ │ │ │ ├── static_highlight.js │ │ │ │ │ │ ├── static_highlight_test.js │ │ │ │ │ │ └── textarea.js │ │ │ │ │ ├── keyboard/ │ │ │ │ │ │ ├── hash_handler.js │ │ │ │ │ │ ├── keybinding/ │ │ │ │ │ │ │ ├── emacs.js │ │ │ │ │ │ │ └── vim.js │ │ │ │ │ │ ├── keybinding.js │ │ │ │ │ │ ├── state_handler.js │ │ │ │ │ │ └── textinput.js │ │ │ │ │ ├── layer/ │ │ │ │ │ │ ├── cursor.js │ │ │ │ │ │ ├── gutter.js │ │ │ │ │ │ ├── marker.js │ │ │ │ │ │ ├── text.js │ │ │ │ │ │ └── text_test.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── browser_focus.js │ │ │ │ │ │ ├── dom.js │ │ │ │ │ │ ├── es5-shim.js │ │ │ │ │ │ ├── event.js │ │ │ │ │ │ ├── event_emitter.js │ │ │ │ │ │ ├── event_emitter_test.js │ │ │ │ │ │ ├── fixoldbrowsers.js │ │ │ │ │ │ ├── keys.js │ │ │ │ │ │ ├── lang.js │ │ │ │ │ │ ├── net.js │ │ │ │ │ │ ├── oop.js │ │ │ │ │ │ ├── regexp.js │ │ │ │ │ │ └── useragent.js │ │ │ │ │ ├── mode/ │ │ │ │ │ │ ├── behaviour/ │ │ │ │ │ │ │ ├── cstyle.js │ │ │ │ │ │ │ ├── xml.js │ │ │ │ │ │ │ └── xquery.js │ │ │ │ │ │ ├── behaviour.js │ │ │ │ │ │ ├── c_cpp.js │ │ │ │ │ │ ├── c_cpp_highlight_rules.js │ │ │ │ │ │ ├── clojure.js │ │ │ │ │ │ ├── clojure_highlight_rules.js │ │ │ │ │ │ ├── coffee/ │ │ │ │ │ │ │ ├── coffee-script.js │ │ │ │ │ │ │ ├── helpers.js │ │ │ │ │ │ │ ├── lexer.js │ │ │ │ │ │ │ ├── nodes.js │ │ │ │ │ │ │ ├── parser.js │ │ │ │ │ │ │ ├── parser_test.js │ │ │ │ │ │ │ ├── rewriter.js │ │ │ │ │ │ │ └── scope.js │ │ │ │ │ │ ├── coffee.js │ │ │ │ │ │ ├── coffee_highlight_rules.js │ │ │ │ │ │ ├── coffee_highlight_rules_test.js │ │ │ │ │ │ ├── coffee_worker.js │ │ │ │ │ │ ├── coldfusion.js │ │ │ │ │ │ ├── coldfusion_highlight_rules.js │ │ │ │ │ │ ├── coldfusion_test.js │ │ │ │ │ │ ├── csharp.js │ │ │ │ │ │ ├── csharp_highlight_rules.js │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ └── csslint.js │ │ │ │ │ │ ├── css.js │ │ │ │ │ │ ├── css_highlight_rules.js │ │ │ │ │ │ ├── css_highlight_rules_test.js │ │ │ │ │ │ ├── css_test.js │ │ │ │ │ │ ├── css_worker.js │ │ │ │ │ │ ├── css_worker_test.js │ │ │ │ │ │ ├── doc_comment_highlight_rules.js │ │ │ │ │ │ ├── folding/ │ │ │ │ │ │ │ ├── cstyle.js │ │ │ │ │ │ │ ├── cstyle_test.js │ │ │ │ │ │ │ ├── fold_mode.js │ │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ │ ├── html_test.js │ │ │ │ │ │ │ ├── mixed.js │ │ │ │ │ │ │ ├── pythonic.js │ │ │ │ │ │ │ ├── pythonic_test.js │ │ │ │ │ │ │ ├── xml.js │ │ │ │ │ │ │ └── xml_test.js │ │ │ │ │ │ ├── golang.js │ │ │ │ │ │ ├── golang_highlight_rules.js │ │ │ │ │ │ ├── groovy.js │ │ │ │ │ │ ├── groovy_highlight_rules.js │ │ │ │ │ │ ├── haxe.js │ │ │ │ │ │ ├── haxe_highlight_rules.js │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ ├── html_highlight_rules.js │ │ │ │ │ │ ├── html_highlight_rules_test.js │ │ │ │ │ │ ├── html_test.js │ │ │ │ │ │ ├── java.js │ │ │ │ │ │ ├── java_highlight_rules.js │ │ │ │ │ │ ├── javascript.js │ │ │ │ │ │ ├── javascript_highlight_rules.js │ │ │ │ │ │ ├── javascript_highlight_rules_test.js │ │ │ │ │ │ ├── javascript_test.js │ │ │ │ │ │ ├── javascript_worker.js │ │ │ │ │ │ ├── javascript_worker_test.js │ │ │ │ │ │ ├── json/ │ │ │ │ │ │ │ └── json_parse.js │ │ │ │ │ │ ├── json.js │ │ │ │ │ │ ├── json_highlight_rules.js │ │ │ │ │ │ ├── json_worker.js │ │ │ │ │ │ ├── json_worker_test.js │ │ │ │ │ │ ├── latex.js │ │ │ │ │ │ ├── latex_highlight_rules.js │ │ │ │ │ │ ├── less.js │ │ │ │ │ │ ├── less_highlight_rules.js │ │ │ │ │ │ ├── liquid.js │ │ │ │ │ │ ├── liquid_highlight_rules.js │ │ │ │ │ │ ├── liquid_highlight_rules_test.js │ │ │ │ │ │ ├── lua.js │ │ │ │ │ │ ├── lua_highlight_rules.js │ │ │ │ │ │ ├── markdown.js │ │ │ │ │ │ ├── markdown_highlight_rules.js │ │ │ │ │ │ ├── matching_brace_outdent.js │ │ │ │ │ │ ├── matching_parens_outdent.js │ │ │ │ │ │ ├── ocaml.js │ │ │ │ │ │ ├── ocaml_highlight_rules.js │ │ │ │ │ │ ├── perl.js │ │ │ │ │ │ ├── perl_highlight_rules.js │ │ │ │ │ │ ├── pgsql.js │ │ │ │ │ │ ├── pgsql_highlight_rules.js │ │ │ │ │ │ ├── php.js │ │ │ │ │ │ ├── php_highlight_rules.js │ │ │ │ │ │ ├── powershell.js │ │ │ │ │ │ ├── powershell_highlight_rules.js │ │ │ │ │ │ ├── python.js │ │ │ │ │ │ ├── python_highlight_rules.js │ │ │ │ │ │ ├── python_test.js │ │ │ │ │ │ ├── ruby.js │ │ │ │ │ │ ├── ruby_highlight_rules.js │ │ │ │ │ │ ├── ruby_highlight_rules_test.js │ │ │ │ │ │ ├── scad.js │ │ │ │ │ │ ├── scad_highlight_rules.js │ │ │ │ │ │ ├── scala.js │ │ │ │ │ │ ├── scala_highlight_rules.js │ │ │ │ │ │ ├── scss.js │ │ │ │ │ │ ├── scss_highlight_rules.js │ │ │ │ │ │ ├── sh.js │ │ │ │ │ │ ├── sh_highlight_rules.js │ │ │ │ │ │ ├── sql.js │ │ │ │ │ │ ├── sql_highlight_rules.js │ │ │ │ │ │ ├── svg.js │ │ │ │ │ │ ├── svg_highlight_rules.js │ │ │ │ │ │ ├── text.js │ │ │ │ │ │ ├── text_highlight_rules.js │ │ │ │ │ │ ├── text_test.js │ │ │ │ │ │ ├── textile.js │ │ │ │ │ │ ├── textile_highlight_rules.js │ │ │ │ │ │ ├── xml.js │ │ │ │ │ │ ├── xml_highlight_rules.js │ │ │ │ │ │ ├── xml_highlight_rules_test.js │ │ │ │ │ │ ├── xml_test.js │ │ │ │ │ │ ├── xml_util.js │ │ │ │ │ │ ├── xquery.js │ │ │ │ │ │ └── xquery_highlight_rules.js │ │ │ │ │ ├── model/ │ │ │ │ │ │ └── editor.js │ │ │ │ │ ├── mouse/ │ │ │ │ │ │ ├── default_gutter_handler.js │ │ │ │ │ │ ├── default_handlers.js │ │ │ │ │ │ ├── dragdrop.js │ │ │ │ │ │ ├── fold_handler.js │ │ │ │ │ │ ├── mouse_event.js │ │ │ │ │ │ ├── mouse_handler.js │ │ │ │ │ │ └── multi_select_handler.js │ │ │ │ │ ├── multi_select.js │ │ │ │ │ ├── multi_select_test.js │ │ │ │ │ ├── narcissus/ │ │ │ │ │ │ ├── definitions.js │ │ │ │ │ │ ├── lexer.js │ │ │ │ │ │ ├── options.js │ │ │ │ │ │ └── parser.js │ │ │ │ │ ├── placeholder.js │ │ │ │ │ ├── placeholder_test.js │ │ │ │ │ ├── range.js │ │ │ │ │ ├── range_list.js │ │ │ │ │ ├── range_list_test.js │ │ │ │ │ ├── range_test.js │ │ │ │ │ ├── renderloop.js │ │ │ │ │ ├── requirejs/ │ │ │ │ │ │ └── text.js │ │ │ │ │ ├── scrollbar.js │ │ │ │ │ ├── search.js │ │ │ │ │ ├── search_test.js │ │ │ │ │ ├── selection.js │ │ │ │ │ ├── selection_test.js │ │ │ │ │ ├── split.js │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── all.js │ │ │ │ │ │ ├── all_browser.js │ │ │ │ │ │ ├── assertions.js │ │ │ │ │ │ ├── asyncjs/ │ │ │ │ │ │ │ ├── assert.js │ │ │ │ │ │ │ ├── async.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ │ ├── benchmark.js │ │ │ │ │ │ ├── mockdom.js │ │ │ │ │ │ ├── mockrenderer.js │ │ │ │ │ │ └── tests.html │ │ │ │ │ ├── theme/ │ │ │ │ │ │ ├── chrome.js │ │ │ │ │ │ ├── clouds.js │ │ │ │ │ │ ├── clouds_midnight.js │ │ │ │ │ │ ├── cobalt.js │ │ │ │ │ │ ├── crimson_editor.js │ │ │ │ │ │ ├── dawn.js │ │ │ │ │ │ ├── dreamweaver.js │ │ │ │ │ │ ├── eclipse.js │ │ │ │ │ │ ├── idle_fingers.js │ │ │ │ │ │ ├── kr_theme.js │ │ │ │ │ │ ├── merbivore.js │ │ │ │ │ │ ├── merbivore_soft.js │ │ │ │ │ │ ├── mono_industrial.js │ │ │ │ │ │ ├── monokai.js │ │ │ │ │ │ ├── pastel_on_dark.js │ │ │ │ │ │ ├── solarized_dark.js │ │ │ │ │ │ ├── solarized_light.js │ │ │ │ │ │ ├── textmate.js │ │ │ │ │ │ ├── tomorrow.js │ │ │ │ │ │ ├── tomorrow_night.js │ │ │ │ │ │ ├── tomorrow_night_blue.js │ │ │ │ │ │ ├── tomorrow_night_bright.js │ │ │ │ │ │ ├── tomorrow_night_eighties.js │ │ │ │ │ │ ├── twilight.js │ │ │ │ │ │ └── vibrant_ink.js │ │ │ │ │ ├── token_iterator.js │ │ │ │ │ ├── token_iterator_test.js │ │ │ │ │ ├── tokenizer.js │ │ │ │ │ ├── undomanager.js │ │ │ │ │ ├── unicode.js │ │ │ │ │ ├── virtual_renderer.js │ │ │ │ │ ├── virtual_renderer_test.js │ │ │ │ │ └── worker/ │ │ │ │ │ ├── jshint.js │ │ │ │ │ ├── jslint.js │ │ │ │ │ ├── mirror.js │ │ │ │ │ ├── worker.js │ │ │ │ │ └── worker_client.js │ │ │ │ └── pilot/ │ │ │ │ ├── browser_focus.js │ │ │ │ ├── canon.js │ │ │ │ ├── dom.js │ │ │ │ ├── event.js │ │ │ │ ├── event_emitter.js │ │ │ │ ├── fixoldbrowsers.js │ │ │ │ ├── index.js │ │ │ │ ├── keys.js │ │ │ │ ├── lang.js │ │ │ │ ├── oop.js │ │ │ │ └── useragent.js │ │ │ ├── manifest.json │ │ │ ├── modes.js │ │ │ ├── require.js │ │ │ ├── require_config.js │ │ │ └── styles.css │ │ ├── todomvc/ │ │ │ ├── background.js │ │ │ ├── bower.json │ │ │ ├── bower_components/ │ │ │ │ ├── director/ │ │ │ │ │ └── build/ │ │ │ │ │ └── director.js │ │ │ │ └── todomvc-common/ │ │ │ │ └── base.css │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ ├── alarms.js │ │ │ │ ├── app.js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── controller.js │ │ │ │ ├── export.js │ │ │ │ ├── helpers.js │ │ │ │ ├── model.js │ │ │ │ ├── store.js │ │ │ │ └── view.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ └── styles.css │ │ ├── tts/ │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── ttsdemo.css │ │ │ ├── ttsdemo.html │ │ │ └── ttsdemo.js │ │ ├── udp/ │ │ │ ├── README.md │ │ │ ├── demo.js │ │ │ ├── echo_mco.html │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── mco.js │ │ │ ├── networking.js │ │ │ ├── raf.js │ │ │ ├── sample_support_metadata.json │ │ │ └── server/ │ │ │ └── dropping-server.js │ │ ├── url-handler/ │ │ │ ├── README.md │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── usb/ │ │ │ ├── device-info/ │ │ │ │ ├── README.md │ │ │ │ ├── background.js │ │ │ │ ├── index.html │ │ │ │ ├── manifest.json │ │ │ │ ├── script.js │ │ │ │ └── style.css │ │ │ └── knob/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── knob.html │ │ │ ├── knob.js │ │ │ └── manifest.json │ │ ├── usb-label-printer/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── dettach_kernel_driver.py │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── styles/ │ │ │ └── main.css │ │ ├── weather/ │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ └── iscroll.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ ├── style.css │ │ │ ├── weather.html │ │ │ └── weather.js │ │ ├── web-store/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── css/ │ │ │ │ └── index.css │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ ├── index.js │ │ │ │ ├── webstore.js │ │ │ │ └── zip/ │ │ │ │ ├── deflate.js │ │ │ │ ├── inflate.js │ │ │ │ └── zip.js │ │ │ └── manifest.json │ │ ├── webgl-pointer-lock/ │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ ├── Detector.js │ │ │ │ └── showlogo3d.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── obj/ │ │ │ │ └── html5rocks.js │ │ │ └── styles/ │ │ │ └── main.css │ │ ├── webserver/ │ │ │ ├── README.md │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ └── styles/ │ │ │ ├── bootstrap.css │ │ │ └── main.css │ │ ├── websocket-server/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── http.js │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── manifest.json │ │ │ ├── sample_support_metadata.json │ │ │ └── sha1.js │ │ ├── webview-samples/ │ │ │ ├── browser/ │ │ │ │ ├── README.md │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── browser.js │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ ├── declarative-web-request/ │ │ │ │ ├── README.md │ │ │ │ ├── blocked.css │ │ │ │ ├── blocked.html │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── config.js │ │ │ │ ├── content_blocker.js │ │ │ │ ├── content_blocker_main.js │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ ├── insert-css/ │ │ │ │ ├── README.md │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── config.js │ │ │ │ ├── css.js │ │ │ │ ├── css_main.js │ │ │ │ ├── inject.css │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ ├── local-resources/ │ │ │ │ ├── README.md │ │ │ │ ├── app.css │ │ │ │ ├── bad_app.html │ │ │ │ ├── crash.js │ │ │ │ ├── good_app.html │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── trusted.html │ │ │ ├── multi-tab-browser/ │ │ │ │ ├── README.md │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── browser.js │ │ │ │ ├── browser_main.js │ │ │ │ ├── config.js │ │ │ │ ├── context_menu.js │ │ │ │ ├── exit_box_controller.js │ │ │ │ ├── find_box_controller.js │ │ │ │ ├── guest_messaging.js │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── permission_box_controller.js │ │ │ │ ├── popup.js │ │ │ │ ├── tabs.js │ │ │ │ └── zoom_box_controller.js │ │ │ ├── new-window/ │ │ │ │ ├── README.md │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── browser.js │ │ │ │ ├── browser_main.js │ │ │ │ ├── config.js │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.js │ │ │ │ ├── tabs.js │ │ │ │ └── title.js │ │ │ ├── new-window-user-agent/ │ │ │ │ ├── README.md │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── browser.js │ │ │ │ ├── browser_main.js │ │ │ │ ├── config.js │ │ │ │ ├── context_menu.js │ │ │ │ ├── guest_messaging.js │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.js │ │ │ │ └── tabs.js │ │ │ ├── shared-script/ │ │ │ │ ├── README.md │ │ │ │ ├── app.css │ │ │ │ ├── correct_injection.html │ │ │ │ ├── correct_injection.js │ │ │ │ ├── incorrect_injection.html │ │ │ │ ├── incorrect_injection.js │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── more_dragons.js │ │ │ ├── user-agent/ │ │ │ │ ├── README.md │ │ │ │ ├── browser.css │ │ │ │ ├── browser.html │ │ │ │ ├── browser.js │ │ │ │ ├── browser_bindings.js │ │ │ │ ├── config.js │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ └── webview/ │ │ │ ├── README.md │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ ├── index.js │ │ │ ├── main.js │ │ │ ├── manifest.json │ │ │ └── page_hosted_in_external_server.html │ │ ├── window-options/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── css/ │ │ │ │ └── window.css │ │ │ ├── icon_128.xcf │ │ │ ├── manifest.json │ │ │ ├── window.html │ │ │ └── window.js │ │ ├── window-state/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── icon_128.xcf │ │ │ ├── manifest.json │ │ │ ├── window.css │ │ │ ├── window.html │ │ │ └── window.js │ │ └── windows/ │ │ ├── README.md │ │ ├── copycat.html │ │ ├── main.js │ │ ├── manifest.json │ │ ├── original.html │ │ ├── scripts/ │ │ │ └── window.js │ │ └── styles/ │ │ └── window.css │ └── mv2/ │ ├── api/ │ │ ├── bookmarks/ │ │ │ └── basic/ │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── browserAction/ │ │ │ ├── make_page_red/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ ├── print/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ ├── set_icon_path/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ └── set_page_color/ │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── browsingData/ │ │ │ └── basic/ │ │ │ ├── manifest.json │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── commands/ │ │ │ ├── background.js │ │ │ ├── browser_action.html │ │ │ └── manifest.json │ │ ├── contentSettings/ │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── contextMenus/ │ │ │ ├── basic/ │ │ │ │ ├── manifest.json │ │ │ │ └── sample.js │ │ │ ├── event_page/ │ │ │ │ ├── manifest.json │ │ │ │ └── sample.js │ │ │ └── global_context_search/ │ │ │ ├── background.js │ │ │ ├── locales.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ └── options.js │ │ ├── cookies/ │ │ │ ├── background.js │ │ │ ├── manager.html │ │ │ ├── manager.js │ │ │ └── manifest.json │ │ ├── debugger/ │ │ │ ├── live-headers/ │ │ │ │ ├── background.js │ │ │ │ ├── headers.html │ │ │ │ ├── headers.js │ │ │ │ └── manifest.json │ │ │ └── pause-resume/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── default_command_override/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── desktopCapture/ │ │ │ ├── app.js │ │ │ ├── background.js │ │ │ ├── index.html │ │ │ └── manifest.json │ │ ├── deviceInfo/ │ │ │ └── basic/ │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── devtools/ │ │ │ ├── network/ │ │ │ │ └── chrome-firephp/ │ │ │ │ ├── background.js │ │ │ │ ├── devtools.html │ │ │ │ ├── devtools.js │ │ │ │ └── manifest.json │ │ │ └── panels/ │ │ │ └── chrome-query/ │ │ │ ├── devtools.html │ │ │ ├── devtools.js │ │ │ └── manifest.json │ │ ├── displaySource/ │ │ │ └── tabCast/ │ │ │ ├── README │ │ │ ├── background.js │ │ │ ├── main.css │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── document_scan/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── scan.css │ │ │ ├── scan.html │ │ │ └── scan.js │ │ ├── downloads/ │ │ │ ├── download_filename_controller/ │ │ │ │ ├── bg.js │ │ │ │ ├── manifest.json │ │ │ │ ├── options.html │ │ │ │ └── options.js │ │ │ ├── download_links/ │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.html │ │ │ │ ├── popup.js │ │ │ │ └── send_links.js │ │ │ ├── download_manager/ │ │ │ │ ├── _locales/ │ │ │ │ │ └── en/ │ │ │ │ │ └── messages.json │ │ │ │ ├── background.js │ │ │ │ ├── icons.html │ │ │ │ ├── icons.js │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.css │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ ├── download_open/ │ │ │ │ ├── _locales/ │ │ │ │ │ └── en/ │ │ │ │ │ └── messages.json │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ └── downloads_overwrite/ │ │ │ ├── bg.js │ │ │ └── manifest.json │ │ ├── eventPage/ │ │ │ └── basic/ │ │ │ ├── background.js │ │ │ ├── content.js │ │ │ └── manifest.json │ │ ├── extension/ │ │ │ └── isAllowedAccess/ │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ ├── popup.js │ │ │ └── sample.css │ │ ├── fileSystemProvider/ │ │ │ ├── archive/ │ │ │ │ ├── background.js │ │ │ │ ├── example1.fake │ │ │ │ ├── example2.fake │ │ │ │ └── manifest.json │ │ │ └── basic/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── fontSettings/ │ │ │ ├── css/ │ │ │ │ ├── chrome_shared.css │ │ │ │ ├── overlay.css │ │ │ │ ├── uber_shared.css │ │ │ │ └── widgets.css │ │ │ ├── js/ │ │ │ │ ├── cr/ │ │ │ │ │ ├── ui/ │ │ │ │ │ │ └── overlay.js │ │ │ │ │ └── ui.js │ │ │ │ └── cr.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── pending_changes.js │ │ │ ├── slider.css │ │ │ └── slider.js │ │ ├── history/ │ │ │ ├── historyOverride/ │ │ │ │ ├── history.html │ │ │ │ ├── logic.js │ │ │ │ ├── manifest.json │ │ │ │ └── style.css │ │ │ └── showHistory/ │ │ │ ├── manifest.json │ │ │ ├── typedUrls.html │ │ │ └── typedUrls.js │ │ ├── i18n/ │ │ │ ├── cld/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ ├── detectLanguage/ │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ ├── getMessage/ │ │ │ │ ├── _locales/ │ │ │ │ │ ├── en_US/ │ │ │ │ │ │ └── messages.json │ │ │ │ │ ├── es/ │ │ │ │ │ │ └── messages.json │ │ │ │ │ └── sr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ └── localizedHostedApp/ │ │ │ ├── _locales/ │ │ │ │ ├── de/ │ │ │ │ │ └── messages.json │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ └── manifest.json │ │ ├── idle/ │ │ │ └── idle_simple/ │ │ │ ├── background.js │ │ │ ├── history.html │ │ │ ├── history.js │ │ │ └── manifest.json │ │ ├── input.ime/ │ │ │ └── basic/ │ │ │ ├── main.js │ │ │ └── manifest.json │ │ ├── messaging/ │ │ │ └── timer/ │ │ │ ├── manifest.json │ │ │ ├── page.js │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── nativeMessaging/ │ │ │ ├── README.md │ │ │ ├── app/ │ │ │ │ ├── main.html │ │ │ │ ├── main.js │ │ │ │ └── manifest.json │ │ │ └── host/ │ │ │ ├── com.google.chrome.example.echo-win.json │ │ │ ├── com.google.chrome.example.echo.json │ │ │ ├── install_host.bat │ │ │ ├── install_host.sh │ │ │ ├── native-messaging-example-host │ │ │ ├── native-messaging-example-host.bat │ │ │ ├── uninstall_host.bat │ │ │ └── uninstall_host.sh │ │ ├── notifications/ │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ └── style.css │ │ ├── omnibox/ │ │ │ ├── newtab_search/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ └── simple-example/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── override/ │ │ │ ├── blank_ntp/ │ │ │ │ ├── blank.html │ │ │ │ └── manifest.json │ │ │ └── override_igoogle/ │ │ │ ├── manifest.json │ │ │ └── redirect.html │ │ ├── pageAction/ │ │ │ ├── pageaction_by_content/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ ├── pageaction_by_url/ │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ └── set_icon/ │ │ │ ├── background.html │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── permissions/ │ │ │ ├── extension-questions/ │ │ │ │ ├── manifest.json │ │ │ │ ├── options.html │ │ │ │ ├── options.js │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ └── extension-questions.crx │ │ ├── power/ │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── preferences/ │ │ │ ├── allowThirdPartyCookies/ │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.css │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ └── enableReferrer/ │ │ │ ├── manifest.json │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── printing/ │ │ │ ├── manifest.json │ │ │ ├── printers.css │ │ │ ├── printers.html │ │ │ └── printers.js │ │ ├── printingMetrics/ │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── print_jobs.css │ │ │ ├── print_jobs.html │ │ │ └── print_jobs.js │ │ ├── processes/ │ │ │ ├── process_monitor/ │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ └── show_tabs/ │ │ │ ├── manifest.json │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── storage/ │ │ │ └── stylizr/ │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── tabCapture/ │ │ │ ├── eventPage.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── receiver.html │ │ │ └── receiver.js │ │ ├── tabs/ │ │ │ ├── inspector/ │ │ │ │ ├── background.js │ │ │ │ ├── jstemplate_compiled.js │ │ │ │ ├── manifest.json │ │ │ │ ├── tabs_api.html │ │ │ │ └── tabs_api.js │ │ │ ├── pin/ │ │ │ │ ├── README │ │ │ │ ├── background.js │ │ │ │ └── manifest.json │ │ │ ├── screenshot/ │ │ │ │ ├── background.js │ │ │ │ ├── manifest.json │ │ │ │ ├── screenshot.html │ │ │ │ └── screenshot.js │ │ │ └── zoom/ │ │ │ ├── README │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── topsites/ │ │ │ ├── basic/ │ │ │ │ ├── manifest.json │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ └── magic8ball/ │ │ │ ├── manifest.json │ │ │ ├── newTab.css │ │ │ ├── newTab.html │ │ │ └── newTab.js │ │ ├── ttsEngine/ │ │ │ └── console_tts_engine/ │ │ │ ├── console_tts_engine.html │ │ │ ├── console_tts_engine.js │ │ │ └── manifest.json │ │ ├── water_alarm_notification/ │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── webNavigation/ │ │ │ └── basic/ │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── navigation_collector.js │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── webview/ │ │ │ ├── capturevisibleregion/ │ │ │ │ ├── display.html │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ ├── test.html │ │ │ │ ├── test.js │ │ │ │ └── test2.html │ │ │ ├── comm_demo_app/ │ │ │ │ ├── app.js │ │ │ │ ├── main.js │ │ │ │ ├── manifest.json │ │ │ │ └── test.html │ │ │ └── comm_demo_ext/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ └── windows/ │ │ └── merge_windows/ │ │ ├── NOTICE │ │ ├── background.js │ │ └── manifest.json │ ├── extensions/ │ │ ├── app_launcher/ │ │ │ ├── manifest.json │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── buildbot/ │ │ │ ├── active_issues.js │ │ │ ├── bg.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ ├── popup.js │ │ │ ├── prefs.js │ │ │ ├── try_status.js │ │ │ └── utils.js │ │ ├── calendar/ │ │ │ ├── _locales/ │ │ │ │ ├── ar/ │ │ │ │ │ └── messages.json │ │ │ │ ├── bg/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ca/ │ │ │ │ │ └── messages.json │ │ │ │ ├── cs/ │ │ │ │ │ └── messages.json │ │ │ │ ├── da/ │ │ │ │ │ └── messages.json │ │ │ │ ├── de/ │ │ │ │ │ └── messages.json │ │ │ │ ├── el/ │ │ │ │ │ └── messages.json │ │ │ │ ├── en/ │ │ │ │ │ └── messages.json │ │ │ │ ├── en_GB/ │ │ │ │ │ └── messages.json │ │ │ │ ├── es/ │ │ │ │ │ └── messages.json │ │ │ │ ├── es_419/ │ │ │ │ │ └── messages.json │ │ │ │ ├── et/ │ │ │ │ │ └── messages.json │ │ │ │ ├── fi/ │ │ │ │ │ └── messages.json │ │ │ │ ├── fil/ │ │ │ │ │ └── messages.json │ │ │ │ ├── fr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── he/ │ │ │ │ │ └── messages.json │ │ │ │ ├── hi/ │ │ │ │ │ └── messages.json │ │ │ │ ├── hr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── hu/ │ │ │ │ │ └── messages.json │ │ │ │ ├── id/ │ │ │ │ │ └── messages.json │ │ │ │ ├── it/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ja/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ko/ │ │ │ │ │ └── messages.json │ │ │ │ ├── lt/ │ │ │ │ │ └── messages.json │ │ │ │ ├── lv/ │ │ │ │ │ └── messages.json │ │ │ │ ├── nb/ │ │ │ │ │ └── messages.json │ │ │ │ ├── nl/ │ │ │ │ │ └── messages.json │ │ │ │ ├── pl/ │ │ │ │ │ └── messages.json │ │ │ │ ├── pt_BR/ │ │ │ │ │ └── messages.json │ │ │ │ ├── pt_PT/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ro/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ru/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sk/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sl/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sv/ │ │ │ │ │ └── messages.json │ │ │ │ ├── th/ │ │ │ │ │ └── messages.json │ │ │ │ ├── tr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── uk/ │ │ │ │ │ └── messages.json │ │ │ │ ├── vi/ │ │ │ │ │ └── messages.json │ │ │ │ ├── zh_CN/ │ │ │ │ │ └── messages.json │ │ │ │ └── zh_TW/ │ │ │ │ └── messages.json │ │ │ ├── javascript/ │ │ │ │ ├── background.js │ │ │ │ └── options.js │ │ │ ├── manifest.json │ │ │ └── views/ │ │ │ └── options.html │ │ ├── catblock/ │ │ │ ├── background.js │ │ │ ├── loldogs.js │ │ │ └── manifest.json │ │ ├── catifier/ │ │ │ ├── event_page.js │ │ │ └── manifest.json │ │ ├── chrome_search/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── constant_context/ │ │ │ ├── background.js │ │ │ ├── content_script.js │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── download_images/ │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── email_this_page/ │ │ │ ├── background.js │ │ │ ├── content_script.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ └── options.js │ │ ├── fx/ │ │ │ ├── bg.js │ │ │ ├── content.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ └── options.js │ │ ├── gdocs/ │ │ │ ├── README │ │ │ ├── background.html │ │ │ ├── chrome_ex_oauth.html │ │ │ ├── chrome_ex_oauth.js │ │ │ ├── chrome_ex_oauthsimple.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ └── popup.html │ │ ├── gmail/ │ │ │ ├── _locales/ │ │ │ │ ├── ar/ │ │ │ │ │ └── messages.json │ │ │ │ ├── bg/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ca/ │ │ │ │ │ └── messages.json │ │ │ │ ├── cs/ │ │ │ │ │ └── messages.json │ │ │ │ ├── da/ │ │ │ │ │ └── messages.json │ │ │ │ ├── de/ │ │ │ │ │ └── messages.json │ │ │ │ ├── el/ │ │ │ │ │ └── messages.json │ │ │ │ ├── en/ │ │ │ │ │ └── messages.json │ │ │ │ ├── en_GB/ │ │ │ │ │ └── messages.json │ │ │ │ ├── es/ │ │ │ │ │ └── messages.json │ │ │ │ ├── es_419/ │ │ │ │ │ └── messages.json │ │ │ │ ├── et/ │ │ │ │ │ └── messages.json │ │ │ │ ├── fi/ │ │ │ │ │ └── messages.json │ │ │ │ ├── fil/ │ │ │ │ │ └── messages.json │ │ │ │ ├── fr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── he/ │ │ │ │ │ └── messages.json │ │ │ │ ├── hi/ │ │ │ │ │ └── messages.json │ │ │ │ ├── hr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── hu/ │ │ │ │ │ └── messages.json │ │ │ │ ├── id/ │ │ │ │ │ └── messages.json │ │ │ │ ├── it/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ja/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ko/ │ │ │ │ │ └── messages.json │ │ │ │ ├── lt/ │ │ │ │ │ └── messages.json │ │ │ │ ├── lv/ │ │ │ │ │ └── messages.json │ │ │ │ ├── nb/ │ │ │ │ │ └── messages.json │ │ │ │ ├── nl/ │ │ │ │ │ └── messages.json │ │ │ │ ├── pl/ │ │ │ │ │ └── messages.json │ │ │ │ ├── pt_BR/ │ │ │ │ │ └── messages.json │ │ │ │ ├── pt_PT/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ro/ │ │ │ │ │ └── messages.json │ │ │ │ ├── ru/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sk/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sl/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── sv/ │ │ │ │ │ └── messages.json │ │ │ │ ├── th/ │ │ │ │ │ └── messages.json │ │ │ │ ├── tr/ │ │ │ │ │ └── messages.json │ │ │ │ ├── uk/ │ │ │ │ │ └── messages.json │ │ │ │ ├── vi/ │ │ │ │ │ └── messages.json │ │ │ │ ├── zh_CN/ │ │ │ │ │ └── messages.json │ │ │ │ └── zh_TW/ │ │ │ │ └── messages.json │ │ │ ├── background.html │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── imageinfo/ │ │ │ ├── NOTICE │ │ │ ├── background.js │ │ │ ├── imageinfo/ │ │ │ │ ├── binaryajax.js │ │ │ │ ├── exif.js │ │ │ │ ├── imageinfo.js │ │ │ │ └── readme.txt │ │ │ ├── info.css │ │ │ ├── info.html │ │ │ ├── info.js │ │ │ └── manifest.json │ │ ├── irc/ │ │ │ ├── README.txt │ │ │ ├── app/ │ │ │ │ └── manifest.json │ │ │ ├── conf/ │ │ │ │ ├── irc.xml │ │ │ │ ├── jetty.xml │ │ │ │ └── webdefault.xml │ │ │ └── servlet/ │ │ │ ├── WEB-INF/ │ │ │ │ └── web.xml │ │ │ ├── addChannel.html │ │ │ ├── addServer.html │ │ │ ├── index.html │ │ │ ├── irc.js │ │ │ ├── jstemplate/ │ │ │ │ ├── jsevalcontext.js │ │ │ │ ├── jstemplate.js │ │ │ │ └── util.js │ │ │ ├── notification.html │ │ │ ├── src/ │ │ │ │ └── org/ │ │ │ │ └── chromium/ │ │ │ │ └── IRCProxyWebSocket.java │ │ │ ├── styles.css │ │ │ └── util.js │ │ ├── managed_bookmarks/ │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ └── schema.json │ │ ├── mappy/ │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── mappy_content_script.js │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── maps_app/ │ │ │ └── manifest.json │ │ ├── news/ │ │ │ ├── README │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── css/ │ │ │ │ ├── feed.css │ │ │ │ └── options.css │ │ │ ├── javascript/ │ │ │ │ ├── feed.js │ │ │ │ ├── options.js │ │ │ │ └── util.js │ │ │ ├── manifest.json │ │ │ └── views/ │ │ │ ├── background.html │ │ │ ├── feed.html │ │ │ └── options.html │ │ ├── news_a11y/ │ │ │ ├── README │ │ │ ├── feed.css │ │ │ ├── feed.html │ │ │ ├── feed.js │ │ │ ├── feed_iframe.css │ │ │ ├── feed_iframe.js │ │ │ └── manifest.json │ │ ├── news_i18n/ │ │ │ ├── README │ │ │ ├── _locales/ │ │ │ │ ├── en/ │ │ │ │ │ └── messages.json │ │ │ │ ├── es/ │ │ │ │ │ └── messages.json │ │ │ │ └── sr/ │ │ │ │ └── messages.json │ │ │ ├── feed.css │ │ │ ├── feed.html │ │ │ ├── feed.js │ │ │ └── manifest.json │ │ ├── no_cookies/ │ │ │ ├── background.js │ │ │ └── manifest.json │ │ ├── oauth_contacts/ │ │ │ ├── NOTICE │ │ │ ├── README │ │ │ ├── background.js │ │ │ ├── chrome_ex_oauth.html │ │ │ ├── chrome_ex_oauth.js │ │ │ ├── chrome_ex_oauthsimple.js │ │ │ ├── contacts.html │ │ │ ├── contacts.js │ │ │ ├── manifest.json │ │ │ └── onload.js │ │ ├── optional_permissions/ │ │ │ ├── logic.js │ │ │ ├── manifest.json │ │ │ ├── newtab.html │ │ │ └── style.css │ │ ├── plugin_settings/ │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── css/ │ │ │ │ ├── plugin_list.css │ │ │ │ └── rule_list.css │ │ │ ├── domui/ │ │ │ │ ├── css/ │ │ │ │ │ ├── button.css │ │ │ │ │ ├── chrome_shared.css │ │ │ │ │ ├── list.css │ │ │ │ │ └── select.css │ │ │ │ └── js/ │ │ │ │ ├── cr/ │ │ │ │ │ ├── event_target.js │ │ │ │ │ ├── ui/ │ │ │ │ │ │ ├── array_data_model.js │ │ │ │ │ │ ├── list.js │ │ │ │ │ │ ├── list_item.js │ │ │ │ │ │ ├── list_selection_controller.js │ │ │ │ │ │ ├── list_selection_model.js │ │ │ │ │ │ └── list_single_selection_model.js │ │ │ │ │ └── ui.js │ │ │ │ ├── cr.js │ │ │ │ └── util.js │ │ │ ├── js/ │ │ │ │ ├── chrome_stubs.js │ │ │ │ ├── main.js │ │ │ │ ├── plugin_list.js │ │ │ │ ├── plugin_list_test.html │ │ │ │ ├── plugin_settings.js │ │ │ │ ├── plugin_settings_test.html │ │ │ │ ├── rule_list.js │ │ │ │ └── rule_list_test.html │ │ │ ├── manifest.json │ │ │ ├── options/ │ │ │ │ ├── css/ │ │ │ │ │ └── list.css │ │ │ │ └── js/ │ │ │ │ ├── deletable_item_list.js │ │ │ │ └── inline_editable_list.js │ │ │ └── options.html │ │ ├── proxy_configuration/ │ │ │ ├── _locales/ │ │ │ │ └── en/ │ │ │ │ └── messages.json │ │ │ ├── background.js │ │ │ ├── manifest.json │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ ├── popup.js │ │ │ ├── proxy_error_handler.js │ │ │ ├── proxy_form_controller.js │ │ │ └── test/ │ │ │ ├── jsunittest.js │ │ │ ├── proxy_form_controller_test.html │ │ │ ├── proxy_form_controller_test.js │ │ │ └── unittest.css │ │ ├── speak_selection/ │ │ │ ├── background.js │ │ │ ├── content_script.js │ │ │ ├── keycodes.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ └── tabs.js │ │ ├── talking_alarm_clock/ │ │ │ ├── audio/ │ │ │ │ ├── cuckoo.ogg │ │ │ │ ├── digital.ogg │ │ │ │ ├── metal.ogg │ │ │ │ ├── ringing.ogg │ │ │ │ └── rooster.ogg │ │ │ ├── background.js │ │ │ ├── common.js │ │ │ ├── credits.html │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── ttsdebug/ │ │ │ ├── manifest.json │ │ │ ├── ttsdebug.css │ │ │ ├── ttsdebug.html │ │ │ └── ttsdebug.js │ │ └── ttsdemo/ │ │ ├── manifest.json │ │ ├── ttsdemo.html │ │ └── ttsdemo.js │ ├── howto/ │ │ ├── sandbox/ │ │ │ ├── LICENSE.handlebars │ │ │ ├── eventpage.html │ │ │ ├── eventpage.js │ │ │ ├── handlebars-1.0.0.beta.6.js │ │ │ ├── manifest.json │ │ │ └── sandbox.html │ │ └── tab_shortcuts/ │ │ ├── manifest.json │ │ └── tab_shortcuts.js │ ├── readme.md │ └── tutorials/ │ ├── analytics/ │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── broken_background_color/ │ │ ├── background.js │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ └── popup.js │ ├── get_started/ │ │ ├── background.js │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ └── popup.js │ ├── get_started_complete/ │ │ ├── background.js │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ └── popup.js │ ├── getstarted/ │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── hello_extensions/ │ │ ├── hello.html │ │ └── manifest.json │ ├── oauth_starter/ │ │ ├── background.js │ │ ├── index.html │ │ ├── manifest.json │ │ └── oauth.js │ └── oauth_tutorial_complete/ │ ├── background.js │ ├── index.html │ ├── manifest.json │ └── oauth.js ├── api-samples/ │ ├── action/ │ │ ├── README.md │ │ ├── background.js │ │ ├── demo/ │ │ │ ├── index.css │ │ │ ├── index.html │ │ │ └── index.js │ │ ├── manifest.json │ │ ├── popups/ │ │ │ ├── a.html │ │ │ ├── b.html │ │ │ └── popup.html │ │ └── third-party/ │ │ └── awsm/ │ │ └── awsm.css │ ├── alarms/ │ │ ├── README.md │ │ ├── background.js │ │ ├── bg-wrapper.js │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ └── manifest.json │ ├── bookmarks/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── browsingData/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.css │ │ ├── popup.html │ │ └── popup.js │ ├── commands/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── popup.css │ │ ├── popup.html │ │ └── popup.js │ ├── contentSettings/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── contextMenus/ │ │ ├── basic/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ └── sample.js │ │ └── global_context_search/ │ │ ├── README.md │ │ ├── background.js │ │ ├── locales.js │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── cookies/ │ │ └── cookie-clearer/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── debugger/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── service-worker.js │ ├── declarativeNetRequest/ │ │ ├── no-cookies/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ ├── rules_1.json │ │ │ └── service-worker.js │ │ ├── url-blocker/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ ├── rules_1.json │ │ │ └── service_worker.js │ │ └── url-redirect/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── rules_1.json │ │ └── service_worker.js │ ├── default_command_override/ │ │ ├── README.md │ │ ├── background.js │ │ └── manifest.json │ ├── devtools/ │ │ ├── inspectedWindow/ │ │ │ ├── README.md │ │ │ ├── devtools.html │ │ │ ├── devtools.js │ │ │ ├── manifest.json │ │ │ ├── panel.html │ │ │ └── panel.js │ │ └── panels/ │ │ ├── devtools.html │ │ ├── devtools.js │ │ ├── manifest.json │ │ └── readme.md │ ├── favicon/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── fontSettings/ │ │ ├── fontSettings Advanced/ │ │ │ ├── README.md │ │ │ ├── css/ │ │ │ │ ├── chrome_shared.css │ │ │ │ ├── overlay.css │ │ │ │ ├── uber_shared.css │ │ │ │ └── widgets.css │ │ │ ├── js/ │ │ │ │ ├── cr/ │ │ │ │ │ ├── ui/ │ │ │ │ │ │ └── overlay.js │ │ │ │ │ └── ui.js │ │ │ │ └── cr.js │ │ │ ├── manifest.json │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── pending_changes.js │ │ │ ├── slider.css │ │ │ └── slider.js │ │ └── fontSettings Basic/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── history/ │ │ ├── historyOverride/ │ │ │ ├── README.md │ │ │ ├── history.html │ │ │ ├── logic.js │ │ │ ├── manifest.json │ │ │ └── style.css │ │ └── showHistory/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ ├── popup.js │ │ └── service-worker.js │ ├── identity/ │ │ ├── README.md │ │ ├── identity.js │ │ ├── index.html │ │ ├── main.js │ │ ├── manifest.json │ │ └── style.css │ ├── idle/ │ │ ├── README.md │ │ ├── history.html │ │ ├── history.js │ │ ├── manifest.json │ │ └── service-worker.js │ ├── il8n/ │ │ ├── README.md │ │ ├── _locales/ │ │ │ ├── en/ │ │ │ │ └── messages.json │ │ │ └── fr/ │ │ │ └── messages.json │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── nativeMessaging/ │ │ ├── README.md │ │ ├── extension/ │ │ │ ├── main.html │ │ │ ├── main.js │ │ │ └── manifest.json │ │ └── host/ │ │ ├── com.google.chrome.example.echo-win.json │ │ ├── com.google.chrome.example.echo.json │ │ ├── install_host.bat │ │ ├── install_host.sh │ │ ├── native-messaging-example-host │ │ ├── native-messaging-example-host.bat │ │ ├── uninstall_host.bat │ │ └── uninstall_host.sh │ ├── omnibox/ │ │ ├── new-tab-search/ │ │ │ ├── README.md │ │ │ ├── background.js │ │ │ └── manifest.json │ │ └── simple-example/ │ │ ├── README.md │ │ ├── logs.css │ │ ├── logs.html │ │ ├── logs.js │ │ ├── manifest.json │ │ └── service-worker.js │ ├── override/ │ │ └── blank_ntp/ │ │ ├── README.md │ │ ├── blank.html │ │ └── manifest.json │ ├── power/ │ │ ├── README.md │ │ ├── _locales/ │ │ │ └── en/ │ │ │ └── messages.json │ │ ├── background.js │ │ └── manifest.json │ ├── printing/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── printers.css │ │ ├── printers.html │ │ └── printers.js │ ├── privacy/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── service-worker.js │ ├── readingList/ │ │ ├── README.md │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ ├── manifest.json │ │ └── sw.js │ ├── richNotification/ │ │ ├── manifest.json │ │ ├── popup.html │ │ ├── popup.js │ │ └── readme.md │ ├── sandbox/ │ │ ├── sandbox/ │ │ │ ├── LICENSE.handlebars │ │ │ ├── handlebars-1.0.0.beta.6.js │ │ │ ├── mainpage.html │ │ │ ├── mainpage.js │ │ │ ├── manifest.json │ │ │ ├── sandbox.html │ │ │ ├── sandbox.md │ │ │ ├── service-worker.js │ │ │ └── styles/ │ │ │ └── main.css │ │ └── sandboxed-content/ │ │ ├── README.md │ │ ├── main.html │ │ ├── manifest.json │ │ ├── sandboxed.html │ │ ├── service-worker.js │ │ └── styles/ │ │ └── main.css │ ├── scripting/ │ │ ├── README.md │ │ ├── content-script.js │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ ├── manifest.json │ │ └── sw.js │ ├── storage/ │ │ └── stylizr/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ └── popup.js │ ├── tabCapture/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── receiver.html │ │ ├── receiver.js │ │ └── service-worker.js │ ├── tabs/ │ │ ├── inspector/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ ├── service-worker.js │ │ │ ├── window_and_tabs_manager.css │ │ │ ├── window_and_tabs_manager.html │ │ │ └── window_and_tabs_manager.js │ │ ├── pin/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ └── service-worker.js │ │ ├── screenshot/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ ├── screenshot.html │ │ │ ├── screenshot.js │ │ │ └── service-worker.js │ │ └── zoom/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ ├── popup.js │ │ └── service-worker.js │ ├── topSites/ │ │ ├── basic/ │ │ │ ├── README.md │ │ │ ├── manifest.json │ │ │ ├── popup.html │ │ │ └── popup.js │ │ └── magic8ball/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── newTab.css │ │ ├── newTab.html │ │ └── newTab.js │ ├── userScripts/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── options.css │ │ ├── options.html │ │ ├── options.js │ │ ├── sw.js │ │ └── user-script.js │ ├── web-accessible-resources/ │ │ ├── README.md │ │ ├── content-script.js │ │ ├── index.html │ │ ├── manifest.json │ │ └── service-worker.js │ ├── webNavigation/ │ │ └── basic/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── service-worker.js │ ├── webRequest/ │ │ └── http-auth/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── service-worker.js │ └── windows/ │ ├── README.md │ ├── background.js │ └── manifest.json ├── eslint.config.js ├── functional-samples/ │ ├── ai.gemini-in-the-cloud/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── package.json │ │ └── sidepanel/ │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── ai.gemini-on-device/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── package.json │ │ ├── privacy.txt │ │ ├── rollup.config.mjs │ │ └── sidepanel/ │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── ai.gemini-on-device-alt-texter/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── ai.gemini-on-device-audio-scribe/ │ │ ├── README.md │ │ ├── background.js │ │ ├── bridge.js │ │ ├── demo-chat-app/ │ │ │ ├── index.html │ │ │ ├── script.js │ │ │ └── style.css │ │ ├── manifest.json │ │ ├── override-createobject-url.js │ │ ├── sidepanel.html │ │ └── sidepanel.js │ ├── ai.gemini-on-device-calendar-mate/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── package.json │ │ └── rollup.config.mjs │ ├── ai.gemini-on-device-summarization/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── package.json │ │ ├── rollup.config.mjs │ │ ├── scripts/ │ │ │ └── extract-content.js │ │ └── sidepanel/ │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ ├── cookbook.file_handlers/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── view-file.html │ │ └── view-file.js │ ├── cookbook.geolocation-contentscript/ │ │ ├── README.md │ │ ├── content-script.js │ │ └── manifest.json │ ├── cookbook.geolocation-offscreen/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── offscreen.html │ │ ├── offscreen.js │ │ └── service_worker.js │ ├── cookbook.geolocation-popup/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── cookbook.offscreen-clipboard-write/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── offscreen.html │ │ └── offscreen.js │ ├── cookbook.offscreen-dom/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── offscreen.html │ │ └── offscreen.js │ ├── cookbook.permissions-addhostaccessrequest/ │ │ ├── README.md │ │ ├── background.js │ │ ├── banner.js │ │ └── manifest.json │ ├── cookbook.push/ │ │ ├── README.md │ │ ├── background.js │ │ └── manifest.json │ ├── cookbook.sidepanel-global/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── service-worker.js │ │ ├── sidepanel.html │ │ └── sidepanel.js │ ├── cookbook.sidepanel-multiple/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── service-worker.js │ │ └── sidepanels/ │ │ ├── main-sp.html │ │ └── welcome-sp.html │ ├── cookbook.sidepanel-open/ │ │ ├── README.md │ │ ├── content-script.js │ │ ├── manifest.json │ │ ├── page.html │ │ ├── script.js │ │ ├── service-worker.js │ │ ├── sidepanel-global.html │ │ └── sidepanel-tab.html │ ├── cookbook.sidepanel-site-specific/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── service-worker.js │ │ └── sidepanel.html │ ├── cookbook.wasm-helloworld-print/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ └── wasm/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── pkg/ │ │ │ ├── helloworld_demo.d.ts │ │ │ ├── helloworld_demo.js │ │ │ ├── helloworld_demo_bg.wasm │ │ │ └── helloworld_demo_bg.wasm.d.ts │ │ └── src/ │ │ └── lib.rs │ ├── cookbook.wasm-helloworld-print-nomodule/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ └── wasm/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── pkg/ │ │ │ ├── helloworld_demo.d.ts │ │ │ ├── helloworld_demo.js │ │ │ ├── helloworld_demo_bg.wasm │ │ │ └── helloworld_demo_bg.wasm.d.ts │ │ └── src/ │ │ └── lib.rs │ ├── libraries-xhr-in-sw/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── package.json │ │ ├── rollup.config.mjs │ │ ├── sidepanel/ │ │ │ ├── index.html │ │ │ └── script.js │ │ └── third_party/ │ │ ├── fetchTitle.js │ │ └── xhr-shim/ │ │ ├── LICENSE │ │ └── xhr-shim.js │ ├── reference.mv3-content-scripts/ │ │ ├── README.md │ │ ├── content-script.js │ │ ├── manifest.json │ │ ├── popup.css │ │ ├── popup.html │ │ └── popup.js │ ├── sample.bookmarks/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.css │ │ ├── popup.html │ │ ├── popup.js │ │ └── third-party/ │ │ ├── jquery-1.12.4.js │ │ ├── jquery-ui-1.12.1.js │ │ ├── jquery-ui.css │ │ ├── jquery-ui.structure.css │ │ └── jquery-ui.theme.css │ ├── sample.catifier/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── rules.json │ ├── sample.co2meter/ │ │ ├── README.md │ │ ├── background.js │ │ ├── co2-state-iframe.html │ │ ├── co2-state-iframe.js │ │ ├── images/ │ │ │ └── icon32.psd │ │ ├── main-page.html │ │ ├── main-page.js │ │ ├── manifest.json │ │ ├── modules/ │ │ │ ├── co2_meter.js │ │ │ ├── constant.js │ │ │ └── icon.js │ │ ├── popup.html │ │ └── popup.js │ ├── sample.dnr-rule-manager/ │ │ ├── README.md │ │ ├── manager.css │ │ ├── manager.html │ │ ├── manager.js │ │ ├── manifest.json │ │ ├── popup.html │ │ ├── popup.js │ │ └── service_worker.js │ ├── sample.favicon-cs/ │ │ ├── README.md │ │ ├── content.js │ │ ├── manifest.json │ │ └── style.css │ ├── sample.milestones/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── sample.optional_permissions/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── newtab.html │ │ ├── newtab.js │ │ └── style.css │ ├── sample.page-redder/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── service-worker.js │ ├── sample.sidepanel-dictionary/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── service-worker.js │ │ ├── sidepanel.html │ │ └── sidepanel.js │ ├── sample.tabcapture-recorder/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── offscreen.html │ │ ├── offscreen.js │ │ └── service-worker.js │ ├── sample.theme/ │ │ ├── Cached Theme.pak │ │ ├── README.md │ │ └── manifest.json │ ├── sample.water_alarm_notification/ │ │ ├── README.md │ │ ├── background.js │ │ ├── manifest.json │ │ ├── popup.html │ │ └── popup.js │ ├── sample.webgpu/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── service-worker.js │ ├── tutorial.broken-color/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ ├── popup.js │ │ └── service-worker.js │ ├── tutorial.custom-cursor/ │ │ ├── README.md │ │ ├── counter.js │ │ ├── manifest.json │ │ ├── service-worker.js │ │ └── style.css │ ├── tutorial.focus-mode/ │ │ ├── README.md │ │ ├── background.js │ │ ├── focus-mode.css │ │ └── manifest.json │ ├── tutorial.focus-mode-debugging/ │ │ ├── README.md │ │ ├── background.js │ │ ├── fixed/ │ │ │ ├── background.js │ │ │ └── focus-mode.js │ │ ├── focus-mode.css │ │ ├── focus-mode.js │ │ └── manifest.json │ ├── tutorial.getting-started/ │ │ ├── README.md │ │ ├── background.js │ │ ├── button.css │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ └── popup.js │ ├── tutorial.google-analytics/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup/ │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── scripts/ │ │ │ └── google-analytics.js │ │ └── service-worker.js │ ├── tutorial.hello-world/ │ │ ├── README.md │ │ ├── hello.html │ │ ├── manifest.json │ │ └── popup.js │ ├── tutorial.mole-game/ │ │ ├── README.md │ │ ├── controller/ │ │ │ ├── manifest.json │ │ │ └── service-worker.js │ │ └── mole/ │ │ ├── manifest.json │ │ └── service-worker.js │ ├── tutorial.open-api-reference/ │ │ ├── README.md │ │ ├── api-list.js │ │ ├── content.js │ │ ├── manifest.json │ │ ├── service-worker.js │ │ ├── sw-omnibox.js │ │ ├── sw-suggestions.js │ │ └── sw-tips.js │ ├── tutorial.puppeteer/ │ │ ├── README.md │ │ ├── index.test.js │ │ └── package.json │ ├── tutorial.quick-api-reference/ │ │ ├── README.md │ │ ├── content.js │ │ ├── manifest.json │ │ ├── service-worker.js │ │ ├── sw-omnibox.js │ │ └── sw-tips.js │ ├── tutorial.reading-time/ │ │ ├── README.md │ │ ├── manifest.json │ │ └── scripts/ │ │ └── content.js │ ├── tutorial.tabs-manager/ │ │ ├── README.md │ │ ├── manifest.json │ │ ├── popup.css │ │ ├── popup.html │ │ └── popup.js │ ├── tutorial.terminate-sw/ │ │ ├── README.md │ │ ├── puppeteer/ │ │ │ ├── .eslintrc │ │ │ ├── index.test.js │ │ │ └── package.json │ │ ├── selenium/ │ │ │ ├── .eslintrc │ │ │ ├── index.test.js │ │ │ └── package.json │ │ └── test-extension/ │ │ ├── manifest.json │ │ ├── page.html │ │ ├── page.js │ │ ├── service-worker-broken.js │ │ └── service-worker-fixed.js │ └── tutorial.websockets/ │ ├── README.md │ ├── manifest.json │ └── service-worker.js └── package.json
Showing preview only (276K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3417 symbols across 525 files)
FILE: .repo/sample-list-generator/src/constants.ts
type FolderTypes (line 1) | type FolderTypes = "API_SAMPLE" | "FUNCTIONAL_SAMPLE";
constant AVAILABLE_FOLDERS (line 4) | const AVAILABLE_FOLDERS: { path: string, type: FolderTypes }[] = [
constant REPO_BASE_URL (line 15) | const REPO_BASE_URL =
FILE: .repo/sample-list-generator/src/libs/api-detector.ts
constant EXTENSION_API_MAP (line 13) | let EXTENSION_API_MAP: ExtensionApiMap = loadExtensionApis();
function getFullMemberExpression (line 79) | function getFullMemberExpression(
function getApiItem (line 122) | function getApiItem(parts: string[]): ApiItem {
function uniqueItems (line 144) | function uniqueItems(array: ApiItemWithType[]) {
method MemberExpression (line 174) | MemberExpression(path) {
FILE: .repo/sample-list-generator/src/prepare-chrome-types.ts
constant STORAGE_BUCKET (line 8) | const STORAGE_BUCKET = process.env.STORAGE_BUCKET;
FILE: .repo/sample-list-generator/src/types.ts
type ApiItem (line 3) | interface ApiItem {
type ApiItemWithType (line 8) | interface ApiItemWithType extends ApiItem {
type ManifestData (line 12) | interface ManifestData {
type LocaleData (line 19) | interface LocaleData {
type SampleItem (line 26) | type SampleItem = {
type AvailableFolderItem (line 36) | interface AvailableFolderItem {
type ApiTypeResult (line 41) | type ApiTypeResult =
type ExtensionApiMap (line 48) | type ExtensionApiMap = Record<string, Record<string, string[]>>
FILE: .repo/sample-list-generator/src/utils/manifest.ts
function usesLocaleFiles (line 6) | function usesLocaleFiles(obj: object): boolean {
FILE: _archive/apps/samples/analytics/google-analytics-bundle.js
function c (line 4) | function c(){}
FILE: _archive/apps/samples/analytics/main.js
function initAnalyticsConfig (line 17) | function initAnalyticsConfig(config) {
function startApp (line 28) | function startApp() {
function addButtonListener (line 46) | function addButtonListener(button) {
FILE: _archive/apps/samples/appengine-channelapi/app/channel_in_a_webview.js
function ChannelInAWebview (line 3) | function ChannelInAWebview(rootUrl) {
FILE: _archive/apps/samples/appengine-channelapi/app/game.js
function init (line 6) | function init() {
function game (line 16) | function game(data) {
FILE: _archive/apps/samples/appengine-channelapi/appengine/chatactoe.py
class Game (line 28) | class Game(db.Model):
class Wins (line 38) | class Wins():
class GameUpdater (line 54) | class GameUpdater():
method __init__ (line 57) | def __init__(self, game):
method get_game_message (line 60) | def get_game_message(self):
method send_update (line 71) | def send_update(self):
method check_win (line 77) | def check_win(self):
method make_move (line 93) | def make_move(self, position, user):
class GameFromRequest (line 107) | class GameFromRequest():
method __init__ (line 111) | def __init__(self, request):
method get_game_data (line 117) | def get_game_data(self):
class MovePage (line 121) | class MovePage(webapp.RequestHandler):
method post (line 122) | def post(self):
class OpenedPage (line 129) | class OpenedPage(webapp.RequestHandler):
method post (line 130) | def post(self):
class MainPage (line 135) | class MainPage(webapp.RequestHandler):
method get (line 138) | def get(self):
function main (line 185) | def main():
FILE: _archive/apps/samples/appsquare/loader.js
function ImageLoader (line 1) | function ImageLoader(url) {
FILE: _archive/apps/samples/appsquare/main.js
function initUi (line 1) | function initUi() {
function fetchCheckins (line 28) | function fetchCheckins() {
function renderCheckins (line 60) | function renderCheckins(checkins) {
FILE: _archive/apps/samples/appview/host-app/index.js
function appendLog (line 33) | function appendLog(message) {
FILE: _archive/apps/samples/blink1/blink1.js
function Blink1 (line 1) | function Blink1(deviceId) {
FILE: _archive/apps/samples/blink1/color-picker.js
function initializeWindow (line 11) | function initializeWindow() {
function enableControls (line 35) | function enableControls(enabled) {
function onDevicesEnumerated (line 41) | function onDevicesEnumerated(devices) {
function onDeviceAdded (line 53) | function onDeviceAdded(device) {
function onDeviceRemoved (line 72) | function onDeviceRemoved(deviceId) {
function addNewDevice (line 102) | function addNewDevice(blink1) {
function setActiveDevice (line 118) | function setActiveDevice(blink1) {
function switchToDevice (line 129) | function switchToDevice(optionIndex) {
function onSelectionChanged (line 140) | function onSelectionChanged() {
function onColorChanged (line 147) | function onColorChanged() {
function setGradients (line 152) | function setGradients() {
FILE: _archive/apps/samples/blink1/main.js
function onAppWindowClosed (line 3) | function onAppWindowClosed() {
function onAppWindowCreated (line 10) | function onAppWindowCreated(appWindow) {
FILE: _archive/apps/samples/bluetooth-samples/battery-service-demo/main.js
function BatteryLevelDemo (line 6) | function BatteryLevelDemo() {
FILE: _archive/apps/samples/bluetooth-samples/battery-service-demo/ui.js
function UI (line 4) | function UI() {
FILE: _archive/apps/samples/bluetooth-samples/device-info-demo/main.js
function DeviceInfoDemo (line 11) | function DeviceInfoDemo() {
FILE: _archive/apps/samples/bluetooth-samples/device-info-demo/ui.js
function UI (line 4) | function UI() {
function setFieldValue (line 151) | function setFieldValue(id, value) {
FILE: _archive/apps/samples/bluetooth-samples/heart-rate-sensor/main.js
function HeartRateSensor (line 8) | function HeartRateSensor() {
FILE: _archive/apps/samples/bluetooth-samples/heart-rate-sensor/ui.js
function UI (line 4) | function UI() {
function setFieldValue (line 134) | function setFieldValue(id, value) {
FILE: _archive/apps/samples/calculator/model.js
function Calculator (line 1) | function Calculator() {
FILE: _archive/apps/samples/calculator/view.js
function View (line 63) | function View(calcModel) {
function displayNumber (line 118) | function displayNumber(number) {
FILE: _archive/apps/samples/camera-capture/app.js
function getCamera (line 29) | function getCamera() {
function updateButtonState (line 95) | function updateButtonState() {
function getVideoSources (line 131) | function getVideoSources(callback) {
FILE: _archive/apps/samples/clock/lib/tipTipv13/jquery.tipTip.js
function active_tiptip (line 100) | function active_tiptip(){
function deactive_tiptip (line 183) | function deactive_tiptip(){
FILE: _archive/apps/samples/clock/lib/tipTipv13/jquery.tipTip.minified.js
function active_tiptip (line 21) | function active_tiptip(){opts.enter.call(this);tiptip_content.html(org_t...
function deactive_tiptip (line 21) | function deactive_tiptip(){opts.exit.call(this);if(timeout){clearTimeout...
FILE: _archive/apps/samples/clock/script.js
function createDefaultText (line 271) | function createDefaultText(default_text, $input) {
function openNewClock (line 290) | function openNewClock() {
function openNewAlarm (line 296) | function openNewAlarm() {
function setup (line 307) | function setup() {
function setupClocks (line 322) | function setupClocks() {
function setupAlarms (line 336) | function setupAlarms() {
function setupTimer (line 346) | function setupTimer() {
function setupStopwatch (line 351) | function setupStopwatch() {
function getCurrentPosSuccessFunction (line 356) | function getCurrentPosSuccessFunction(position) {
function getCurrentPosErrorFunction (line 375) | function getCurrentPosErrorFunction(error) {
function addClock (line 385) | function addClock(city_class) {
function addAlarm (line 400) | function addAlarm(id) {
function addWorldClock (line 429) | function addWorldClock() {
function addAlarmClock (line 461) | function addAlarmClock() {
function editAlarmClock (line 485) | function editAlarmClock(id) {
function resize (line 508) | function resize() {
function sizeOf (line 534) | function sizeOf(dictionary) {
FILE: _archive/apps/samples/clock/tests/lib/prototype.js
function subclass (line 73) | function subclass() {}
function create (line 74) | function create() {
function addMethods (line 103) | function addMethods(source) {
function Type (line 177) | function Type(o) {
function extend (line 191) | function extend(destination, source) {
function inspect (line 197) | function inspect(object) {
function toJSON (line 208) | function toJSON(value) {
function Str (line 212) | function Str(key, holder, stack) {
function stringify (line 270) | function stringify(object) {
function toQueryString (line 274) | function toQueryString(object) {
function toHTML (line 278) | function toHTML(object) {
function keys (line 282) | function keys(object) {
function values (line 300) | function values(object) {
function clone (line 307) | function clone(object) {
function isElement (line 311) | function isElement(object) {
function isArray (line 315) | function isArray(object) {
function isHash (line 326) | function isHash(object) {
function isFunction (line 330) | function isFunction(object) {
function isString (line 334) | function isString(object) {
function isNumber (line 338) | function isNumber(object) {
function isDate (line 342) | function isDate(object) {
function isUndefined (line 346) | function isUndefined(object) {
function update (line 372) | function update(array, args) {
function merge (line 378) | function merge(array, args) {
function argumentNames (line 383) | function argumentNames() {
function bind (line 391) | function bind(context) {
function bindAsEventListener (line 413) | function bindAsEventListener(context) {
function curry (line 421) | function curry() {
function delay (line 430) | function delay(timeout) {
function defer (line 438) | function defer() {
function wrap (line 443) | function wrap(wrapper) {
function methodize (line 451) | function methodize() {
function toISOString (line 481) | function toISOString() {
function toJSON (line 491) | function toJSON() {
function prepareReplacement (line 561) | function prepareReplacement(replacement) {
function gsub (line 567) | function gsub(pattern, replacement) {
function sub (line 591) | function sub(pattern, replacement, count) {
function scan (line 601) | function scan(pattern, iterator) {
function truncate (line 606) | function truncate(length, truncation) {
function strip (line 613) | function strip() {
function stripTags (line 617) | function stripTags() {
function stripScripts (line 621) | function stripScripts() {
function extractScripts (line 625) | function extractScripts() {
function evalScripts (line 633) | function evalScripts() {
function escapeHTML (line 637) | function escapeHTML() {
function unescapeHTML (line 641) | function unescapeHTML() {
function toQueryParams (line 646) | function toQueryParams(separator) {
function toArray (line 667) | function toArray() {
function succ (line 671) | function succ() {
function times (line 676) | function times(count) {
function camelize (line 680) | function camelize() {
function capitalize (line 686) | function capitalize() {
function underscore (line 690) | function underscore() {
function dasherize (line 698) | function dasherize() {
function inspect (line 702) | function inspect(useDoubleQuotes) {
function unfilterJSON (line 713) | function unfilterJSON(filter) {
function isJSON (line 717) | function isJSON() {
function evalJSON (line 726) | function evalJSON(sanitize) {
function parseJSON (line 740) | function parseJSON() {
function include (line 745) | function include(pattern) {
function startsWith (line 749) | function startsWith(pattern) {
function endsWith (line 753) | function endsWith(pattern) {
function empty (line 758) | function empty() {
function blank (line 762) | function blank() {
function interpolate (line 766) | function interpolate(object, pattern) {
function each (line 843) | function each(iterator, context) {
function eachSlice (line 852) | function eachSlice(number, iterator, context) {
function all (line 860) | function all(iterator, context) {
function any (line 870) | function any(iterator, context) {
function collect (line 880) | function collect(iterator, context) {
function detect (line 889) | function detect(iterator, context) {
function findAll (line 900) | function findAll(iterator, context) {
function grep (line 909) | function grep(filter, iterator, context) {
function include (line 923) | function include(object) {
function inGroupsOf (line 937) | function inGroupsOf(number, fillWith) {
function inject (line 945) | function inject(memo, iterator, context) {
function invoke (line 952) | function invoke(method) {
function max (line 959) | function max(iterator, context) {
function min (line 970) | function min(iterator, context) {
function partition (line 981) | function partition(iterator, context) {
function pluck (line 991) | function pluck(property) {
function reject (line 999) | function reject(iterator, context) {
function sortBy (line 1008) | function sortBy(iterator, context) {
function toArray (line 1020) | function toArray() {
function zip (line 1024) | function zip() {
function size (line 1035) | function size() {
function inspect (line 1039) | function inspect() {
function $A (line 1085) | function $A(iterable) {
function $w (line 1094) | function $w(string) {
function each (line 1108) | function each(iterator, context) {
function clear (line 1115) | function clear() {
function first (line 1120) | function first() {
function last (line 1124) | function last() {
function compact (line 1128) | function compact() {
function flatten (line 1134) | function flatten() {
function without (line 1143) | function without() {
function reverse (line 1150) | function reverse(inline) {
function uniq (line 1154) | function uniq(sorted) {
function intersect (line 1162) | function intersect(array) {
function clone (line 1169) | function clone() {
function size (line 1173) | function size() {
function inspect (line 1177) | function inspect() {
function indexOf (line 1181) | function indexOf(item, i) {
function lastIndexOf (line 1203) | function lastIndexOf(item, i) {
function concat (line 1228) | function concat(_) {
function wrapNative (line 1247) | function wrapNative(method) {
function map (line 1262) | function map(iterator) {
function filter (line 1283) | function filter(iterator) {
function some (line 1305) | function some(iterator) {
function every (line 1325) | function every(iterator) {
function inject (line 1345) | function inject(memo, iterator) {
function $H (line 1398) | function $H(object) {
function initialize (line 1403) | function initialize(object) {
function _each (line 1408) | function _each(iterator, context) {
function set (line 1417) | function set(key, value) {
function get (line 1421) | function get(key) {
function unset (line 1426) | function unset(key) {
function toObject (line 1432) | function toObject() {
function keys (line 1438) | function keys() {
function values (line 1442) | function values() {
function index (line 1446) | function index(value) {
function merge (line 1453) | function merge(object) {
function update (line 1457) | function update(object) {
function toQueryPair (line 1464) | function toQueryPair(key, value) {
function toQueryString (line 1475) | function toQueryString() {
function inspect (line 1493) | function inspect() {
function clone (line 1499) | function clone() {
function toColorPart (line 1525) | function toColorPart() {
function succ (line 1529) | function succ() {
function times (line 1533) | function times(iterator, context) {
function toPaddedString (line 1538) | function toPaddedString(length, radix) {
function abs (line 1543) | function abs() {
function round (line 1547) | function round() {
function ceil (line 1551) | function ceil() {
function floor (line 1555) | function floor() {
function $R (line 1571) | function $R(start, end, exclusive) {
function initialize (line 1576) | function initialize(start, end, exclusive) {
function _each (line 1582) | function _each(iterator, context) {
function include (line 1590) | function include(value) {
function $ (line 2031) | function $(element) {
function shouldUseCreationCache (line 2067) | function shouldUseCreationCache(tagName, attributes) {
function Element (line 2085) | function Element(tagName, attributes) {
function inspect (line 2114) | function inspect(element) {
function visible (line 2131) | function visible(element) {
function toggle (line 2135) | function toggle(element, bool) {
function hide (line 2144) | function hide(element) {
function show (line 2150) | function show(element) {
function remove (line 2165) | function remove(element) {
function update (line 2225) | function update(element, content) {
function replace (line 2276) | function replace(element, content) {
function replace_IE (line 2324) | function replace_IE(element, content) {
function isContent (line 2361) | function isContent(content) {
function insertContentAt (line 2371) | function insertContentAt(element, content, position) {
function insert (line 2395) | function insert(element, insertions) {
function wrap (line 2407) | function wrap(element, wrapper, attributes) {
function cleanWhitespace (line 2426) | function cleanWhitespace(element) {
function empty (line 2439) | function empty(element) {
function getContentFromAnonymousElement (line 2443) | function getContentFromAnonymousElement(tagName, html, force) {
function clone (line 2464) | function clone(element, deep) {
function purgeElement (line 2479) | function purgeElement(element) {
function purgeCollection (line 2489) | function purgeCollection(elements) {
function purgeCollection_IE (line 2495) | function purgeCollection_IE(elements) {
function purge (line 2510) | function purge(element) {
function recursivelyCollect (line 2536) | function recursivelyCollect(element, property, maximumLength) {
function ancestors (line 2552) | function ancestors(element) {
function descendants (line 2556) | function descendants(element) {
function firstDescendant (line 2560) | function firstDescendant(element) {
function immediateDescendants (line 2568) | function immediateDescendants(element) {
function previousSiblings (line 2581) | function previousSiblings(element) {
function nextSiblings (line 2585) | function nextSiblings(element) {
function siblings (line 2589) | function siblings(element) {
function match (line 2596) | function match(element, selector) {
function _recursivelyFind (line 2606) | function _recursivelyFind(element, property, expression, index) {
function up (line 2623) | function up(element, expression, index) {
function down (line 2630) | function down(element, expression, index) {
function previous (line 2640) | function previous(element, expression, index) {
function next (line 2644) | function next(element, expression, index) {
function select (line 2648) | function select(element) {
function adjacent (line 2654) | function adjacent(element) {
function descendantOf_DOM (line 2666) | function descendantOf_DOM(element, ancestor) {
function descendantOf_contains (line 2673) | function descendantOf_contains(element, ancestor) {
function descendantOf_compareDocumentPosition (line 2679) | function descendantOf_compareDocumentPosition(element, ancestor) {
function identify (line 2719) | function identify(element) {
function readAttribute (line 2731) | function readAttribute(element, name) {
function readAttribute_IE (line 2735) | function readAttribute_IE(element, name) {
function readAttribute_Opera (line 2752) | function readAttribute_Opera(element, name) {
function writeAttribute (line 2772) | function writeAttribute(element, name, value) {
function hasAttribute (line 2797) | function hasAttribute(element, attribute) {
function classNames (line 2805) | function classNames(element) {
function getRegExpForClassName (line 2810) | function getRegExpForClassName(className) {
function hasClassName (line 2818) | function hasClassName(element, className) {
function addClassName (line 2829) | function addClassName(element, className) {
function removeClassName (line 2838) | function removeClassName(element, className) {
function toggleClassName (line 2847) | function toggleClassName(element, className, bool) {
function _getAttr (line 2877) | function _getAttr(element, attribute) {
function _getAttr2 (line 2881) | function _getAttr2(element, attribute) {
function _getAttrNode (line 2885) | function _getAttrNode(element, attribute) {
function _getFlag (line 2890) | function _getFlag(element, attribute) {
function normalizeStyleName (line 3009) | function normalizeStyleName(style) {
function normalizeStyleName_IE (line 3015) | function normalizeStyleName_IE(style) {
function setStyle (line 3021) | function setStyle(element, styles) {
function getStyle (line 3051) | function getStyle(element, style) {
function getStyle_Opera (line 3065) | function getStyle_Opera(element, style) {
function getStyle_IE (line 3081) | function getStyle_IE(element, style) {
function stripAlphaFromFilter_IE (line 3102) | function stripAlphaFromFilter_IE(filter) {
function hasLayout_IE (line 3106) | function hasLayout_IE(element) {
function setOpacity (line 3117) | function setOpacity(element, value) {
function setOpacity_IE (line 3125) | function setOpacity_IE(element, value) {
function getOpacity (line 3149) | function getOpacity(element) {
function getOpacity_IE (line 3153) | function getOpacity_IE(element) {
function getUniqueElementID (line 3182) | function getUniqueElementID(element) {
function getUniqueElementID_IE (line 3190) | function getUniqueElementID_IE(element) {
function getStorage (line 3200) | function getStorage(element) {
function store (line 3211) | function store(element, key, value) {
function retrieve (line 3222) | function retrieve(element, key, defaultValue) {
function checkElementPrototypeDeficiency (line 3251) | function checkElementPrototypeDeficiency(tagName) {
function extendElementWith (line 3270) | function extendElementWith(element, methods) {
function elementIsExtended (line 3279) | function elementIsExtended(element) {
function extend (line 3284) | function extend(element) {
function extend_IE8 (line 3299) | function extend_IE8(element) {
function addMethodsToTagName (line 3316) | function addMethodsToTagName(tagName, methods) {
function mergeMethods (line 3322) | function mergeMethods(destination, methods, onlyIfAbsent) {
function findDOMClass (line 3332) | function findDOMClass(tagName) {
function addMethods (line 3359) | function addMethods(methods) {
function addFormMethods (line 3421) | function addFormMethods() {
function toDecimal (line 3438) | function toDecimal(pctString) {
function getRawStyle (line 3444) | function getRawStyle(element, style) {
function getRawStyle_IE (line 3457) | function getRawStyle_IE(element, style) {
function getContentWidth (line 3465) | function getContentWidth(element, context) {
function getPixelValue (line 3481) | function getPixelValue(value, property, context) {
function toCSSPixels (line 3539) | function toCSSPixels(number) {
function isDisplayed (line 3545) | function isDisplayed(element) {
function cssNameFor (line 3566) | function cssNameFor(key) {
function getLayout (line 3950) | function getLayout(element, preCompute) {
function measure (line 3954) | function measure(element, property) {
function getHeight (line 3958) | function getHeight(element) {
function getWidth (line 3962) | function getWidth(element) {
function getDimensions (line 3966) | function getDimensions(element) {
function getOffsetParent (line 4001) | function getOffsetParent(element) {
function cumulativeOffset (line 4020) | function cumulativeOffset(element) {
function positionedOffset (line 4033) | function positionedOffset(element) {
function cumulativeScrollOffset (line 4056) | function cumulativeScrollOffset(element) {
function viewportOffset (line 4066) | function viewportOffset(forElement) {
function absolutize (line 4087) | function absolutize(element) {
function relativize (line 4119) | function relativize(element) {
function scrollTo (line 4133) | function scrollTo(element) {
function makePositioned (line 4141) | function makePositioned(element) {
function undoPositioned (line 4156) | function undoPositioned(element) {
function makeClipping (line 4174) | function makeClipping(element) {
function undoClipping (line 4190) | function undoClipping(element) {
function clonePosition (line 4203) | function clonePosition(element, source, options) {
function isBody (line 4317) | function isBody(element) {
function isHtml (line 4321) | function isHtml(element) {
function isDocument (line 4325) | function isDocument(element) {
function isDetached (line 4329) | function isDetached(element) {
function getRootElement (line 4356) | function getRootElement() {
function getDimensions (line 4362) | function getDimensions() {
function getWidth (line 4366) | function getWidth() {
function getHeight (line 4370) | function getHeight() {
function getScrollOffsets (line 4374) | function getScrollOffsets() {
function select (line 4398) | function select() {
function match (line 4402) | function match() {
function find (line 4406) | function find(elements, expression, index) {
function extendElements (line 4417) | function extendElements(elements) {
function dirNodeCheck (line 5643) | function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck (line 5676) | function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function select (line 5769) | function select(selector, scope) {
function match (line 5773) | function match(element, selector) {
function input (line 5998) | function input(element, value) {
function inputSelector (line 6008) | function inputSelector(element, value) {
function valueSelector (line 6014) | function valueSelector(element, value) {
function select (line 6019) | function select(element, value) {
function selectOne (line 6037) | function selectOne(element) {
function selectMany (line 6042) | function selectMany(element) {
function optionValue (line 6053) | function optionValue(opt) {
function _isButtonForDOMEvents (line 6191) | function _isButtonForDOMEvents(event, code) {
function _isButtonForLegacyEvents (line 6196) | function _isButtonForLegacyEvents(event, code) {
function _isButtonForWebKit (line 6200) | function _isButtonForWebKit(event, code) {
function isLeftClick (line 6224) | function isLeftClick(event) { return _isButton(event, 0) }
function isMiddleClick (line 6226) | function isMiddleClick(event) { return _isButton(event, 1) }
function isRightClick (line 6228) | function isRightClick(event) { return _isButton(event, 2) }
function element (line 6230) | function element(event) {
function _element (line 6234) | function _element(event) {
function findElement (line 6253) | function findElement(event, expression) {
function pointer (line 6263) | function pointer(event) {
function pointerX (line 6267) | function pointerX(event) {
function pointerY (line 6276) | function pointerY(event) {
function stop (line 6286) | function stop(event) {
function _relatedTarget (line 6316) | function _relatedTarget(event) {
function getDOMEventName (line 6375) | function getDOMEventName(eventName) {
function getUniqueElementID (line 6382) | function getUniqueElementID(element) {
function getUniqueElementID_IE (line 6390) | function getUniqueElementID_IE(element) {
function isCustomEvent (line 6399) | function isCustomEvent(eventName) {
function getRegistryForElement (line 6405) | function getRegistryForElement(element, uid) {
function destroyRegistryForElement (line 6413) | function destroyRegistryForElement(element, uid) {
function register (line 6420) | function register(element, eventName, handler) {
function unregister (line 6440) | function unregister(element, eventName, handler) {
function observe (line 6462) | function observe(element, eventName, handler) {
function observeStandardEvent (line 6477) | function observeStandardEvent(element, eventName, responder) {
function observeCustomEvent (line 6486) | function observeCustomEvent(element, eventName, responder) {
function stopObserving (line 6495) | function stopObserving(element, eventName, handler) {
function stopObservingStandardEvent (line 6517) | function stopObservingStandardEvent(element, eventName, responder) {
function stopObservingCustomEvent (line 6526) | function stopObservingCustomEvent(element, eventName, responder) {
function stopObservingElement (line 6537) | function stopObservingElement(element) {
function stopObservingEventName (line 6554) | function stopObservingEventName(element, eventName) {
function removeEvent (line 6566) | function removeEvent(element, eventName, handler) {
function getFireTarget (line 6575) | function getFireTarget(element) {
function fire (line 6582) | function fire(element, eventName, memo, bubble) {
function fireEvent_DOM (line 6591) | function fireEvent_DOM(element, eventName, memo, bubble) {
function fireEvent_IE (line 6602) | function fireEvent_IE(element, eventName, memo, bubble) {
function on (line 6643) | function on(element, eventName, selector, callback) {
function destroyCache_IE (line 6688) | function destroyCache_IE() {
function isSimulatedMouseEnterLeaveEvent (line 6707) | function isSimulatedMouseEnterLeaveEvent(eventName) {
function createResponder (line 6712) | function createResponder(uid, eventName, handler) {
function createResponderForCustomEvent (line 6727) | function createResponderForCustomEvent(uid, eventName, handler) {
function createMouseEnterLeaveResponder (line 6742) | function createMouseEnterLeaveResponder(uid, eventName, handler) {
function fireContentLoadedEvent (line 6769) | function fireContentLoadedEvent() {
function checkReadyState (line 6776) | function checkReadyState() {
function pollDoScroll (line 6783) | function pollDoScroll() {
function iter (line 6914) | function iter(name) {
FILE: _archive/apps/samples/clock/tests/lib/right.js
function cL (line 7) | function cL(a,b,c,d){var e={},f=a.marginLeft.toFloat()||0,g=a.marginTop....
function cK (line 7) | function cK(a,b,c){var d=a.clone().setStyle("position:absolute;z-index:-...
function cJ (line 7) | function cJ(a,b){var c=0,d=b.length,e=a.computedStyles(),f={},g;for(;c<d...
function cI (line 7) | function cI(a,b,c){var d;for(d in c)(d=="width"||d=="height")&&b[d]=="au...
function cH (line 7) | function cH(a){var b={},c=/[\d\.\-]+/g,d,e,f,g;for(e in a){d=a[e].match(...
function cG (line 7) | function cG(a,b,c){for(var d=0;d<4;d++){var e="border"+cC[d]+"Style",f="...
function cF (line 7) | function cF(a){return a==="transparent"||a==="rgba(0, 0, 0, 0)"}
function cE (line 7) | function cE(a){var b=[],c=["Style","Color","Width"],d,e,f;for(d in a)if(...
function cD (line 7) | function cD(a,b,c){for(var d=0;d<c.length;d++)a.push(b+c[d])}
function cB (line 7) | function cB(a){function g(){for(var a in f)e[a]=f[a]}var b=this.options,...
function cu (line 7) | function cu(a,b,c){var d=J(c).compact(),e=A(d.last())?d.pop():{},f=new(c...
function ct (line 7) | function ct(a,b){function q(a){var b=a,c=0,d;while(c<5){d=n(b)-a;if(h.ab...
function cq (line 7) | function cq(a){a._timer&&clearInterval(a._timer)}
function cp (line 7) | function cp(a){var b=a.options,c=cg.Durations[b.duration]||b.duration,d=...
function co (line 7) | function co(a){var b=I(a._);(ci[b]||[]).each("cancel"),(ch[b]||[]).splic...
function cn (line 7) | function cn(a){var b=a.ch,c=b.shift();if(c=b[0])c[1].$ch=!0,c[1].start.a...
function cm (line 7) | function cm(a){var b=a.cr;b&&b.splice(b.indexOf(a),1)}
function cl (line 7) | function cl(a){a.cr&&a.cr.push(a)}
function ck (line 7) | function ck(a,b){var c=a.ch,d=a.options.queue;if(!c||a.$ch)return a.$ch=...
function cj (line 7) | function cj(a){var b=I((a.element||{})._||{});a.ch=ch[b]=ch[b]||[],a.cr=...
function cf (line 7) | function cf(a,b){a.stop(),this.send(b)}
function cc (line 7) | function cc(a,b){var d=a[0],e,f,g=cb(a),h=!c.keys(g).length;return(b.$li...
function cb (line 7) | function cb(a){var b=J(a),c=b[1]||{},d={},e;y(c)?(d[c]=b.slice(2),B(d[c]...
function ca (line 7) | function ca(a,b,c){var d=J(b),e=d.shift();return function(b){var c=b.fin...
function b_ (line 7) | function b_(){bX&&(bX=!1,br?(b.attachEvent("onmouseover",bZ),a.attachEve...
function b$ (line 7) | function b$(a){bW.each(function(b,c){b&&q[c]&&bY(a,q[c]._,c,!1)})}
function bZ (line 7) | function bZ(a){var b=a.target||a.srcElement,c=a.relatedTarget||a.fromEle...
function bY (line 7) | function bY(a,b,c,d){var e=new bE(a);e.type=d===!0?"mouseenter":"mousele...
function bV (line 7) | function bV(a){var b=new bE(a),c=b.target,d=c.parent&&c.parent();b.type=...
function bS (line 7) | function bS(a){a=H(a),bF=bF.concat(a),bm(bG.prototype,a),bm(bB.prototype...
function bR (line 7) | function bR(a,b){b=b.camelize();if(b==="opacity")return bu?(/opacity=(\d...
function bQ (line 7) | function bQ(a,b){if(typeof b==="string"){var c=a.tagName,d=bP,e=c in bN?...
function bL (line 7) | function bL(a,b,c){var d=a._,e=[],f=0,g=!c;while(d=d[b])d.nodeType===1&&...
function bK (line 7) | function bK(a,b,c){if(typeof b==="string"){a._=bJ(b,c);if(c!==i)for(var ...
function bA (line 7) | function bA(a){if(a!=null){var b=r in a?q[a[r]]:i;if(b!==i)return b;if(a...
function bz (line 7) | function bz(a,b){typeof a==="string"&&(a=s({type:a},b),this.stopped=a.bu...
function by (line 7) | function by(a,b){bK(this,a,b);var c=this,d=c._,e=bw.Cast(d),f=r in d?d[r...
function bx (line 7) | function bx(){return function(a,b){bi(this),this.initialize.apply(this,a...
function bo (line 7) | function bo(a,b,c,d){if(A(b))for(var e in b)a.stopObserving(e,b[e]);else...
function bn (line 7) | function bn(a,b,c){var d=n.call(b,2),e=b[0],f=b[1],g=!1;if(y(e))switch(t...
function bi (line 7) | function bi(a){"prebind"in a&&B(a.prebind)&&a.prebind.each(function(b){a...
function bh (line 7) | function bh(a,b){var c=b.toUpperCase(),d=a.constructor,e=[a,d].concat(d....
function bg (line 7) | function bg(a,b,c){(b[be[c?0:2]]||b[be[c?1:3]]||function(){}).call(b,a)}
function bf (line 7) | function bf(a,b){return c.without.apply(c,[a].concat(be.concat(b?H("prot...
function bb (line 7) | function bb(a,b){return a>b?1:a<b?-1:0}
function ba (line 7) | function ba(a){return!!a}
function _ (line 7) | function _(a,b,c){try{return a.apply(b,Z(c,b))}catch(d){if(!(d instanceo...
function $ (line 7) | function $(){}
function Z (line 7) | function Z(a,b){var c=a[0],d=n.call(a,1),e=b,f;typeof c==="string"?(f=c,...
function O (line 7) | function O(a,b){var c=[],d,e,f;for(d in a){e=a[d],b&&(d=b+"["+d+"]");if(...
function N (line 7) | function N(a){return B(a)?a:[a]}
function K (line 7) | function K(a){return s(a,{Methods:{},include:function(){for(var b=0,c=ar...
function g (line 7) | function g(a){return(a<10?"0":"")+a}
function d (line 7) | function d(a){return a.replace(c,function(a){return b[a]||"\\u"+("0000"+...
function f (line 7) | function f(){for(var a in e)d[a]=e[a]}
FILE: _archive/apps/samples/context-menu/a.js
function log (line 1) | function log(message) {
FILE: _archive/apps/samples/context-menu/b.js
function log (line 1) | function log(message) {
FILE: _archive/apps/samples/context-menu/main.js
function setUpContextMenus (line 17) | function setUpContextMenus() {
FILE: _archive/apps/samples/dart/dart/balls.dart
class Balls (line 11) | class Balls {
method tick (line 42) | void tick(num now)
method collideBalls (line 53) | void collideBalls(double delta)
method newDistanceSquared (line 97) | double newDistanceSquared(double delta, Ball b0, Ball b1)
method add (line 108) | void add(double x, double y, int color)
class Ball (line 113) | class Ball {
method randomVelocity (line 122) | double randomVelocity()
method tick (line 151) | bool tick(double delta)
FILE: _archive/apps/samples/dart/dart/clock.dart
function main (line 14) | void main()
function showFps (line 23) | void showFps(num fps)
class CountDownClock (line 33) | class CountDownClock {
method tick (line 56) | void tick(num time)
method updateTime (line 62) | void updateTime(DateTime now)
method setDigits (line 79) | void setDigits(String digits, List<ClockNumber> numbers)
method pad3 (line 86) | String pad3(int number)
method pad2 (line 96) | String pad2(int number)
method createNumbers (line 103) | void createNumbers(Element parent, num width, num height)
function makeAbsolute (line 147) | void makeAbsolute(Element elem)
function makeRelative (line 151) | void makeRelative(Element elem)
function setElementPosition (line 155) | void setElementPosition(Element elem, double x, double y)
function setElementSize (line 160) | void setElementSize(Element elem, double l, double t, double r, double b)
FILE: _archive/apps/samples/dart/dart/clock.dart.precompiled.js
function dart (line 10) | function dart() {}
function Isolate (line 60) | function Isolate() {}
function map (line 69) | function map(x){x={x:x};delete x.x;return x}
function processStatics (line 70) | function processStatics(descriptor) {
function addStubs (line 132) | function addStubs(descriptor, array, name, isStatic, originalDescriptor,...
function tearOffGetterNoCsp (line 260) | function tearOffGetterNoCsp(funcs, reflectionInfo, name, isIntercepted) {
function tearOffGetterCsp (line 275) | function tearOffGetterCsp(funcs, reflectionInfo, name, isIntercepted) {
function tearOff (line 287) | function tearOff(funcs, reflectionInfo, isStatic, name, isIntercepted) {
function confirm (line 6758) | function confirm(p) {
function getTagFirefox (line 6776) | function getTagFirefox(o) {
function typeNameInChrome (line 6783) | function typeNameInChrome(o) {
function getUnknownTag (line 6789) | function getUnknownTag(object, tag) {
function getUnknownTagGenericBrowser (line 6796) | function getUnknownTagGenericBrowser(object, tag) {
function prototypeForTag (line 6800) | function prototypeForTag(tag) {
function discriminator (line 6807) | function discriminator(tag) { return null; }
function getTagIE (line 6827) | function getTagIE(o) {
function prototypeForTagIE (line 6836) | function prototypeForTagIE(tag) {
function getTagFixed (line 6847) | function getTagFixed(o) {
function prototypeForTagFixed (line 6855) | function prototypeForTagFixed(tag) {
function convertToFastObject (line 7025) | function convertToFastObject(properties) {
function onLoad (line 7078) | function onLoad(event) {
function init (line 7097) | function init() {
function dart_precompiled (line 7356) | function dart_precompiled($collectedClasses) {
FILE: _archive/apps/samples/dart/dart/numbers.dart
class ClockNumber (line 7) | class ClockNumber {
method setPixels (line 39) | void setPixels(List<List<int>> px)
class Colon (line 64) | class Colon {
class ClockNumbers (line 84) | class ClockNumbers {
FILE: _archive/apps/samples/desktop-capture/app.js
function toggle (line 28) | function toggle() {
function onAccessApproved (line 43) | function onAccessApproved(desktop_id) {
FILE: _archive/apps/samples/diff/js/background.js
function onLaunched (line 7) | function onLaunched(launchData) {
FILE: _archive/apps/samples/diff/js/diff.js
function keyboardShortcut (line 100) | function keyboardShortcut(event) {
function disableShortcuts (line 118) | function disableShortcuts () {
function getText (line 124) | function getText(fileNum) {
function escapeHtml (line 151) | function escapeHtml(text) {
function ajaxErrorMessage (line 159) | function ajaxErrorMessage(xhr) {
function getChunk (line 178) | function getChunk(line) {
function getRealLine (line 189) | function getRealLine(line) {
function computeDiff (line 202) | function computeDiff(file1, file2) {
function patchToFile2 (line 223) | function patchToFile2(file1, patchText) {
function createHtmlLines (line 229) | function createHtmlLines(diffs) {
function setLineTypes (line 304) | function setLineTypes() {
function isBlankLine (line 339) | function isBlankLine(lineDiv, realLineNum) {
function setLineNums (line 358) | function setLineNums() {
function resetLineNums (line 377) | function resetLineNums() {
function setArrowsAndChecks (line 393) | function setArrowsAndChecks() {
function insertArrowAndCheck (line 426) | function insertArrowAndCheck(cont, numChunks) {
function setNumDiffs (line 452) | function setNumDiffs(set) {
function numDiffChunks (line 460) | function numDiffChunks(set) {
function selectChunk (line 495) | function selectChunk(chunkNum) {
function selectNextChunk (line 516) | function selectNextChunk() {
function selectPrevChunk (line 527) | function selectPrevChunk() {
function setArrowClicks (line 538) | function setArrowClicks() {
function setCheckClicks (line 554) | function setCheckClicks() {
function createCollapsibleMatches (line 570) | function createCollapsibleMatches() {
function collapse (line 605) | function collapse(lines1, lines2, arrows, checks, numContMatches, i) {
function moveChunk (line 631) | function moveChunk(chunkNum) {
function undoMoveChunk (line 662) | function undoMoveChunk(chunkNum) {
function checkRight (line 689) | function checkRight(chunkNum) {
function undoCheckRight (line 720) | function undoCheckRight(chunkNum) {
function expandAllMatches (line 747) | function expandAllMatches() {
function collapseAllMatches (line 755) | function collapseAllMatches() {
function expandSection (line 764) | function expandSection($collapsedNum) {
function collapseSection (line 775) | function collapseSection($collapsedNum) {
FILE: _archive/apps/samples/diff/js/filesystem.js
function registerMenulistitemClicks (line 111) | function registerMenulistitemClicks() {
function selectURL (line 144) | function selectURL() {
function selectFile (line 170) | function selectFile(fileNum, chooseNew) {
function getExtension (line 199) | function getExtension(fileName) {
function isPatch (line 204) | function isPatch(fileName) {
function addToMenulistDisplayed (line 208) | function addToMenulistDisplayed(listNum, displayNum, selected) {
function addToMenulist (line 218) | function addToMenulist(path) {
function setFileName (line 232) | function setFileName(fileNum) {
function createDropdown (line 240) | function createDropdown() {
function rememberFile (line 258) | function rememberFile(fileNum) {
function selectRememberedFile (line 267) | function selectRememberedFile(fileNum, fileName) {
function submitDiffs (line 273) | function submitDiffs() {
function chooseNewFile (line 297) | function chooseNewFile(fileNum) {
function saveFile (line 315) | function saveFile(content, fileName) {
function saveFileAs (line 326) | function saveFileAs() {
function save (line 332) | function save(fileEntry, content) {
function readFile (line 346) | function readFile(fileName, fileNum) {
function readFileName (line 371) | function readFileName(fileName, fileNum) {
function errorHandler (line 394) | function errorHandler(e) {
FILE: _archive/apps/samples/diff/lib/diff_match_patch.js
function diff_match_patch (line 1) | function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;thi...
function c (line 10) | function c(a){for(var b="",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexO...
function c (line 14) | function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1...
function b (line 18) | function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt...
function d (line 30) | function d(a,d){var e=a/b.length,g=Math.abs(c-d);return!f.Match_Distance...
FILE: _archive/apps/samples/diff/lib/diff_match_patch_test.js
function assertEquivalent (line 22) | function assertEquivalent(msg, expected, actual) {
function _equivalent (line 38) | function _equivalent(a, b) {
function diff_rebuildtexts (line 62) | function diff_rebuildtexts(diffs) {
function testDiffCommonPrefix (line 83) | function testDiffCommonPrefix() {
function testDiffCommonSuffix (line 95) | function testDiffCommonSuffix() {
function testDiffCommonOverlap (line 107) | function testDiffCommonOverlap() {
function testDiffHalfMatch (line 127) | function testDiffHalfMatch() {
function testDiffLinesToChars (line 160) | function testDiffLinesToChars() {
function testDiffCharsToLines (line 190) | function testDiffCharsToLines() {
function testDiffCleanupMerge (line 214) | function testDiffCleanupMerge() {
function testDiffCleanupSemanticLossless (line 277) | function testDiffCleanupSemanticLossless() {
function testDiffCleanupSemantic (line 320) | function testDiffCleanupSemantic() {
function testDiffCleanupEfficiency (line 378) | function testDiffCleanupEfficiency() {
function testDiffPrettyHtml (line 414) | function testDiffPrettyHtml() {
function testDiffText (line 420) | function testDiffText() {
function testDiffDelta (line 428) | function testDiffDelta() {
function testDiffXIndex (line 487) | function testDiffXIndex() {
function testDiffLevenshtein (line 496) | function testDiffLevenshtein() {
function testDiffBisect (line 505) | function testDiffBisect() {
function testDiffMain (line 518) | function testDiffMain() {
function testMatchAlphabet (line 614) | function testMatchAlphabet() {
function testMatchBitap (line 623) | function testMatchBitap() {
function testMatchMain (line 668) | function testMatchMain() {
function testPatchObj (line 701) | function testPatchObj() {
function testPatchFromText (line 713) | function testPatchFromText() {
function testPatchToText (line 734) | function testPatchToText() {
function testPatchAddContext (line 744) | function testPatchAddContext() {
function testPatchMake (line 766) | function testPatchMake() {
function testPatchSplitMax (line 824) | function testPatchSplitMax() {
function testPatchAddPadding (line 844) | function testPatchAddPadding() {
function testPatchApply (line 864) | function testPatchApply() {
FILE: _archive/apps/samples/diff/lib/diff_match_patch_uncompressed.js
function diff_match_patch (line 30) | function diff_match_patch() {
function diff_linesToCharsMunge_ (line 462) | function diff_linesToCharsMunge_(text) {
function diff_halfMatchI_ (line 664) | function diff_halfMatchI_(longtext, shorttext, i) {
function diff_cleanupSemanticScore_ (line 858) | function diff_cleanupSemanticScore_(one, two) {
function match_bitapScore_ (line 1458) | function match_bitapScore_(e, x) {
FILE: _archive/apps/samples/diff/lib/jquery.activity-indicator.js
function svg (line 85) | function svg(tag, attr) {
FILE: _archive/apps/samples/filesystem-access/js/app.js
function errorHandler (line 27) | function errorHandler(e) {
function displayEntryData (line 31) | function displayEntryData(theEntry) {
function readAsText (line 46) | function readAsText(fileEntry, callback) {
function writeFileEntry (line 59) | function writeFileEntry(writableEntry, opt_blob, callback) {
function waitForIO (line 91) | function waitForIO(writer, callback) {
function loadFileEntry (line 113) | function loadFileEntry(_chosenEntry) {
function loadDirEntry (line 127) | function loadDirEntry(_chosenEntry) {
function loadInitialFile (line 154) | function loadInitialFile(launchData) {
FILE: _archive/apps/samples/filesystem-access/js/dnd.js
function DnDFileController (line 19) | function DnDFileController(selector, onDropCallback) {
FILE: _archive/apps/samples/frameless-window/frameless_window.js
function updateCheckbox (line 1) | function updateCheckbox() {
function initCheckbox (line 20) | function initCheckbox(checkboxId, titlebar_name, titlebar_icon_url, titl...
FILE: _archive/apps/samples/frameless-window/titlebar.js
function closeWindow (line 1) | function closeWindow() {
function updateImageUrl (line 5) | function updateImageUrl(image_id, new_image_url) {
function createImage (line 11) | function createImage(image_id, image_url) {
function createButton (line 18) | function createButton(button_id, button_name, normal_image_url,
function focusTitlebars (line 34) | function focusTitlebars(focus) {
function addTitlebar (line 51) | function addTitlebar(titlebar_name, titlebar_icon_url, titlebar_text) {
function removeTitlebar (line 80) | function removeTitlebar(titlebar_name) {
function updateContentStyle (line 86) | function updateContentStyle() {
FILE: _archive/apps/samples/gcm-notifications/background.js
function getNotificationId (line 2) | function getNotificationId() {
function messageReceived (line 7) | function messageReceived(message) {
function firstTimeRegistration (line 31) | function firstTimeRegistration() {
FILE: _archive/apps/samples/gcm-notifications/register.js
function setStatus (line 3) | function setStatus(status) {
function register (line 7) | function register() {
function registerCallback (line 18) | function registerCallback(regId) {
function updateCurlCommand (line 38) | function updateCurlCommand() {
FILE: _archive/apps/samples/gdrive/js/app.js
function onError (line 19) | function onError(e) {
function writeFile (line 27) | function writeFile(blob) {
function DocsController (line 67) | function DocsController($scope, $http, gdocs) {
FILE: _archive/apps/samples/gdrive/js/dnd.js
function DnDFileController (line 19) | function DnDFileController(selector, onDropCallback) {
FILE: _archive/apps/samples/gdrive/js/gdocs.js
function GDocs (line 22) | function GDocs(selector) {
FILE: _archive/apps/samples/github-auth/index.js
function parseRedirectFragment (line 55) | function parseRedirectFragment(fragment) {
function handleProviderResponse (line 67) | function handleProviderResponse(values) {
function exchangeCodeForToken (line 79) | function exchangeCodeForToken(code) {
function setAccessToken (line 108) | function setAccessToken(token) {
function xhrWithAuth (line 122) | function xhrWithAuth(method, url, interactive, callback) {
function getUserInfo (line 163) | function getUserInfo(interactive) {
function showButton (line 172) | function showButton(button) {
function hideButton (line 177) | function hideButton(button) {
function disableButton (line 181) | function disableButton(button) {
function onUserInfoFetched (line 185) | function onUserInfoFetched(error, status, response) {
function populateUserInfo (line 199) | function populateUserInfo(user_info) {
function fetchUserRepos (line 209) | function fetchUserRepos(repoUrl) {
function onUserReposFetched (line 213) | function onUserReposFetched(error, status, response) {
function interactiveSignIn (line 235) | function interactiveSignIn() {
function revokeToken (line 246) | function revokeToken() {
FILE: _archive/apps/samples/hello-world-sync/app.js
function log (line 7) | function log(str) {
function valueChanged (line 19) | function valueChanged(newValue) {
function debugChanges (line 27) | function debugChanges(changes, namespace) {
FILE: _archive/apps/samples/identity/identity.js
function disableButton (line 13) | function disableButton(button) {
function enableButton (line 17) | function enableButton(button) {
function changeState (line 21) | function changeState(newState) {
function xhrWithAuth (line 44) | function xhrWithAuth(method, url, interactive, callback) {
function getUserInfo (line 82) | function getUserInfo(interactive) {
function onUserInfoFetched (line 93) | function onUserInfoFetched(error, status, response) {
function populateUserInfo (line 104) | function populateUserInfo(user_info) {
function fetchImageBytes (line 109) | function fetchImageBytes(user_info) {
function onImageFetched (line 118) | function onImageFetched(e) {
function interactiveSignIn (line 144) | function interactiveSignIn() {
function revokeToken (line 167) | function revokeToken() {
FILE: _archive/apps/samples/identity/sample_support/google-code-prettify/run_prettify.js
function X (line 2) | function X(e){function j(){try{J.doScroll("left")}catch(e){P(j,50);retur...
function Q (line 3) | function Q(){S&&X(function(){var e=K.length;$(e?function(){for(var j=0;j...
function j (line 5) | function j(m){if(m!==w){var n=x.createElement("link");n.rel="stylesheet"...
function j (line 6) | function j(a){function d(f){var b=f.charCodeAt(0);if(b!==92)return b;var...
function m (line 10) | function m(a,d){function h(a){var c=a.nodeType;if(c==1){if(!b.test(a.cla...
function n (line 11) | function n(a,d,h,b){d&&(a={a:d,e:a},h(a),b.push.apply(b,a.g))}
function x (line 11) | function x(a){for(var d=void 0,h=a.firstChild;h;h=h.nextSibling)var b=h....
function C (line 11) | function C(a,d){function h(a){for(var l=a.e,j=[l,"pln"],c=
function t (line 13) | function t(a){var d=[],h=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''...
function z (line 17) | function z(a,d,h){function b(a){var c=a.nodeType;if(c==1&&!j.test(a.clas...
function i (line 19) | function i(a,d){for(var h=d.length;--h>=0;){var b=d[h];U.hasOwnProperty(...
function A (line 19) | function A(a,d){if(!a||!U.hasOwnProperty(a))a=/^\s*</.test(d)?"default-m...
function D (line 19) | function D(a){var d=
function e (line 31) | function e(){for(var b=V.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity...
FILE: _archive/apps/samples/identity/sample_support/prettify.js
function S (line 2) | function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var...
function T (line 6) | function T(a,d){function g(a){var c=a.nodeType;if(c==1){if(!b.test(a.cla...
function H (line 7) | function H(a,d,g,b){d&&(a={a:d,e:a},g(a),b.push.apply(b,a.g))}
function U (line 7) | function U(a){for(var d=void 0,g=a.firstChild;g;g=g.nextSibling)var b=g....
function C (line 7) | function C(a,d){function g(a){for(var j=a.e,k=[j,"pln"],c=0,i=a.a.match(...
function v (line 9) | function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''...
function J (line 13) | function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.clas...
function p (line 15) | function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(...
function I (line 15) | function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-m...
function K (line 15) | function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
function g (line 27) | function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250:Infinity...
FILE: _archive/apps/samples/identity/sample_support/sample_support.js
function Logger (line 6) | function Logger(log_area) {
function SampleSupport (line 40) | function SampleSupport() {
FILE: _archive/apps/samples/identity/sample_support/show_snippets.js
function processFilesWithSnippets (line 7) | function processFilesWithSnippets() {
function extractFromManifest (line 36) | function extractFromManifest(content) {
function getFileContents (line 53) | function getFileContents(filename, callback) {
function addSnippet (line 62) | function addSnippet(snippetName, snippet) {
function extractSnippets (line 88) | function extractSnippets(content, filename) {
FILE: _archive/apps/samples/image-edit/app.js
function clearState (line 37) | function clearState() {
function errorHandler (line 43) | function errorHandler(e) {
function displayText (line 47) | function displayText(text) {
function displayfileEntryPath (line 51) | function displayfileEntryPath(fileEntry) {
function resetCrop (line 55) | function resetCrop() {
function getHandleHoverData (line 64) | function getHandleHoverData(clientX, clientY) {
function mouseDown (line 86) | function mouseDown (e) {
function stopTrackingMouseDrag (line 91) | function stopTrackingMouseDrag () {
function mouseMove (line 96) | function mouseMove(e) {
function moveCrop (line 134) | function moveCrop(dx, dy) {
function updateScaleAndOffset (line 176) | function updateScaleAndOffset() {
function getRectInCanvasCoords (line 195) | function getRectInCanvasCoords(rect) {
function getRectInverted (line 208) | function getRectInverted(rect) {
function addRightAndBottomToRect (line 217) | function addRightAndBottomToRect(rect) {
function getCropSquareHandlesInCanvasCoords (line 222) | function getCropSquareHandlesInCanvasCoords() {
function canvasRect (line 232) | function canvasRect(rect) {
function drawCanvas (line 237) | function drawCanvas() {
function loadImageFromFile (line 285) | function loadImageFromFile(file) {
function loadImageFromURL (line 289) | function loadImageFromURL(url) {
function imageHasLoaded (line 296) | function imageHasLoaded() {
function writeFileEntry (line 308) | function writeFileEntry(writableEntry, opt_blob, callback) {
function waitForIO (line 339) | function waitForIO(writer, callback) {
function loadFileEntry (line 359) | function loadFileEntry(_chosenFileEntry) {
function loadInitialFile (line 368) | function loadInitialFile(launchData) {
function intersectRects (line 385) | function intersectRects(a, b) {
function copyAsIntegerRect (line 400) | function copyAsIntegerRect(sourceRect) {
function crop (line 410) | function crop () {
function chooseFile (line 427) | function chooseFile () {
function dataURItoBlob (line 445) | function dataURItoBlob(dataURI) {
function saveFile (line 468) | function saveFile() {
function draggedDataDropped (line 485) | function draggedDataDropped(data) {
FILE: _archive/apps/samples/image-edit/dnd.js
function DnDFileController (line 19) | function DnDFileController(selector, onDropCallback) {
FILE: _archive/apps/samples/io2012-presentation/js/slide-controller.js
function SlideController (line 5) | function SlideController() {
FILE: _archive/apps/samples/io2012-presentation/js/slide-deck.js
function SlideDeck (line 12) | function SlideDeck(el) {
FILE: _archive/apps/samples/io2012-presentation/servo/servo.js
function setPosition (line 3) | function setPosition(position) {
function onOpen (line 10) | function onOpen(connectionInfo) {
function setStatus (line 21) | function setStatus(status) {
function buildPortPicker (line 25) | function buildPortPicker(ports) {
function openSelectedPort (line 46) | function openSelectedPort() {
FILE: _archive/apps/samples/io2012-presentation/windowing_api/window.js
function update (line 2) | function update() {
FILE: _archive/apps/samples/ioio/main.js
function log (line 1) | function log(msg) {
function runAtInterval (line 15) | function runAtInterval(socket) {
FILE: _archive/apps/samples/keyboard-handler/window.js
function updateInnerHTML (line 10) | function updateInnerHTML(idToUpdate, description)
function displayKeyState (line 15) | function displayKeyState()
function updateKeyState (line 24) | function updateKeyState(event, description)
function logEvent (line 29) | function logEvent(description)
function GetCodeFor (line 36) | function GetCodeFor(e)
function GetDescriptionFor (line 45) | function GetDescriptionFor(e)
function MonitorKeyDown (line 66) | function MonitorKeyDown(e)
function MonitorKeyUp (line 75) | function MonitorKeyUp(e)
function MonitorKeyPress (line 84) | function MonitorKeyPress(e)
function MonitorBlur (line 92) | function MonitorBlur()
function MonitorFocus (line 102) | function MonitorFocus()
FILE: _archive/apps/samples/managed-in-app-payments/scripts/app.js
function init (line 4) | function init() {
function getProductList (line 14) | function getProductList() {
function onSkuDetails (line 24) | function onSkuDetails(response) {
function onSkuDetailsFailed (line 36) | function onSkuDetailsFailed(response) {
function getLicenses (line 45) | function getLicenses() {
function onLicenseUpdate (line 55) | function onLicenseUpdate(response) {
function onLicenseUpdateFailed (line 66) | function onLicenseUpdateFailed(response) {
function buyProduct (line 76) | function buyProduct(sku) {
function onPurchase (line 87) | function onPurchase(purchase) {
function onPurchaseFailed (line 96) | function onPurchaseFailed(purchase) {
function addProductToUI (line 106) | function addProductToUI(product) {
function addLicenseDataToProduct (line 128) | function addLicenseDataToProduct(license) {
function onActionButton (line 138) | function onActionButton(evt) {
function showLicense (line 149) | function showLicense(license) {
FILE: _archive/apps/samples/manga-cam/background.js
function onWindowLoaded (line 4) | function onWindowLoaded() {
FILE: _archive/apps/samples/manga-cam/js/index.js
function createBlobFromeDataURL (line 6) | function createBlobFromeDataURL(base64DataURL) {
function init (line 17) | function init(saveImage) {
function insertImage (line 194) | function insertImage(fileEntry) {
function readEntries (line 216) | function readEntries() {
FILE: _archive/apps/samples/manga-cam/js/loader.js
function resolveShader (line 12) | function resolveShader(code, file, callback) {
function loadShaderImpl (line 23) | function loadShaderImpl(file, base_url, callback) {
function loadShader (line 56) | function loadShader(file, callback) {
function loadShaders (line 60) | function loadShaders(files, callback) {
FILE: _archive/apps/samples/manga-cam/js/postproc.js
function PostProcessor (line 18) | function PostProcessor(canvas, width, height) {
FILE: _archive/apps/samples/media-gallery/media-gallery.js
function errorPrintFactory (line 11) | function errorPrintFactory(custom) {
function GalleryData (line 40) | function GalleryData(id) {
function addImageToContentDiv (line 48) | function addImageToContentDiv() {
function addAudioToContentDiv (line 55) | function addAudioToContentDiv() {
function addVideoToContentDiv (line 63) | function addVideoToContentDiv() {
function getFileType (line 71) | function getFileType(filename) {
function clearContentDiv (line 82) | function clearContentDiv() {
function clearList (line 88) | function clearList() {
function updateSelection (line 92) | function updateSelection(e) {
function addGallery (line 141) | function addGallery(name, id) {
function addItem (line 149) | function addItem(itemEntry) {
function scanGallery (line 161) | function scanGallery(entries) {
function scanGalleries (line 203) | function scanGalleries(fs) {
function getGalleriesInfo (line 215) | function getGalleriesInfo(results) {
function onGalleryChanged (line 243) | function onGalleryChanged(result) {
function onGalleryWatchAdded (line 250) | function onGalleryWatchAdded() {
FILE: _archive/apps/samples/mini-code-edit/cm/keymap/emacs.js
function addToRing (line 5) | function addToRing(str) {
function getFromRing (line 9) | function getFromRing() { return killRing[killRing.length - 1] || ""; }
function popFromRing (line 10) | function popFromRing() { if (killRing.length > 1) killRing.pop(); return...
FILE: _archive/apps/samples/mini-code-edit/cm/keymap/vim.js
function emptyBuffer (line 57) | function emptyBuffer() { buf = ""; }
function pushInBuffer (line 58) | function pushInBuffer(str) { buf += str; }
function pushCountDigit (line 59) | function pushCountDigit(digit) { return function(cm) {count += digit;} }
function popCount (line 60) | function popCount() { var i = parseInt(count); count = ""; return i || 1; }
function iterTimes (line 61) | function iterTimes(func) {
function countTimes (line 64) | function countTimes(func) {
function iterObj (line 69) | function iterObj(o, f) {
function iterList (line 72) | function iterList(l, f) {
function toLetter (line 75) | function toLetter(ch) {
function toCombo (line 86) | function toCombo(ch) {
function findWord (line 96) | function findWord(line, pos, dir, regexps) {
function moveToWord (line 115) | function moveToWord(cm, regexps, dir, where) {
function joinLineNext (line 125) | function joinLineNext(cm) {
function delTillMark (line 134) | function delTillMark(cm, cHar) {
function yankTillMark (line 147) | function yankTillMark(cm, cHar) {
function goLineStartText (line 159) | function goLineStartText(cm) {
function charIdxInLine (line 165) | function charIdxInLine(cm, cHar, motion_options) {
function moveTillChar (line 183) | function moveTillChar(cm, cHar, motion_options) {
function delTillChar (line 189) | function delTillChar(cm, cHar, motion_options) {
function enterInsertMode (line 204) | function enterInsertMode(cm) {
function addCountBindings (line 299) | function addCountBindings(keyMap) {
function setupPrefixBindingForKey (line 443) | function setupPrefixBindingForKey(m) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/codemirror.js
function CodeMirror (line 11) | function CodeMirror(place, givenOptions) {
function getKeyMap (line 2090) | function getKeyMap(val) {
function lookupKey (line 2094) | function lookupKey(name, extraMap, map, handle, stop) {
function isModifierKey (line 2115) | function isModifierKey(event) {
function save (line 2128) | function save() {textarea.value = instance.getValue();}
function wrappedSubmit (line 2134) | function wrappedSubmit() {
function copyState (line 2165) | function copyState(mode, state) {
function startState (line 2177) | function startState(mode, a1, a2) {
function StringStream (line 2183) | function StringStream(string, tabSize) {
function cased (line 2222) | function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
function MarkedText (line 2238) | function MarkedText(from, to, className, marker) {
function Bookmark (line 2268) | function Bookmark(pos) {
function Line (line 2304) | function Line(text, styles) {
function span_ (line 2466) | function span_(text, style) {
function styleToClass (line 2525) | function styleToClass(style) {
function advanceMarks (line 2542) | function advanceMarks() {
function copyStyles (line 2583) | function copyStyles(from, to, source, dest) {
function LeafChunk (line 2599) | function LeafChunk(lines) {
function BranchChunk (line 2633) | function BranchChunk(children) {
function getLineAt (line 2732) | function getLineAt(chunk, n) {
function lineNo (line 2742) | function lineNo(line) {
function lineAtHeight (line 2753) | function lineAtHeight(chunk, h) {
function heightAtLine (line 2771) | function heightAtLine(chunk, n) {
function History (line 2788) | function History() {
function stopMethod (line 2824) | function stopMethod() {e_stop(this);}
function addStop (line 2826) | function addStop(event) {
function e_preventDefault (line 2831) | function e_preventDefault(e) {
function e_stopPropagation (line 2835) | function e_stopPropagation(e) {
function e_stop (line 2839) | function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}
function e_target (line 2844) | function e_target(e) {return e.target || e.srcElement;}
function e_button (line 2845) | function e_button(e) {
function e_prop (line 2854) | function e_prop(e, prop) {
function connect (line 2861) | function connect(node, type, handler, disconnect) {
function Delayed (line 2874) | function Delayed() {this.id = null;}
function countColumn (line 2919) | function countColumn(string, end, tabSize) {
function computedStyle (line 2931) | function computedStyle(elt) {
function eltOffset (line 2938) | function eltOffset(node, screen) {
function eltText (line 2974) | function eltText(node) {
function selectInput (line 2977) | function selectInput(node) {
function posEq (line 2985) | function posEq(a, b) {return a.line == b.line && a.ch == b.ch;}
function posLess (line 2986) | function posLess(a, b) {return a.line < b.line || (a.line == b.line && a...
function copyPos (line 2987) | function copyPos(x) {return {line: x.line, ch: x.ch};}
function htmlEscape (line 2990) | function htmlEscape(str) {
function editEnd (line 3012) | function editEnd(from, to) {
function indexOf (line 3020) | function indexOf(collection, elt) {
function isWordChar (line 3026) | function isWordChar(ch) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/closetag.js
function insertEndTag (line 111) | function insertEndTag(cm, indent, pos, tagName) {
function shouldIndent (line 123) | function shouldIndent(cm, indent, tagName) {
function indexOf (line 134) | function indexOf(collection, elt) {
function completeEndTag (line 141) | function completeEndTag(cm, pos, tagName) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/dialog.js
function dialogDiv (line 4) | function dialogDiv(cm, template) {
function close (line 15) | function close() {
function close (line 40) | function close() {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/foldcode.js
function isFolded (line 156) | function isFolded(cm, n) {
function expand (line 164) | function expand(cm, region) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/javascript-hint.js
function forEach (line 2) | function forEach(arr, f) {
function arrayContains (line 6) | function arrayContains(arr, item) {
function scriptHint (line 19) | function scriptHint(editor, keywords, getToken) {
function getCoffeeScriptToken (line 60) | function getCoffeeScriptToken(editor, cur) {
function getCompletions (line 92) | function getCompletions(token, context, keywords) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/loadmode.js
function splitCallback (line 5) | function splitCallback(cont, n) {
function ensureDeps (line 9) | function ensureDeps(mode, cont) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/match-highlighter.js
function MatchHighlightState (line 9) | function MatchHighlightState() {
function getMatchHighlightState (line 12) | function getMatchHighlightState(cm) {
function clearMarks (line 16) | function clearMarks(cm) {
function markDocument (line 23) | function markDocument(cm, className, minChars) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/search.js
function SearchState (line 10) | function SearchState() {
function getSearchState (line 14) | function getSearchState(cm) {
function dialog (line 17) | function dialog(cm, text, shortText, f) {
function confirmDialog (line 21) | function confirmDialog(cm, text, shortText, fs) {
function parseQuery (line 25) | function parseQuery(query) {
function doSearch (line 31) | function doSearch(cm, rev) {
function findNext (line 47) | function findNext(cm, rev) {cm.operation(function() {
function clearSearch (line 57) | function clearSearch(cm) {cm.operation(function() {
function replace (line 69) | function replace(cm, all) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/searchcursor.js
function SearchCursor (line 2) | function SearchCursor(cm, query, pos, caseFold) {
function savePosAndFail (line 80) | function savePosAndFail(line) {
FILE: _archive/apps/samples/mini-code-edit/cm/lib/util/simple-hint.js
function insert (line 8) | function insert(str) {
function close (line 41) | function close() {
function pick (line 46) | function pick() {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/clike/clike.js
function tokenBase (line 12) | function tokenBase(stream, state) {
function tokenString (line 54) | function tokenString(quote) {
function tokenComment (line 67) | function tokenComment(stream, state) {
function Context (line 79) | function Context(indented, column, type, align, prev) {
function pushContext (line 86) | function pushContext(state, col, type) {
function popContext (line 89) | function popContext(state) {
function words (line 152) | function words(str) {
function cppHook (line 161) | function cppHook(stream, state) {
function tokenAtString (line 168) | function tokenAtString(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/clojure/clojure.js
function makeKeywords (line 10) | function makeKeywords(str) {
function stateStack (line 51) | function stateStack(indent, type, prev) { // represents a state stack ob...
function pushStack (line 57) | function pushStack(state, indent, type) {
function popStack (line 61) | function popStack(state) {
function isNumber (line 65) | function isNumber(ch, stream){
FILE: _archive/apps/samples/mini-code-edit/cm/mode/coffeescript/coffeescript.js
function wordRegexp (line 8) | function wordRegexp(words) {
function tokenBase (line 39) | function tokenBase(stream, state) {
function tokenFactory (line 166) | function tokenFactory(delimiter, outclass) {
function longComment (line 194) | function longComment(stream, state) {
function indent (line 206) | function indent(stream, state, type) {
function dedent (line 225) | function dedent(stream, state) {
function tokenLexer (line 249) | function tokenLexer(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/css/css.js
function ret (line 3) | function ret(style, tp) {type = tp; return style;}
function tokenBase (line 5) | function tokenBase(stream, state) {
function tokenCComment (line 46) | function tokenCComment(stream, state) {
function tokenSGMLComment (line 58) | function tokenSGMLComment(stream, state) {
function tokenString (line 70) | function tokenString(quote) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/ecl/ecl.js
function words (line 3) | function words(str) {
function metaHook (line 9) | function metaHook(stream, state) {
function tokenAtString (line 15) | function tokenAtString(stream, state) {
function tokenBase (line 40) | function tokenBase(stream, state) {
function tokenString (line 106) | function tokenString(quote) {
function tokenComment (line 119) | function tokenComment(stream, state) {
function Context (line 131) | function Context(indented, column, type, align, prev) {
function pushContext (line 138) | function pushContext(state, col, type) {
function popContext (line 141) | function popContext(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/erlang/erlang.js
function isMember (line 69) | function isMember(element,list) {
function isPrev (line 73) | function isPrev(stream,string) {
function tokenize (line 90) | function tokenize(stream, state) {
function doubleQuote (line 222) | function doubleQuote(stream) {
function singleQuote (line 226) | function singleQuote(stream) {
function Quote (line 230) | function Quote(stream,quoteChar,escapeChar,tag) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/gfm/gfm.js
function markdown (line 38) | function markdown(stream, state) {
function local (line 53) | function local(stream, state) {
function handleText (line 69) | function handleText(stream, mdState) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/go/go.js
function tokenBase (line 32) | function tokenBase(stream, state) {
function tokenString (line 76) | function tokenString(quote) {
function tokenComment (line 89) | function tokenComment(stream, state) {
function Context (line 101) | function Context(indented, column, type, align, prev) {
function pushContext (line 108) | function pushContext(state, col, type) {
function popContext (line 111) | function popContext(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/groovy/groovy.js
function words (line 2) | function words(str) {
function tokenBase (line 17) | function tokenBase(stream, state) {
function startString (line 66) | function startString(quote, stream, state) {
function tokenBaseUntilBrace (line 92) | function tokenBaseUntilBrace() {
function tokenComment (line 110) | function tokenComment(stream, state) {
function expectExpression (line 122) | function expectExpression(last) {
function Context (line 127) | function Context(indented, column, type, align, prev) {
function pushContext (line 134) | function pushContext(state, col, type) {
function popContext (line 137) | function popContext(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/haskell/haskell.js
function switchState (line 3) | function switchState(source, setState, f) {
function normal (line 19) | function normal(source, setState) {
function ncomment (line 110) | function ncomment(type, nest) {
function stringLiteral (line 134) | function stringLiteral(source, setState) {
function stringGap (line 157) | function stringGap(source, setState) {
function setType (line 169) | function setType(t) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/htmlembedded/htmlembedded.js
function htmlDispatch (line 11) | function htmlDispatch(stream, state) {
function scriptingDispatch (line 21) | function scriptingDispatch(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/htmlmixed/htmlmixed.js
function html (line 6) | function html(stream, state) {
function maybeBackup (line 22) | function maybeBackup(stream, pat, style) {
function javascript (line 28) | function javascript(stream, state) {
function css (line 38) | function css(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/javascript/javascript.js
function kw (line 8) | function kw(type) {return {type: type, style: "keyword"};}
function chain (line 24) | function chain(stream, state, f) {
function nextUntilUnescaped (line 29) | function nextUntilUnescaped(stream, end) {
function ret (line 42) | function ret(tp, style, cont) {
function jsTokenBase (line 47) | function jsTokenBase(stream, state) {
function jsTokenString (line 95) | function jsTokenString(quote) {
function jsTokenComment (line 103) | function jsTokenComment(stream, state) {
function JSLexical (line 119) | function JSLexical(indented, column, type, align, prev, info) {
function inScope (line 128) | function inScope(state, varname) {
function parseJS (line 133) | function parseJS(state, style, type, content, stream) {
function pass (line 157) | function pass() {
function cont (line 160) | function cont() {
function register (line 164) | function register(varname) {
function pushcontext (line 177) | function pushcontext() {
function popcontext (line 181) | function popcontext() {
function pushlex (line 185) | function pushlex(type, info) {
function poplex (line 193) | function poplex() {
function expect (line 203) | function expect(wanted) {
function statement (line 211) | function statement(type) {
function expression (line 229) | function expression(type) {
function maybeexpression (line 239) | function maybeexpression(type) {
function maybeoperator (line 244) | function maybeoperator(type, value) {
function maybelabel (line 252) | function maybelabel(type) {
function property (line 256) | function property(type) {
function objprop (line 259) | function objprop(type) {
function commasep (line 263) | function commasep(what, end) {
function block (line 274) | function block(type) {
function vardef1 (line 278) | function vardef1(type, value) {
function vardef2 (line 282) | function vardef2(type, value) {
function forspec1 (line 286) | function forspec1(type) {
function formaybein (line 292) | function formaybein(type, value) {
function forspec2 (line 296) | function forspec2(type, value) {
function forspec3 (line 301) | function forspec3(type) {
function functiondef (line 304) | function functiondef(type, value) {
function funarg (line 308) | function funarg(type, value) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/jinja2/jinja2.js
function tokenBase (line 7) | function tokenBase (stream, state) {
function inTag (line 17) | function inTag (close) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/less/less.js
function ret (line 8) | function ret(style, tp) {type = tp; return style;}
function inTagsArray (line 12) | function inTagsArray(val){
function tokenBase (line 20) | function tokenBase(stream, state) {
function tokenSComment (line 142) | function tokenSComment(stream, state) {// SComment = Slash comment
function tokenCComment (line 148) | function tokenCComment(stream, state) {
function tokenSGMLComment (line 160) | function tokenSGMLComment(stream, state) {
function tokenString (line 172) | function tokenString(quote) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/lua/lua.js
function prefixRE (line 8) | function prefixRE(words) {
function wordRE (line 11) | function wordRE(words) {
function readBracket (line 57) | function readBracket(stream) {
function normal (line 64) | function normal(stream, state) {
function bracketed (line 87) | function bracketed(level, style) {
function string (line 100) | function string(quote) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/markdown/markdown.js
function switchInline (line 22) | function switchInline(stream, state, f) {
function switchBlock (line 27) | function switchBlock(stream, state, f) {
function blankLine (line 35) | function blankLine(state) {
function blockNormal (line 43) | function blockNormal(stream, state) {
function htmlBlock (line 68) | function htmlBlock(stream, state) {
function getType (line 79) | function getType(state) {
function handleText (line 91) | function handleText(stream, state) {
function inlineNormal (line 98) | function inlineNormal(stream, state) {
function linkText (line 131) | function linkText(stream, state) {
function linkHref (line 143) | function linkHref(stream, state) {
function footnoteLink (line 152) | function footnoteLink(stream, state) {
function footnoteUrl (line 160) | function footnoteUrl(stream, state) {
function inlineRE (line 167) | function inlineRE(endChar) {
function inlineElement (line 176) | function inlineElement(type, endChar, next) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/mysql/mysql.js
function wordRegexp (line 12) | function wordRegexp(words) {
function tokenBase (line 36) | function tokenBase(stream, state) {
function tokenLiteral (line 92) | function tokenLiteral(quote) {
function tokenOpLiteral (line 106) | function tokenOpLiteral(quote) {
function pushContext (line 121) | function pushContext(state, type, col) {
function popContext (line 124) | function popContext(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/ntriples/ntriples.js
function transitState (line 45) | function transitState(currState, c) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/pascal/pascal.js
function words (line 2) | function words(str) {
function tokenBase (line 14) | function tokenBase(stream, state) {
function tokenString (line 52) | function tokenString(quote) {
function tokenComment (line 64) | function tokenComment(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/perl/perl.js
function tokenChain (line 469) | function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.lengt...
function tokenSOMETHING (line 489) | function tokenSOMETHING(stream,state,string){
function tokenPerl (line 497) | function tokenPerl(stream,state){
FILE: _archive/apps/samples/mini-code-edit/cm/mode/php/php.js
function keywords (line 2) | function keywords(str) {
function heredoc (line 7) | function heredoc(delim) {
function dispatch (line 58) | function dispatch(stream, state) { // TODO open PHP inside text/css
FILE: _archive/apps/samples/mini-code-edit/cm/mode/pig/pig.js
function chain (line 16) | function chain(stream, state, f) {
function ret (line 22) | function ret(tp, style) {
function tokenComment (line 27) | function tokenComment(stream, state) {
function tokenString (line 40) | function tokenString(quote) {
function tokenBase (line 55) | function tokenBase(stream, state) {
function keywords (line 138) | function keywords(str) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/plsql/plsql.js
function chain (line 9) | function chain(stream, state, f) {
function ret (line 15) | function ret(tp, style) {
function tokenBase (line 20) | function tokenBase(stream, state) {
function tokenString (line 80) | function tokenString(quote) {
function tokenComment (line 93) | function tokenComment(stream, state) {
function keywords (line 124) | function keywords(str) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/python/python.js
function wordRegexp (line 4) | function wordRegexp(words) {
function tokenBase (line 54) | function tokenBase(stream, state) {
function tokenStringFactory (line 156) | function tokenStringFactory(delimiter) {
function indent (line 189) | function indent(stream, state, type) {
function dedent (line 212) | function dedent(stream, state, type) {
function tokenLexer (line 245) | function tokenLexer(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/r/r.js
function wordObj (line 2) | function wordObj(str) {
function tokenBase (line 14) | function tokenBase(stream, state) {
function tokenString (line 64) | function tokenString(quote) {
function push (line 85) | function push(state, type, stream) {
function pop (line 92) | function pop(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/rst/rst.js
function setState (line 2) | function setState(state, fn, ctx) {
function setCtx (line 7) | function setCtx(state, ctx) {
function setNormal (line 11) | function setNormal(state, ch) {
function hasMode (line 20) | function hasMode(mode) {
function getMode (line 34) | function getMode(mode) {
function normal (line 60) | function normal(stream, state) {
function inline (line 199) | function inline(stream, state) {
function directive (line 238) | function directive(stream, state) {
function body (line 267) | function body(stream, state) {
function comment (line 280) | function comment(stream, state) {
function verbatim (line 284) | function verbatim(stream, state) {
function block (line 300) | function block(stream, state, token) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/ruby/ruby.js
function wordObj (line 2) | function wordObj(words) {
function chain (line 21) | function chain(newtok, stream, state) {
function tokenBase (line 26) | function tokenBase(stream, state) {
function tokenBaseUntilBrace (line 102) | function tokenBaseUntilBrace() {
function readQuoted (line 117) | function readQuoted(quote, style, embed, unescaped) {
function readHereDoc (line 134) | function readHereDoc(phrase) {
function readBlockComment (line 141) | function readBlockComment(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/rust/rust.js
function r (line 27) | function r(tc, style) {
function tokenBase (line 32) | function tokenBase(stream, state) {
function tokenString (line 91) | function tokenString(stream, state) {
function tokenComment (line 105) | function tokenComment(depth) {
function pass (line 131) | function pass() {
function cont (line 134) | function cont() {
function pushlex (line 139) | function pushlex(type, info) {
function poplex (line 148) | function poplex() {
function typecx (line 156) | function typecx() { cx.state.keywords = typeKeywords; }
function valcx (line 157) | function valcx() { cx.state.keywords = valKeywords; }
function commasep (line 160) | function commasep(comb, end) {
function stat_of (line 172) | function stat_of(comb, tag) {
function block (line 175) | function block(type) {
function endstatement (line 188) | function endstatement(type) {
function expression (line 192) | function expression(type) {
function maybeop (line 205) | function maybeop(type) {
function maybeprop (line 212) | function maybeprop(type) {
function exprbrace (line 216) | function exprbrace(type) {
function record_of (line 226) | function record_of(comb) {
function blockvars (line 236) | function blockvars(type) {
function letdef1 (line 242) | function letdef1(type) {
function letdef2 (line 248) | function letdef2(type) {
function maybetype (line 252) | function maybetype(type) {
function inop (line 256) | function inop(type) {
function fndef (line 260) | function fndef(type) {
function tydef (line 270) | function tydef(type) {
function enumdef (line 276) | function enumdef(type) {
function enumblock (line 283) | function enumblock(type) {
function mod (line 289) | function mod(type) {
function iface (line 294) | function iface(type) {
function impl (line 300) | function impl(type) {
function typarams (line 307) | function typarams(type) {
function argdef (line 313) | function argdef(type) {
function rtype (line 318) | function rtype(type) {
function rtypemaybeparam (line 327) | function rtypemaybeparam(type) {
function fntype (line 331) | function fntype(type) {
function pattern (line 336) | function pattern(type) {
function patternmaybeop (line 343) | function patternmaybeop(type) {
function altbody (line 348) | function altbody(type) {
function altblock1 (line 352) | function altblock1(type) {
function altblock2 (line 359) | function altblock2(type) {
function macro (line 364) | function macro(type) {
function matchBrackets (line 368) | function matchBrackets(type, comb) {
function parse (line 375) | function parse(state, stream, style) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/scheme/scheme.js
function makeKeywords (line 9) | function makeKeywords(str) {
function stateStack (line 18) | function stateStack(indent, type, prev) { // represents a state stack ob...
function pushStack (line 24) | function pushStack(state, indent, type) {
function popStack (line 28) | function popStack(state) {
function isNumber (line 37) | function isNumber(ch, stream){
FILE: _archive/apps/samples/mini-code-edit/cm/mode/shell/shell.js
function tokenBase (line 7) | function tokenBase(stream, state) {
function tokenString (line 51) | function tokenString(quote) {
function tokenize (line 90) | function tokenize(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/smarty/smarty.js
function ret (line 11) | function ret(style, lst) { last = lst; return style; }
function tokenizer (line 14) | function tokenizer(stream, state) {
function inSmarty (line 36) | function inSmarty(stream, state) {
function inAttribute (line 110) | function inAttribute(quote) {
function inBlock (line 122) | function inBlock(style, terminator) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/sparql/sparql.js
function wordRegexp (line 5) | function wordRegexp(words) {
function tokenBase (line 15) | function tokenBase(stream, state) {
function tokenLiteral (line 62) | function tokenLiteral(quote) {
function pushContext (line 76) | function pushContext(state, type, col) {
function popContext (line 79) | function popContext(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/stex/stex.js
function pushCommand (line 8) | function pushCommand(state, command) {
function peekCommand (line 12) | function peekCommand(state) {
function popCommand (line 19) | function popCommand(state) {
function applyMostPowerful (line 26) | function applyMostPowerful(state) {
function addPluginPattern (line 37) | function addPluginPattern(pluginName, cmdStyle, brackets, styles) {
function setState (line 80) | function setState(state, f) {
function normal (line 84) | function normal(source, state) {
function inCComment (line 140) | function inCComment(source, state) {
function beginParams (line 146) | function beginParams(source, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/tiddlywiki/tiddlywiki.js
function kw (line 22) | function kw(type) {
function kw (line 32) | function kw(type) {
function chain (line 66) | function chain(stream, state, f) {
function nextUntilUnescaped (line 72) | function nextUntilUnescaped(stream, end) {
function ret (line 86) | function ret(tp, style, cont) {
function jsTokenBase (line 92) | function jsTokenBase(stream, state) {
function twTokenString (line 229) | function twTokenString(quote) {
function twTokenComment (line 237) | function twTokenComment(stream, state) {
function twTokenStrong (line 251) | function twTokenStrong(stream, state) {
function twTokenCode (line 265) | function twTokenCode(stream, state) {
function twTokenEm (line 287) | function twTokenEm(stream, state) {
function twTokenUnderline (line 301) | function twTokenUnderline(stream, state) {
function twTokenStrike (line 316) | function twTokenStrike(stream, state) {
function twTokenMacro (line 331) | function twTokenMacro(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/tiki/tiki.js
function inBlock (line 2) | function inBlock(style, terminator, returnTokenizer) {
function inLine (line 18) | function inLine(style, terminator) {
function inText (line 28) | function inText(stream, state) {
function inPlugin (line 131) | function inPlugin(stream, state) {
function inAttribute (line 165) | function inAttribute(quote) {
function inAttributeNoQuote (line 177) | function inAttributeNoQuote() {
function pass (line 192) | function pass() {
function cont (line 196) | function cont() {
function pushContext (line 201) | function pushContext(pluginName, startOfLine) {
function popContext (line 212) | function popContext() {
function element (line 216) | function element(type) {
function endplugin (line 237) | function endplugin(startOfLine) {
function endcloseplugin (line 249) | function endcloseplugin(err) {
function attributes (line 257) | function attributes(type) {
function attvalue (line 262) | function attvalue(type) {
function attvaluemaybe (line 267) | function attvaluemaybe(type) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/velocity/velocity.js
function parseWords (line 2) | function parseWords(str) {
function chain (line 17) | function chain(stream, state, f) {
function tokenBase (line 21) | function tokenBase(stream, state) {
function tokenString (line 87) | function tokenString(quote) {
function tokenComment (line 102) | function tokenComment(stream, state) {
function tokenUnparsed (line 114) | function tokenUnparsed(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/verilog/verilog.js
function tokenBase (line 12) | function tokenBase(stream, state) {
function tokenString (line 54) | function tokenString(quote) {
function tokenComment (line 67) | function tokenComment(stream, state) {
function Context (line 79) | function Context(indented, column, type, align, prev) {
function pushContext (line 86) | function pushContext(state, col, type) {
function popContext (line 89) | function popContext(state) {
function words (line 150) | function words(str) {
function metaHook (line 170) | function metaHook(stream, state) {
function tokenAtString (line 176) | function tokenAtString(stream, state) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/xml/xml.js
function inText (line 47) | function inText(stream, state) {
function inTag (line 101) | function inTag(stream, state) {
function inAttribute (line 122) | function inAttribute(quote) {
function inBlock (line 134) | function inBlock(style, terminator) {
function doctype (line 146) | function doctype(depth) {
function pass (line 168) | function pass() {
function cont (line 171) | function cont() {
function pushContext (line 176) | function pushContext(tagName, startOfLine) {
function popContext (line 186) | function popContext() {
function element (line 190) | function element(type) {
function endtag (line 211) | function endtag(startOfLine) {
function endclosetag (line 226) | function endclosetag(err) {
function maybePopContext (line 234) | function maybePopContext(nextTagName) {
function attributes (line 249) | function attributes(type) {
function attribute (line 255) | function attribute(type) {
function attvalue (line 260) | function attvalue(type) {
function attvaluemaybe (line 266) | function attvaluemaybe(type) {
FILE: _archive/apps/samples/mini-code-edit/cm/mode/xquery/xquery.js
function kw (line 30) | function kw(type) {return {type: type, style: "keyword"};}
function ret (line 84) | function ret(tp, style, cont) {
function chain (line 89) | function chain(stream, state, f) {
function tokenBase (line 95) | function tokenBase(stream, state) {
function tokenComment (line 229) | function tokenComment(stream, state) {
function tokenString (line 252) | function tokenString(quote, f) {
function tokenVariable (line 292) | function tokenVariable(stream, state) {
function tokenTag (line 309) | function tokenTag(name, isclose) {
function tokenAttribute (line 332) | function tokenAttribute(stream, state) {
function tokenXMLComment (line 367) | function tokenXMLComment(stream, state) {
function tokenCDATA (line 378) | function tokenCDATA(stream, state) {
function tokenPreProcessing (line 388) | function tokenPreProcessing(stream, state) {
function isInXmlBlock (line 399) | function isInXmlBlock(state) { return isIn(state, "tag"); }
function isInXmlAttributeBlock (line 400) | function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); }
function isInCodeBlock (line 401) | function isInCodeBlock(state) { return isIn(state, "codeblock"); }
function isInXmlConstructor (line 402) | function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"...
function isInString (line 403) | function isInString(state) { return isIn(state, "string"); }
function isEQNameAhead (line 405) | function isEQNameAhead(stream) {
function isIn (line 415) | function isIn(state, type) {
function pushStateStack (line 419) | function pushStateStack(state, newState) {
function popStateStack (line 423) | function popStateStack(state) {
FILE: _archive/apps/samples/mini-code-edit/cm/test/test.js
function p (line 242) | function p(v) { return v && {line: v[0], ch: v[1]}; }
function p (line 266) | function p(v) { return v && {line: v[0], ch: v[1]}; }
function htmlEscape (line 284) | function htmlEscape(str) {
function forEach (line 287) | function forEach(arr, f) {
function Failure (line 291) | function Failure(why) {this.message = why;}
function test (line 293) | function test(name, run) {tests.push({name: name, func: run});}
function testCM (line 294) | function testCM(name, run, opts) {
function runTests (line 302) | function runTests() {
function eq (line 324) | function eq(a, b, msg) {
function eqPos (line 327) | function eqPos(a, b, msg) {
function is (line 333) | function is(a, msg) {
FILE: _archive/apps/samples/mini-code-edit/editor.js
function errorHandler (line 6) | function errorHandler(e) {
function handleDocumentChange (line 33) | function handleDocumentChange(title) {
function newFile (line 57) | function newFile() {
function setFile (line 63) | function setFile(theFileEntry, isWritable) {
function readFileIntoEditor (line 68) | function readFileIntoEditor(theFileEntry) {
function writeEditorToFile (line 87) | function writeEditorToFile(theFileEntry) {
function handleNewButton (line 121) | function handleNewButton() {
function handleOpenButton (line 132) | function handleOpenButton() {
function handleSaveButton (line 136) | function handleSaveButton() {
function initContextMenu (line 144) | function initContextMenu() {
FILE: _archive/apps/samples/multicast/ChatClient.js
function ChatClient (line 1) | function ChatClient(config) {
function emptyFn (line 7) | function emptyFn() {
FILE: _archive/apps/samples/multicast/Collection.js
function Collection (line 2) | function Collection() {
function defaultCompare (line 62) | function defaultCompare(a, b) {
FILE: _archive/apps/samples/multicast/MulticastSocket.js
function MulticastSocket (line 8) | function MulticastSocket(config) {
FILE: _archive/apps/samples/multicast/background.js
function random_string (line 6) | function random_string(length) {
function rtm (line 14) | function rtm(message, callback) {
function onInitWindow (line 22) | function onInitWindow(appWindow) {
function createMainWindow (line 38) | function createMainWindow() {
function initClient (line 85) | function initClient(id) {
function waitForChatClient (line 138) | function waitForChatClient() {
FILE: _archive/apps/samples/multicast/index.js
function rtm (line 1) | function rtm(message, callback) {
function setClientId (line 9) | function setClientId(name, callback) {
function startEditClientId (line 16) | function startEditClientId() {
function refreshUserList (line 34) | function refreshUserList() {
function removeUser (line 61) | function removeUser(name, ip) {
function addUser (line 73) | function addUser(name, ip) {
function sendMessage (line 99) | function sendMessage() {
function init (line 113) | function init(clientId) {
function onMessageArrived (line 175) | function onMessageArrived(message, name) {
FILE: _archive/apps/samples/one-time-payment/scripts/app.js
function init (line 5) | function init() {
function getLicense (line 14) | function getLicense() {
function onLicenseFetched (line 18) | function onLicenseFetched(error, status, response) {
function parseLicense (line 41) | function parseLicense(license) {
function xhrWithAuth (line 76) | function xhrWithAuth(method, url, interactive, callback) {
FILE: _archive/apps/samples/optional-permissions/permissions.js
function log (line 1) | function log(message) {
FILE: _archive/apps/samples/parrot-ar-drone/lib/API.js
function bootstrapClientIp (line 130) | function bootstrapClientIp() {
function init (line 153) | function init(cbConnected, cbConnectionError) {
function connectDrone (line 167) | function connectDrone() {
function shutdown (line 191) | function shutdown() {
function connect (line 214) | function connect(sockRef) {
function disconnect (line 243) | function disconnect(sockRef) {
function sendCommands (line 263) | function sendCommands(commands) {
function setConfigurations (line 293) | function setConfigurations() {
function sendKeepAliveCommand (line 311) | function sendKeepAliveCommand() {
function takeOffOrLandInternal (line 345) | function takeOffOrLandInternal() {
function loop (line 379) | function loop() {
function takeOffOrLand (line 412) | function takeOffOrLand() {
function emergency (line 423) | function emergency() {
function raiseLower (line 429) | function raiseLower(val) {
function tiltLeftRight (line 434) | function tiltLeftRight(val) {
function tiltFrontBack (line 439) | function tiltFrontBack(val) {
function rotateLeftRight (line 444) | function rotateLeftRight(val) {
function check (line 449) | function check(val, defaultVal) {
function sendFlatTrim (line 460) | function sendFlatTrim() {
function flipAnimation (line 490) | function flipAnimation() {
FILE: _archive/apps/samples/parrot-ar-drone/lib/Gamepad.js
function showNotSupported (line 6) | function showNotSupported() {
function updateGamepads (line 11) | function updateGamepads() {
function updateButton (line 15) | function updateButton(button, gamepadId, label) {
function updateAxis (line 51) | function updateAxis(value, gamepadId, label, stick, xAxis) {
FILE: _archive/apps/samples/parrot-ar-drone/lib/NavData.js
function parse (line 3) | function parse(data) {
FILE: _archive/apps/samples/parrot-ar-drone/lib/Sequence.js
function next (line 6) | function next() {
function reset (line 11) | function reset() {
FILE: _archive/apps/samples/parrot-ar-drone/lib/Util.js
function stringToArrayBuffer (line 4) | function stringToArrayBuffer(string) {
function float32ToInt32 (line 13) | function float32ToInt32(floatVal) {
function uint8ToArrayBuffer (line 20) | function uint8ToArrayBuffer(intVal) {
function uint8ArrayToString (line 25) | function uint8ArrayToString(uArrayVal) {
function uint8ArrayToHex (line 33) | function uint8ArrayToHex(uArrayVal) {
FILE: _archive/apps/samples/parrot-ar-drone/scripts/app.js
function clearLog (line 5) | function clearLog() {
function log (line 9) | function log(msg) {
function onDroneConnected (line 14) | function onDroneConnected() {
function onDroneConnectionFailed (line 20) | function onDroneConnectionFailed() {
FILE: _archive/apps/samples/platform-title/main.js
function titleButtonClick (line 21) | function titleButtonClick(type, fn) {
FILE: _archive/apps/samples/restarted-demo/background.js
function Counter (line 4) | function Counter(id, clicks, startedBy) {
function runApp (line 94) | function runApp(counter) {
function logLocalStorage (line 133) | function logLocalStorage() {
FILE: _archive/apps/samples/rich-notifications/main.js
function doNotify (line 68) | function doNotify(evt) {
function creationCallback (line 103) | function creationCallback(notID) {
function notificationClosed (line 115) | function notificationClosed(notID, bByUser) {
function notificationClicked (line 119) | function notificationClicked(notID) {
function notificationBtnClick (line 123) | function notificationBtnClick(notID, iBtn) {
FILE: _archive/apps/samples/sandbox/handlebars-1.0.0.beta.6.js
function popStack (line 210) | function popStack(n) {
function lex (line 215) | function lex() {
function compile (line 1474) | function compile() {
FILE: _archive/apps/samples/serial-control-signals/logic.js
function onSetControlSignals (line 5) | function onSetControlSignals(result) {
function changeSignals (line 9) | function changeSignals() {
function onGetControlSignals (line 15) | function onGetControlSignals(signals) {
function readSignals (line 22) | function readSignals() {
function onConnect (line 27) | function onConnect(connectionInfo) {
function setStatus (line 42) | function setStatus(status) {
function buildPortPicker (line 46) | function buildPortPicker(ports) {
function openSelectedPort (line 67) | function openSelectedPort() {
FILE: _archive/apps/samples/serial/adkjs/app/js/adk.js
constant SENSOR_REFRESH_INTERVAL (line 21) | const SENSOR_REFRESH_INTERVAL=200;
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/AndroidAccessory/AndroidAccessory.h
function class (line 22) | class AndroidAccessory {
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/CapSense/CapSense.h
function class (line 19) | class CapSense
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/TimedAction/TimedAction.h
function class (line 37) | class TimedAction {
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/USB_Host_Shield/Max3421e.cpp
function byte (line 91) | byte MAX3421E::getVbusState( void )
function byte (line 157) | byte MAX3421E::regRd( byte reg )
function byte (line 187) | byte MAX3421E::gpioRd( void )
function boolean (line 196) | boolean MAX3421E::reset()
function boolean (line 215) | boolean MAX3421E::vbusPwr ( boolean action )
function byte (line 290) | byte MAX3421E::Task( void )
function byte (line 307) | byte MAX3421E::IntHandler()
function byte (line 323) | byte MAX3421E::GpxHandler()
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/USB_Host_Shield/Max3421e.h
function class (line 40) | class MAX3421E /* : public SPI */ {
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/USB_Host_Shield/Max_LCD.h
function class (line 80) | class Max_LCD : public Print {
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/USB_Host_Shield/Usb.cpp
function byte (line 59) | byte USB::getUsbTaskState( void )
function EP_RECORD (line 67) | EP_RECORD* USB::getDevTableEntry( byte addr, byte ep )
function byte (line 86) | byte USB::ctrlReq( byte addr, byte ep, byte bmReqType, byte bRequest, by...
function byte (line 125) | byte USB::ctrlStatus( byte ep, boolean direction, unsigned int nak_limit )
function byte (line 137) | byte USB::ctrlData( byte addr, byte ep, unsigned int nbytes, char* datap...
function byte (line 155) | byte USB::inTransfer( byte addr, byte ep, unsigned int nbytes, char* dat...
function byte (line 231) | byte USB::outTransfer( byte addr, byte ep, unsigned int nbytes, char* da...
function byte (line 292) | byte USB::dispatchPkt( byte token, byte ep, unsigned int nak_limit )
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/USB_Host_Shield/Usb.h
type SETUP_PKT (line 75) | typedef struct {
type EP_RECORD (line 99) | typedef struct {
type DEV_RECORD (line 109) | typedef struct {
function class (line 116) | class USB : public MAX3421E {
function byte (line 161) | inline byte USB::getDevDescr( byte addr, byte ep, unsigned int nbytes, c...
function byte (line 165) | inline byte USB::getConfDescr( byte addr, byte ep, unsigned int nbytes, ...
function byte (line 169) | inline byte USB::getStrDescr( byte addr, byte ep, unsigned int nbytes, b...
function byte (line 173) | inline byte USB::setAddr( byte oldaddr, byte ep, byte newaddr, unsigned ...
function byte (line 177) | inline byte USB::setConf( byte addr, byte ep, byte conf_value, unsigned ...
function byte (line 181) | inline byte USB::setProto( byte addr, byte ep, byte interface, byte prot...
function byte (line 184) | inline byte USB::getProto( byte addr, byte ep, byte interface, char* dat...
function byte (line 188) | inline byte USB::getReportDescr( byte addr, byte ep, unsigned int nbytes...
function byte (line 191) | inline byte USB::setReport( byte addr, byte ep, unsigned int nbytes, byt...
function byte (line 194) | inline byte USB::getReport( byte addr, byte ep, unsigned int nbytes, byt...
function byte (line 198) | inline byte USB::getIdle( byte addr, byte ep, byte interface, byte repor...
function byte (line 201) | inline byte USB::setIdle( byte addr, byte ep, byte interface, byte repor...
FILE: _archive/apps/samples/serial/adkjs/firmware/arduino_libs/USB_Host_Shield/ch9.h
type USB_DEVICE_DESCRIPTOR (line 130) | typedef struct {
type USB_CONFIGURATION_DESCRIPTOR (line 148) | typedef struct
type USB_INTERFACE_DESCRIPTOR (line 161) | typedef struct
type USB_ENDPOINT_DESCRIPTOR (line 175) | typedef struct
type USB_HID_DESCRIPTOR (line 186) | typedef struct {
FILE: _archive/apps/samples/serial/espruino/main.js
function log (line 91) | function log(msg) {
FILE: _archive/apps/samples/serial/ledtoggle/main.js
constant DEVICE_PATH (line 1) | const DEVICE_PATH = '/dev/ttyACM0';
function log (line 100) | function log(msg) {
FILE: _archive/apps/samples/servo/servo.js
function setPosition (line 3) | function setPosition(position) {
function onReceive (line 10) | function onReceive(receiveInfo) {
function onError (line 21) | function onError(errorInfo) {
function onOpen (line 28) | function onOpen(connectionInfo) {
function setStatus (line 38) | function setStatus(status) {
function buildPortPicker (line 42) | function buildPortPicker(ports) {
function openSelectedPort (line 63) | function openSelectedPort() {
FILE: _archive/apps/samples/storage/main.js
function log (line 3) | function log(message) {
FILE: _archive/apps/samples/syncfs-editor/js/editor.js
function appendEditor (line 23) | function appendEditor(editor) {
FILE: _archive/apps/samples/syncfs-editor/js/main.js
function onFileSystemOpened (line 16) | function onFileSystemOpened(fs, isSyncable) {
function openTemporaryFileSystem (line 24) | function openTemporaryFileSystem() {
function openSyncableFileSystem (line 33) | function openSyncableFileSystem() {
FILE: _archive/apps/samples/syncfs-editor/js/utils.js
function $ (line 1) | function $(q) {
function show (line 5) | function show(q) {
function hide (line 9) | function hide(q) {
function validFileName (line 13) | function validFileName(path) {
function log (line 25) | function log(msg) {
function createElement (line 30) | function createElement(name, attributes) {
function info (line 43) | function info(msg) {
function error (line 51) | function error(msg) {
FILE: _archive/apps/samples/systemInfo/systemInfo.js
function showBounds (line 7) | function showBounds(bounds) {
function showInsets (line 12) | function showInsets(bounds) {
function showDisplayInfo (line 17) | function showDisplayInfo(display) {
function bytesToMegaBytes (line 34) | function bytesToMegaBytes(number) {
function showStorageInfo (line 38) | function showStorageInfo(unit) {
function showCpuProcessorInfo (line 47) | function showCpuProcessorInfo(processor_number, processor) {
function init (line 57) | function init() {
FILE: _archive/apps/samples/tasks/gapiCallback.js
function printTasks (line 4) | function printTasks(listId, jsonResp, rawResp) {
function getTasksOnList (line 19) | function getTasksOnList(listId) {
function printTaskLists (line 30) | function printTaskLists(jsonResp, rawResp) {
function getListsOfTasks (line 48) | function getListsOfTasks() {
function authorize (line 58) | function authorize(params, callback) {
function gapiIsLoaded (line 70) | function gapiIsLoaded() {
FILE: _archive/apps/samples/tcpserver/commands/BrowserCommands.js
function Commands (line 21) | function Commands() {
FILE: _archive/apps/samples/tcpserver/main.js
function onAcceptCallback (line 52) | function onAcceptCallback(tcpConnection, socketInfo) {
function startServer (line 75) | function startServer(addr, port) {
function stopServer (line 84) | function stopServer() {
function getServerState (line 91) | function getServerState() {
FILE: _archive/apps/samples/tcpserver/server.js
function setConnectedState (line 34) | function setConnectedState(addr, port) {
FILE: _archive/apps/samples/tcpserver/tcp-server.js
constant DEFAULT_MAX_CONNECTIONS (line 19) | const DEFAULT_MAX_CONNECTIONS=5;
function TcpServer (line 32) | function TcpServer(addr, port, options) {
function TcpConnection (line 192) | function TcpConnection(socketId) {
function _arrayBufferToString (line 346) | function _arrayBufferToString(buf, callback) {
function _stringToArrayBuffer (line 362) | function _stringToArrayBuffer(str, callback) {
function log (line 375) | function log(msg) {
function error (line 382) | function error(msg) {
FILE: _archive/apps/samples/telnet/ansi-converter.js
function A (line 34) | function A() {
FILE: _archive/apps/samples/telnet/main.js
function toggleHelp (line 4) | function toggleHelp() {
function connect (line 53) | function connect(host, port) {
FILE: _archive/apps/samples/telnet/tcp-client.js
function TcpClient (line 27) | function TcpClient(host, port) {
function log (line 236) | function log(msg) {
function error (line 243) | function error(msg) {
FILE: _archive/apps/samples/telnet/terminal.js
function Sound (line 39) | function Sound(opt_loop) {
function inputTextClick_ (line 182) | function inputTextClick_(e) {
function keyboardShortcutHandler_ (line 191) | function keyboardShortcutHandler_(e) {
function historyHandler_ (line 209) | function historyHandler_(e) { // Tab needs to be keydown.
function processNewCommand_ (line 245) | function processNewCommand_(e) {
function formatColumns_ (line 288) | function formatColumns_(entries) {
function invalidOpForEntryType_ (line 315) | function invalidOpForEntryType_(e, cmd, dest) {
function errorHandler_ (line 332) | function errorHandler_(e) {
function createDir_ (line 364) | function createDir_(rootDirEntry, folders, opt_errorCallback) {
function open_ (line 383) | function open_(cmd, path, successCallback) {
function read_ (line 402) | function read_(cmd, path, successCallback) {
function ls_ (line 433) | function ls_(successCallback) {
function clear_ (line 461) | function clear_(input) {
function setTheme_ (line 474) | function setTheme_(theme) {
function toggle3DView_ (line 492) | function toggle3DView_() {
function output (line 528) | function output(html) {
FILE: _archive/apps/samples/text-editor/editor.js
function onResize (line 23) | function onResize() {
function updatePathTo (line 40) | function updatePathTo(aPath) {
function updatePath (line 48) | function updatePath() {
function updateModeForBaseName (line 56) | function updateModeForBaseName(aBaseName) {
function showError (line 65) | function showError(anError) {
function clearError (line 71) | function clearError() {
function replaceDocContentsFromString (line 75) | function replaceDocContentsFromString(string) {
function replaceDocContentsFromFile (line 79) | function replaceDocContentsFromFile(file) {
function replaceDocContentsFromFileEntry (line 89) | function replaceDocContentsFromFileEntry() {
function saveToEntry (line 93) | function saveToEntry() {
function setEntry (line 107) | function setEntry(anEntry, isWritable, name) {
function createNew (line 119) | function createNew() {
function openFile (line 124) | function openFile() {
function saveFile (line 136) | function saveFile() {
function saveAs (line 154) | function saveAs() {
FILE: _archive/apps/samples/text-editor/lib/ace/commands/default_commands.js
function bindKey (line 46) | function bindKey(win, mac) {
FILE: _archive/apps/samples/text-editor/lib/ace/config.js
function deHyphenate (line 124) | function deHyphenate(str) {
FILE: _archive/apps/samples/text-editor/lib/ace/edit_session.js
function done (line 506) | function done(module) {
function fetch (line 518) | function fetch(callback) {
function isInsert (line 764) | function isInsert(delta) {
function addSplit (line 1244) | function addSplit(screenPos) {
function isFullWidth (line 1723) | function isFullWidth(c) {
FILE: _archive/apps/samples/text-editor/lib/ace/edit_session/bracket_match.js
function BracketMatch (line 44) | function BracketMatch() {
FILE: _archive/apps/samples/text-editor/lib/ace/edit_session/fold_line.js
function FoldLine (line 47) | function FoldLine(foldData, folds) {
FILE: _archive/apps/samples/text-editor/lib/ace/edit_session/folding.js
function Folding (line 47) | function Folding() {
FILE: _archive/apps/samples/text-editor/lib/ace/edit_session_test.js
function createFoldTestSession (line 56) | function createFoldTestSession() {
function computeAndAssert (line 377) | function computeAndAssert(line, assertEqual, wrapLimit, tabSize) {
function assertDisplayLine (line 497) | function assertDisplayLine(foldLine, str) {
function assertIdx2Pos (line 511) | function assertIdx2Pos(foldLineIdx, idx, row, column) {
function assertDoc2Screen (line 539) | function assertDoc2Screen(docRow, docCol, screenRow, screenCol) {
function assertScreen2Doc (line 580) | function assertScreen2Doc(docRow, docCol, screenRow, screenCol) {
function test (line 622) | function test(startRow, startColumn, endColumn, endRow, folds) {
function insert (line 650) | function insert(row, column, text) {
function insert (line 749) | function insert(row, column, text) {
function assertArray (line 815) | function assertArray(a, b) {
function assertWrap (line 822) | function assertWrap(line0, line1, line2) {
function removeFoldAssertWrap (line 828) | function removeFoldAssertWrap(docRow, docColumn, line0, line1, line2) {
function tryAddFold (line 918) | function tryAddFold(placeholder, range, shouldFail) {
FILE: _archive/apps/samples/text-editor/lib/ace/ext/textarea.js
function applyStyles (line 75) | function applyStyles(elm, styles) {
function setupContainer (line 81) | function setupContainer(element, getValue) {
function load (line 247) | function load(url, module, callback) {
function setupApi (line 253) | function setupApi(editor, editorDiv, settingDiv, ace, options, loader) {
function setupSettingPanel (line 358) | function setupSettingPanel(settingDiv, settingOpener, api, options) {
FILE: _archive/apps/samples/text-editor/lib/ace/keyboard/hash_handler.js
function HashHandler (line 44) | function HashHandler(config, platform) {
function parseKeys (line 130) | function parseKeys(keys, val, ret) {
function splitSafe (line 148) | function splitSafe(s) {
FILE: _archive/apps/samples/text-editor/lib/ace/keyboard/state_handler.js
function StateHandler (line 45) | function StateHandler(keymapping) {
FILE: _archive/apps/samples/text-editor/lib/ace/keyboard/textinput.js
function select (line 65) | function select() {
function sendText (line 71) | function sendText(valueToSend) {
function isFocused (line 243) | function isFocused() {
FILE: _archive/apps/samples/text-editor/lib/ace/layer/text.js
function addTokens (line 531) | function addTokens(tokens, from, to) {
FILE: _archive/apps/samples/text-editor/lib/ace/lib/es5-shim.js
function doesDefinePropertyWork (line 580) | function doesDefinePropertyWork(object) {
FILE: _archive/apps/samples/text-editor/lib/ace/lib/event.js
function onMouseMove (line 127) | function onMouseMove(e) {
function onReleaseCapture (line 133) | function onReleaseCapture(e) {
function onMouseMove (line 156) | function onMouseMove(e) {
function onMouseUp (line 161) | function onMouseUp(e) {
function normalizeCommandKeys (line 235) | function normalizeCommandKeys(callback, e, keyCode) {
FILE: _archive/apps/samples/text-editor/lib/ace/lib/regexp.js
function getNativeFlags (line 92) | function getNativeFlags (regex) {
function indexOf (line 100) | function indexOf (array, item, from) {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee.js
function Mode (line 50) | function Mode() {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee/lexer.js
function Lexer (line 40) | function Lexer() {}
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee/nodes.js
function ctor (line 31) | function ctor() { this.constructor = child; }
function Base (line 63) | function Base() {}
function Block (line 225) | function Block(nodes) {
function Literal (line 425) | function Literal(value) {
function Return (line 483) | function Return(expr) {
function Value (line 519) | function Value(base, props, tag) {
function Comment (line 673) | function Comment(comment) {
function Call (line 698) | function Call(variable, args, soak) {
function Extends (line 871) | function Extends(child, parent) {
function Access (line 892) | function Access(name, tag) {
function Index (line 922) | function Index(index) {
function Range (line 948) | function Range(from, to, tag) {
function Slice (line 1033) | function Slice(range) {
function Obj (line 1059) | function Obj(props, generated) {
function Arr (line 1140) | function Arr(objs) {
function Class (line 1190) | function Class(variable, parent, body) {
function Assign (line 1366) | function Assign(variable, value, context, options) {
function Code (line 1574) | function Code(params, body, tag) {
function Param (line 1712) | function Param(name, value, splat) {
function Splat (line 1794) | function Splat(name) {
function While (line 1858) | function While(condition, options) {
function Op (line 1933) | function Op(op, first, second, flip) {
function In (line 2107) | function In(object, array) {
function Try (line 2181) | function Try(attempt, error, recovery, ensure) {
function Throw (line 2236) | function Throw(expression) {
function Existence (line 2262) | function Existence(expression) {
function Parens (line 2297) | function Parens(body) {
function For (line 2337) | function For(body, source) {
function Switch (line 2478) | function Switch(subject, cases, otherwise) {
function If (line 2555) | function If(condition, body, options) {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee/parser.js
function popStack (line 512) | function popStack(n) {
function lex (line 517) | function lex() {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee/rewriter.js
function Rewriter (line 37) | function Rewriter() {}
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee/scope.js
function Scope (line 39) | function Scope(parent, expressions, method) {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/coffee_highlight_rules.js
function CoffeeHighlightRules (line 47) | function CoffeeHighlightRules() {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/css/csslint.js
function EventTarget (line 61) | function EventTarget(){
function StringReader (line 149) | function StringReader(text){
function SyntaxError (line 418) | function SyntaxError(message, line, col){
function SyntaxUnit (line 454) | function SyntaxUnit(text, line, col, type){
function TokenStreamBase (line 533) | function TokenStreamBase(input, tokenData){
function Combinator (line 1122) | function Combinator(text, line, col){
function MediaFeature (line 1160) | function MediaFeature(name, value){
function MediaQuery (line 1196) | function MediaQuery(modifier, mediaType, features, line, col){
function Parser (line 1243) | function Parser(options){
function PropertyName (line 3930) | function PropertyName(text, hack, line, col){
function PropertyValue (line 3962) | function PropertyValue(parts, line, col){
function PropertyValueIterator (line 3988) | function PropertyValueIterator(value){
function PropertyValuePart (line 4117) | function PropertyValuePart(text, line, col){
function Selector (line 4303) | function Selector(parts, line, col){
function SelectorPart (line 4344) | function SelectorPart(elementName, modifiers, text, line, col){
function SelectorSubPart (line 4383) | function SelectorSubPart(text, type, line, col){
function Specificity (line 4418) | function Specificity(a, b, c, d){
function updateValues (line 4482) | function updateValues(part){
function isHexDigit (line 4542) | function isHexDigit(c){
function isDigit (line 4546) | function isDigit(c){
function isWhitespace (line 4550) | function isWhitespace(c){
function isNewLine (line 4554) | function isNewLine(c){
function isNameStart (line 4558) | function isNameStart(c){
function isNameChar (line 4562) | function isNameChar(c){
function isIdentStart (line 4566) | function isIdentStart(c){
function mix (line 4570) | function mix(receiver, supplier){
function TokenStream (line 4591) | function TokenStream(input){
function ValidationError (line 5916) | function ValidationError(message, line, col){
function Reporter (line 6488) | function Reporter(lines, ruleset){
function startRule (line 6780) | function startRule(){
function endRule (line 6784) | function endRule(){
function reportProperty (line 7077) | function reportProperty(name, display, msg){
function startRule (line 7085) | function startRule(){
function endRule (line 7089) | function endRule(){
function startRule (line 7211) | function startRule(event){
function startRule (line 7316) | function startRule(event){
function startRule (line 7978) | function startRule(event){
function endRule (line 7992) | function endRule(event){
function startRule (line 8248) | function startRule(event){
function endRule (line 8253) | function endRule(event){
function startRule (line 8311) | function startRule(event){
function endRule (line 8316) | function endRule(event){
function startRule (line 8577) | function startRule(){
function endRule (line 8583) | function endRule(event){
FILE: _archive/apps/samples/text-editor/lib/ace/mode/markdown_highlight_rules.js
function github_embed (line 49) | function github_embed(tag, prefix) {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/ruby_highlight_rules_test.js
function assertValidTokens (line 92) | function assertValidTokens(tokenizer, tokenType, validTokens) {
function assertInvalidTokens (line 103) | function assertInvalidTokens(tokenizer, tokenType, invalidTokens) {
FILE: _archive/apps/samples/text-editor/lib/ace/mode/xml_util.js
function string (line 51) | function string(state) {
function multiLineString (line 71) | function multiLineString(quote, state) {
FILE: _archive/apps/samples/text-editor/lib/ace/mouse/default_gutter_handler.js
function GutterHandler (line 42) | function GutterHandler(editor) {
FILE: _archive/apps/samples/text-editor/lib/ace/mouse/default_handlers.js
function DefaultHandlers (line 53) | function DefaultHandlers(editor) {
function onStartSelect (line 191) | function onStartSelect(pos) {
function calcDistance (line 278) | function calcDistance(ax, ay, bx, by) {
FILE: _archive/apps/samples/text-editor/lib/ace/mouse/fold_handler.js
function FoldHandler (line 42) | function FoldHandler(editor) {
FILE: _archive/apps/samples/text-editor/lib/ace/mouse/multi_select_handler.js
function isSamePoint (line 45) | function isSamePoint(p1, p2) {
function onMouseDown (line 49) | function onMouseDown(e) {
FILE: _archive/apps/samples/text-editor/lib/ace/multi_select.js
function find (line 51) | function find(session, needle, dir) {
function isSamePoint (line 617) | function isSamePoint(p1, p2) {
function MultiSelect (line 665) | function MultiSelect(editor) {
function addAltCursorListeners (line 680) | function addAltCursorListeners(editor){
FILE: _archive/apps/samples/text-editor/lib/ace/narcissus/definitions.js
function defineGetter (line 252) | function defineGetter(obj, prop, fn, dontDelete, dontEnum) {
function defineGetterSetter (line 257) | function defineGetterSetter(obj, prop, getter, setter, dontDelete, dontE...
function defineMemoGetter (line 266) | function defineMemoGetter(obj, prop, fn, dontDelete, dontEnum) {
function defineProperty (line 278) | function defineProperty(obj, prop, val, dontDelete, readOnly, dontEnum) {
function isNativeCode (line 285) | function isNativeCode(fn) {
function apply (line 292) | function apply(f, o, a) {
function getPropertyDescriptor (line 323) | function getPropertyDescriptor(obj, name) {
function getPropertyNames (line 331) | function getPropertyNames(obj) {
function getOwnProperties (line 342) | function getOwnProperties(obj) {
function mixinHandler (line 367) | function mixinHandler(redirect, catchall) {
function makePassthruHandler (line 433) | function makePassthruHandler(obj) {
function hasOwn (line 484) | function hasOwn(obj, name) {
function Dict (line 488) | function Dict(table, size) {
function WeakMap (line 567) | function WeakMap(array) {
function searchMap (line 571) | function searchMap(map, key, found, notFound) {
function Stack (line 609) | function Stack(elts) {
FILE: _archive/apps/samples/text-editor/lib/ace/narcissus/lexer.js
function isValidIdentifierChar (line 79) | function isValidIdentifierChar(ch, first) {
function isIdentifier (line 103) | function isIdentifier(str) {
function Tokenizer (line 124) | function Tokenizer(s, f, l, allowHTMLComments) {
method done (line 138) | get done() {
method token (line 144) | get token() {
FILE: _archive/apps/samples/text-editor/lib/ace/narcissus/parser.js
function pushDestructuringVarDecls (line 70) | function pushDestructuringVarDecls(n, s) {
function Parser (line 81) | function Parser(tokenizer) {
function StaticContext (line 90) | function StaticContext(parentScript, parentBlock, inModule, inFunction, ...
function Pragma (line 227) | function Pragma(n) {
function Node (line 241) | function Node(t, init) {
function SyntheticNode (line 266) | function SyntheticNode(init) {
function unevalableConst (line 285) | function unevalableConst(code) {
function tokenString (line 337) | function tokenString(tt) {
function blockInit (line 374) | function blockInit() {
function scriptInit (line 378) | function scriptInit() {
function Export (line 464) | function Export(node, isDefinition) {
function registerExport (line 473) | function registerExport(exports, decl) {
function Module (line 534) | function Module(node) {
function isPragmaToken (line 964) | function isPragmaToken(tt) {
function parse (line 1978) | function parse(s, f, l) {
function parseFunction (line 1990) | function parseFunction(s, requireName, form, f, l) {
function parseStdin (line 2000) | function parseStdin(s, ln, prefix, isCommand) {
function parseMultiline (line 2040) | function parseMultiline(ln, prefix) {
FILE: _archive/apps/samples/text-editor/lib/ace/range_list_test.js
function flatten (line 50) | function flatten(rangeList) {
function testRangeList (line 57) | function testRangeList(rangeList, points) {
FILE: _archive/apps/samples/text-editor/lib/ace/search.js
function getLine (line 235) | function getLine(row) {
FILE: _archive/apps/samples/text-editor/lib/ace/split.js
function UndoManagerProxy (line 258) | function UndoManagerProxy(undoManager, session) {
FILE: _archive/apps/samples/text-editor/lib/ace/test/asyncjs/assert.js
function fail (line 89) | function fail(actual, expected, message, operator, stackStartFunction) {
function _deepEqual (line 139) | function _deepEqual(actual, expected) {
function isUndefinedOrNull (line 174) | function isUndefinedOrNull(value) {
function isArguments (line 178) | function isArguments(object) {
function objEquiv (line 182) | function objEquiv(a, b) {
function expectedException (line 252) | function expectedException(actual, expected) {
function _throws (line 268) | function _throws(shouldThrow, block, expected, message) {
FILE: _archive/apps/samples/text-editor/lib/ace/test/asyncjs/async.js
function reduceAll (line 121) | function reduceAll() {
FILE: _archive/apps/samples/text-editor/lib/ace/test/asyncjs/test.js
function tearDown (line 104) | function tearDown(next) {
function errorListener (line 113) | function errorListener(e) {
FILE: _archive/apps/samples/text-editor/lib/ace/unicode.js
function addUnicodePackage (line 101) | function addUnicodePackage (pack) {
FILE: _archive/apps/samples/text-editor/lib/ace/virtual_renderer.js
function afterLoad (line 912) | function afterLoad(theme) {
FILE: _archive/apps/samples/text-editor/lib/ace/worker/jshint.js
function F (line 791) | function F() {} // Used by Object.create
function is_own (line 793) | function is_own(object, name) {
function checkOption (line 801) | function checkOption(name, t) {
function combine (line 893) | function combine(t, o) {
function assume (line 902) | function assume() {
function quit (line 959) | function quit(message, line, chr) {
function isundef (line 971) | function isundef(scope, m, t, a) {
function warning (line 975) | function warning(m, t, a, b, c, d) {
function warningAt (line 1006) | function warningAt(m, l, ch, a, b, c, d) {
function error (line 1013) | function error(m, t, a, b, c, d) {
function errorAt (line 1017) | function errorAt(m, l, ch, a, b, c, d) {
function nextLine (line 1033) | function nextLine() {
function it (line 1073) | function it(type, value) {
function match (line 1173) | function match(x) {
function string (line 1186) | function string(x) {
function addlabel (line 1716) | function addlabel(t, type) {
function doOption (line 1747) | function doOption() {
function peek (line 1865) | function peek(p) {
function advance (line 1882) | function advance(id, t) {
function expression (line 1952) | function expression(rbp, initial) {
function adjacent (line 2001) | function adjacent(left, right) {
function nobreak (line 2012) | function nobreak(left, right) {
function nospace (line 2020) | function nospace(left, right) {
function nonadjacent (line 2030) | function nonadjacent(left, right) {
function nobreaknonadjacent (line 2042) | function nobreaknonadjacent(left, right) {
function indentation (line 2058) | function indentation(bias) {
function nolinebreak (line 2070) | function nolinebreak(t) {
function comma (line 2078) | function comma() {
function symbol (line 2099) | function symbol(s, p) {
function delim (line 2112) | function delim(s) {
function stmt (line 2117) | function stmt(s, f) {
function blockstmt (line 2125) | function blockstmt(s, f) {
function reserveName (line 2132) | function reserveName(x) {
function prefix (line 2141) | function prefix(s, f) {
function type (line 2161) | function type(s, f) {
function reserve (line 2169) | function reserve(s, f) {
function reservevar (line 2176) | function reservevar(s, v) {
function infix (line 2186) | function infix(s, f, p, w) {
function relation (line 2209) | function relation(s, f) {
function isPoorRelation (line 2234) | function isPoorRelation(node) {
function assignop (line 2245) | function assignop(s, f) {
function bitwise (line 2284) | function bitwise(s, f, p) {
function bitwiseassignop (line 2299) | function bitwiseassignop(s) {
function suffix (line 2325) | function suffix(s, f) {
function optionalidentifier (line 2343) | function optionalidentifier(fnparam) {
function identifier (line 2361) | function identifier(fnparam) {
function reachable (line 2375) | function reachable(s) {
function statement (line 2402) | function statement(noindent) {
function statements (line 2474) | function statements(startLine) {
function directives (line 2497) | function directives() {
function block (line 2559) | function block(ordinary, stmt, isfunc) {
function countMember (line 2639) | function countMember(m) {
function note_implied (line 2651) | function note_implied(token) {
function property_name (line 3221) | function property_name() {
function functionparams (line 3236) | function functionparams() {
function doFunction (line 3259) | function doFunction(i, statement) {
function saveProperty (line 3298) | function saveProperty(name, token) {
function saveSetter (line 3308) | function saveSetter(name, token) {
function saveGetter (line 3320) | function saveGetter(name) {
function jsonValue (line 3998) | function jsonValue() {
function detail (line 4338) | function detail(h, array) {
FILE: _archive/apps/samples/text-editor/lib/ace/worker/jslint.js
function array_to_object (line 314) | function array_to_object(array, value) {
function F (line 966) | function F() {} // Used by Object.create
function sanitize (line 1056) | function sanitize(a) {
function add_to_predefined (line 1065) | function add_to_predefined(group) {
function assume (line 1072) | function assume() {
function artifact (line 1105) | function artifact(tok) {
function quit (line 1112) | function quit(message, line, character) {
function warn (line 1124) | function warn(message, offender, a, b, c, d) {
function warn_at (line 1154) | function warn_at(message, line, character, a, b, c, d) {
function stop (line 1161) | function stop(message, offender, a, b, c, d) {
function stop_at (line 1166) | function stop_at(message, line, character, a, b, c, d) {
function expected_at (line 1173) | function expected_at(at) {
function aint (line 1180) | function aint(it, name, expected) {
function next_line (line 1196) | function next_line() {
function it (line 1221) | function it(type, value) {
function match (line 1260) | function match(x) {
function string (line 1273) | function string(x) {
function number (line 1390) | function number(snippet) {
function comment (line 1420) | function comment(snippet) {
function regexp (line 1431) | function regexp() {
function add_label (line 1911) | function add_label(token, kind, name) {
function peek (line 1963) | function peek(distance) {
function advance (line 1982) | function advance(id, match) {
function advance_identifier (line 2085) | function advance_identifier(string) {
function do_safe (line 2094) | function do_safe() {
function do_globals (line 2131) | function do_globals() {
function do_jslint (line 2163) | function do_jslint() {
function do_properties (line 2200) | function do_properties() {
function edge (line 2269) | function edge(mode) {
function step_in (line 2274) | function step_in(mode) {
function step_out (line 2310) | function step_out(id, symbol) {
function one_space (line 2325) | function one_space(left, right) {
function one_space_only (line 2335) | function one_space_only(left, right) {
function no_space (line 2344) | function no_space(left, right) {
function no_space_only (line 2353) | function no_space_only(left, right) {
function spaces (line 2362) | function spaces(left, right) {
function comma (line 2372) | function comma() {
function semicolon (line 2385) | function semicolon() {
function use_strict (line 2399) | function use_strict() {
function are_similar (line 2416) | function are_similar(a, b) {
function expression (line 2483) | function expression(rbp, initial) {
function symbol (line 2531) | function symbol(s, p) {
function postscript (line 2543) | function postscript(x) {
function ultimate (line 2548) | function ultimate(s) {
function stmt (line 2559) | function stmt(s, f) {
function labeled_stmt (line 2566) | function labeled_stmt(s, f) {
function disrupt_stmt (line 2571) | function disrupt_stmt(s, f) {
function reserve_name (line 2577) | function reserve_name(x) {
function prefix (line 2586) | function prefix(s, f) {
function type (line 2613) | function type(s, t, nud) {
function reserve (line 2623) | function reserve(s, f) {
function constant (line 2633) | function constant(name) {
function reservevar (line 2641) | function reservevar(s, v) {
function infix (line 2651) | function infix(s, p, f, w) {
function expected_relation (line 2673) | function expected_relation(node, message) {
function expected_condition (line 2680) | function expected_condition(node, message) {
function check_relation (line 2711) | function check_relation(node) {
function relation (line 2737) | function relation(s, eqeq) {
function assignop (line 2756) | function assignop(s, op) {
function bitwise (line 2814) | function bitwise(s, p) {
function suffix (line 2821) | function suffix(s) {
function optional_identifier (line 2839) | function optional_identifier() {
function identifier (line 2852) | function identifier() {
function statement (line 2863) | function statement() {
function statements (line 2938) | function statements() {
function block (line 2974) | function block(ordinary) {
function tally_property (line 3016) | function tally_property(name) {
function paren_check (line 3238) | function paren_check(that) {
function property_name (line 3766) | function property_name() {
function function_params (line 3789) | function function_params() {
function do_function (line 3816) | function do_function(func, name) {
function find_duplicate_case (line 4208) | function find_duplicate_case(value) {
function json_value (line 4554) | function json_value() {
function css_name (line 4641) | function css_name() {
function css_number (line 4649) | function css_number() {
function css_string (line 4661) | function css_string() {
function css_color (line 4668) | function css_color() {
function css_length (line 4725) | function css_length() {
function css_line_height (line 4745) | function css_line_height() {
function css_width (line 4763) | function css_width() {
function css_margin (line 4778) | function css_margin() {
function css_attr (line 4789) | function css_attr() {
function css_comma_list (line 4804) | function css_comma_list() {
function css_counter (line 4817) | function css_counter() {
function css_radius (line 4860) | function css_radius() {
function css_shape (line 4865) | function css_shape() {
function css_url (line 4883) | function css_url() {
function font_face (line 4938) | function font_face() {
function count (line 5030) | function count(separator) {
function style_attribute (line 5195) | function style_attribute() {
function style_value (line 5233) | function style_value(v) {
function style_child (line 5299) | function style_child() {
function substyle (line 5322) | function substyle() {
function style_selector (line 5357) | function style_selector() {
function style_pattern (line 5469) | function style_pattern() {
function style_list (line 5485) | function style_list() {
function styles (line 5501) | function styles() {
function do_begin (line 5548) | function do_begin(n) {
function do_attribute (line 5571) | function do_attribute(a, v) {
function do_tag (line 5631) | function do_tag(name, attribute) {
function closetag (line 5783) | function closetag(name) {
function html (line 5787) | function html() {
function detail (line 6245) | function detail(h, value) {
FILE: _archive/apps/samples/text-editor/lib/ace/worker/worker.js
function initBaseUrls (line 84) | function initBaseUrls(topLevelNamespaces) {
function initSender (line 88) | function initSender() {
FILE: _archive/apps/samples/text-editor/modes.js
function getModeFromBaseName (line 51) | function getModeFromBaseName(aBaseName) {
FILE: _archive/apps/samples/text-editor/require.js
function isFunction (line 43) | function isFunction(it) {
function isArray (line 47) | function isArray(it) {
function mixin (line 58) | function mixin(target, source, force) {
function makeError (line 75) | function makeError(id, msg, err) {
function configurePackageDir (line 89) | function configurePackageDir(pkgs, currentPackages, dir) {
function jQueryHoldReady (line 125) | function jQueryHoldReady($, shouldHold) {
function newContext (line 168) | function newContext(contextName) {
function getInteractiveScript (line 1546) | function getInteractiveScript() {
FILE: _archive/apps/samples/todomvc/background.js
function launch (line 9) | function launch() {
function showNotification (line 16) | function showNotification(storedData) {
FILE: _archive/apps/samples/todomvc/bower_components/director/build/director.js
function dlocHashEmpty (line 39) | function dlocHashEmpty() {
function onchange (line 75) | function onchange(onChangeEvent) {
function _every (line 307) | function _every(arr, iterator) {
function _flatten (line 315) | function _flatten(arr) {
function _asyncEverySeries (line 323) | function _asyncEverySeries(arr, iterator, callback) {
function paramifyString (line 345) | function paramifyString(str, params, mod) {
function regifyString (line 358) | function regifyString(str, params) {
function terminator (line 376) | function terminator(routes, delimiter, start, stop) {
function updateAndInvoke (line 468) | function updateAndInvoke() {
function filterRoutes (line 515) | function filterRoutes(routes) {
function extend (line 655) | function extend(method) {
function insertOrMount (line 686) | function insertOrMount(route, local) {
FILE: _archive/apps/samples/todomvc/js/alarms.js
function checkAlarm (line 5) | function checkAlarm(callback) {
function createAlarm (line 24) | function createAlarm() {
function cancelAlarm (line 29) | function cancelAlarm() {
function doToggleAlarm (line 33) | function doToggleAlarm() {
FILE: _archive/apps/samples/todomvc/js/app.js
function Todo (line 10) | function Todo(name) {
function lookupId (line 25) | function lookupId(target) {
FILE: _archive/apps/samples/todomvc/js/controller.js
function Controller (line 12) | function Controller(model, view) {
FILE: _archive/apps/samples/todomvc/js/export.js
function getTodosAsText (line 9) | function getTodosAsText(callback) {
function exportToFileEntry (line 30) | function exportToFileEntry(fileEntry) {
function exportToFileSystem (line 63) | function exportToFileSystem(fs) {
function doExportToDisk (line 72) | function doExportToDisk() {
FILE: _archive/apps/samples/todomvc/js/model.js
function Model (line 10) | function Model(storage) {
FILE: _archive/apps/samples/todomvc/js/store.js
function Store (line 13) | function Store(name, callback) {
FILE: _archive/apps/samples/todomvc/js/view.js
function View (line 10) | function View() {
FILE: _archive/apps/samples/tts/ttsdemo.js
function speak (line 15) | function speak(utterance, highlightText) {
FILE: _archive/apps/samples/usb-label-printer/index.js
function requestPermission (line 46) | function requestPermission(callback) {
function printCanvas (line 60) | function printCanvas() {
function toGreyScale (line 158) | function toGreyScale(imgData) {
function ditherImg (line 171) | function ditherImg(imgData) {
FILE: _archive/apps/samples/usb/device-info/script.js
function appendToDeviceSelector (line 7) | function appendToDeviceSelector(device) {
function appendDeviceInfo (line 16) | function appendDeviceInfo(name, value) {
function populateDeviceInfo (line 24) | function populateDeviceInfo(handle, callback) {
function deviceSelectionChanged (line 62) | function deviceSelectionChanged() {
FILE: _archive/apps/samples/usb/knob/knob.js
function setLEDBrightness (line 104) | function setLEDBrightness(brightness) {
function enablePulse (line 117) | function enablePulse(val) {
function enablePulseDuringSleep (line 125) | function enablePulseDuringSleep(val) {
function sendCommand (line 133) | function sendCommand(request, val, idx) {
function sendCompleted (line 146) | function sendCompleted(usbEvent) {
FILE: _archive/apps/samples/weather/lib/iscroll.js
function prefixStyle (line 1093) | function prefixStyle (style) {
FILE: _archive/apps/samples/weather/weather.js
function City (line 93) | function City(address) {
function Cities (line 107) | function Cities() {
function WeatherData (line 166) | function WeatherData(city, current_condition, forecast) {
function selectCity (line 188) | function selectCity(city) {
function deleteCity (line 206) | function deleteCity(city) {
function addCity (line 215) | function addCity(address) {
function getCurrentCity (line 225) | function getCurrentCity() {
function addWeatherData (line 234) | function addWeatherData(city, current_condition, forecast) {
function currentlyOnSettingsPage (line 239) | function currentlyOnSettingsPage() {
function refreshIScroll (line 243) | function refreshIScroll() {
function hideLoading (line 251) | function hideLoading() {
function hideSettings (line 261) | function hideSettings() {
function showSettings (line 270) | function showSettings() {
function showInputError (line 278) | function showInputError(searchterm) {
function hideInputError (line 284) | function hideInputError() {
function adjustnext (line 291) | function adjustnext(n) {
function adjustprev (line 298) | function adjustprev(n) {
function attemptAddCity (line 305) | function attemptAddCity(searchurl, onsuccess, onerror) {
function getWeatherData (line 330) | function getWeatherData(address, onsuccess, onerror) {
function updateAllWeatherData (line 343) | function updateAllWeatherData(onfirstsuccessfulupdate) {
function attemptAddCurrentLocation (line 353) | function attemptAddCurrentLocation() {
function refresh (line 384) | function refresh() {
function updateCityDisplay (line 394) | function updateCityDisplay(city, current_condition, forecast) {
function setDots (line 459) | function setDots() {
function currentDisplay (line 487) | function currentDisplay(current_condition) {
function dayDisplay (line 504) | function dayDisplay(forecast_day, i) {
function initHandlers (line 524) | function initHandlers() {
function init (line 608) | function init() {
FILE: _archive/apps/samples/web-store/js/index.js
function updateIdInput (line 1) | function updateIdInput(button, itemId) {
function updateVisibleButtons (line 7) | function updateVisibleButtons(input) {
function setSuccessButton (line 17) | function setSuccessButton(button) {
function setFailureButton (line 22) | function setFailureButton(button) {
function resetButton (line 27) | function resetButton(button) {
function onWebStoreLinkClicked (line 37) | function onWebStoreLinkClicked() {
function showError (line 44) | function showError(response) {
function onUploadButtonClicked (line 53) | function onUploadButtonClicked() {
function onPublishButtonClicked (line 126) | function onPublishButtonClicked() {
function getProjectIcon (line 154) | function getProjectIcon(directoryEntry, manifest, callback) {
function getProjectManifest (line 172) | function getProjectManifest(directoryEntry, callback) {
function createProjectDiv (line 191) | function createProjectDiv(directoryEntry, directoryEntryId, callback) {
function insertProject (line 249) | function insertProject(directoryEntryId, callback) {
function getDirectoryEntryIds (line 276) | function getDirectoryEntryIds(callback) {
FILE: _archive/apps/samples/web-store/js/webstore.js
function send (line 3) | function send(method, pathName, data, callback) {
function publish (line 40) | function publish(itemId, callback) {
function upload (line 44) | function upload(itemId, data, callback) {
FILE: _archive/apps/samples/web-store/js/zip/deflate.js
function Tree (line 107) | function Tree() {
function StaticTree (line 371) | function StaticTree(static_tree, extra_bits, extra_base, elems, max_leng...
function Config (line 411) | function Config(good_length, max_lazy, nice_length, max_chain, func) {
function smaller (line 474) | function smaller(tree, n, m, depth) {
function Deflate (line 480) | function Deflate() {
function ZStream (line 1916) | function ZStream() {
function Deflater (line 2027) | function Deflater(level) {
FILE: _archive/apps/samples/web-store/js/zip/inflate.js
function InfTree (line 121) | function InfTree() {
function InfCodes (line 460) | function InfCodes() {
function InfBlocks (line 1125) | function InfBlocks(z, w) {
function Inflate (line 1763) | function Inflate() {
function ZStream (line 2028) | function ZStream() {
function Inflater (line 2080) | function Inflater() {
FILE: _archive/apps/samples/web-store/js/zip/zip.js
function Crc32 (line 51) | function Crc32() {
function blobSlice (line 76) | function blobSlice(blob, index, length) {
function getDataHelper (line 87) | function getDataHelper(byteLength, bytes) {
function Reader (line 101) | function Reader() {
function TextReader (line 104) | function TextReader(text) {
function Data64URIReader (line 129) | function Data64URIReader(dataURI) {
function BlobReader (line 159) | function BlobReader(blob) {
function HttpReader (line 183) | function HttpReader(url) {
function HttpRangeReader (line 228) | function HttpRangeReader(url) {
function Writer (line 272) | function Writer() {
function TextWriter (line 278) | function TextWriter() {
function Data64URIWriter (line 311) | function Data64URIWriter(contentType) {
function FileWriter (line 344) | function FileWriter(fileEntry, contentType) {
function BlobWriter (line 377) | function BlobWriter(contentType) {
function launchWorkerProcess (line 407) | function launchWorkerProcess(worker, reader, writer, offset, size, onapp...
function launchProcess (line 462) | function launchProcess(process, reader, writer, offset, size, onappend, ...
function inflate (line 500) | function inflate(reader, writer, offset, size, computeCrc32, onend, onpr...
function deflate (line 520) | function deflate(reader, writer, level, onend, onprogress, onreaderror, ...
function copy (line 549) | function copy(reader, writer, offset, size, computeCrc32, onend, onprogr...
function decodeASCII (line 574) | function decodeASCII(str) {
function decodeUTF8 (line 594) | function decodeUTF8(str_data) {
function getString (line 619) | function getString(bytes) {
function getDate (line 626) | function getDate(timeRaw) {
function readCommonHeader (line 635) | function readCommonHeader(entry, data, index, centralDirectory, onerror) {
function createZipReader (line 658) | function createZipReader(reader, onerror) {
function encodeUTF8 (line 780) | function encodeUTF8(string) {
function getBytes (line 803) | function getBytes(str) {
function createZipWriter (line 810) | function createZipWriter(writer, onerror, dontDeflate) {
FILE: _archive/apps/samples/webgl-pointer-lock/js/showlogo3d.js
function getAutoRotationAngle (line 143) | function getAutoRotationAngle() {
function getZoomScale (line 147) | function getZoomScale() {
function onMouseDown (line 151) | function onMouseDown(event) {
function onMouseMove (line 176) | function onMouseMove(event) {
function onMouseUp (line 207) | function onMouseUp(event) {
function onMouseWheel (line 222) | function onMouseWheel(event) {
function init (line 259) | function init() {
function createScene (line 305) | function createScene(geometry) {
function onDocumentMouseDown (line 312) | function onDocumentMouseDown(event) {
function onDocumentMouseUp (line 322) | function onDocumentMouseUp(event) {
function onDocumentMouseWheel (line 330) | function onDocumentMouseWheel(event) {
function onDocumentMouseMove (line 334) | function onDocumentMouseMove(event) {
function animate (line 346) | function animate() {
function render (line 351) | function render() {
FILE: _archive/apps/samples/websocket-server/http.js
function EventSource (line 262) | function EventSource() {
function HttpServer (line 323) | function HttpServer() {
function HttpRequest (line 428) | function HttpRequest(headers, pSocket) {
function WebSocketServer (line 575) | function WebSocketServer(httpServer) {
function WebSocketRequest (line 605) | function WebSocketRequest(httpRequest) {
function WebSocketServerSocket (line 672) | function WebSocketServerSocket(pSocket) {
FILE: _archive/apps/samples/websocket-server/index.js
function $ (line 1) | function $(id) {
function log (line 5) | function log(text) {
FILE: _archive/apps/samples/webview-samples/browser/browser.js
function navigateTo (line 198) | function navigateTo(url) {
function doLayout (line 205) | function doLayout() {
function handleExit (line 223) | function handleExit(event) {
function resetExitedState (line 233) | function resetExitedState() {
function handleFindUpdate (line 239) | function handleFindUpdate(event) {
function findBoxObscuresActiveMatch (line 267) | function findBoxObscuresActiveMatch(findBoxRect, matchRect) {
function handleKeyDown (line 274) | function handleKeyDown(event) {
function handleLoadCommit (line 299) | function handleLoadCommit(event) {
function handleLoadStart (line 313) | function handleLoadStart(event) {
function handleLoadStop (line 325) | function handleLoadStop(event) {
function handleLoadAbort (line 331) | function handleLoadAbort(event) {
function handleLoadRedirect (line 338) | function handleLoadRedirect(event) {
function getNextPresetZoom (line 347) | function getNextPresetZoom(zoomFactor) {
function increaseZoom (line 366) | function increaseZoom() {
function decreaseZoom (line 375) | function decreaseZoom() {
function openZoomBox (line 384) | function openZoomBox() {
function closeZoomBox (line 393) | function closeZoomBox() {
function openFindBox (line 397) | function openFindBox() {
function closeFindBox (line 402) | function closeFindBox() {
function closeBoxes (line 410) | function closeBoxes() {
FILE: _archive/apps/samples/webview-samples/browser/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/declarative-web-request/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/insert-css/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/local-resources/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/multi-tab-browser/exit_box_controller.js
function query (line 6) | function query(id) { return containerElement.querySelector(id);}
function deactivate (line 51) | function deactivate() {
FILE: _archive/apps/samples/webview-samples/multi-tab-browser/find_box_controller.js
function query (line 8) | function query(id) {
function isVisible (line 31) | function isVisible() {
function hideBox (line 35) | function hideBox() {
function showBox (line 39) | function showBox() {
function findTextOnInput (line 53) | function findTextOnInput(e) {
function findTextOnKeyDown (line 58) | function findTextOnKeyDown(e) {
function matchCaseOnClick (line 65) | function matchCaseOnClick(e) {
function formOnSubmit (line 79) | function formOnSubmit(e) {
function findBackwardOnClick (line 85) | function findBackwardOnClick(e) {
function handleFindUpdate (line 91) | function handleFindUpdate(e) {
function containerElementObscuresActiveMatch (line 114) | function containerElementObscuresActiveMatch(findBoxRect, matchRect) {
function handleKeyDown (line 122) | function handleKeyDown(e) {
function initHandlers (line 129) | function initHandlers() {
function setWebviewFindUpdateHandler (line 137) | function setWebviewFindUpdateHandler() {
FILE: _archive/apps/samples/webview-samples/multi-tab-browser/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/multi-tab-browser/permission_box_controller.js
function query (line 8) | function query(id) { return containerElement.querySelector(id);}
function HostPermissions (line 10) | function HostPermissions(host) {
function getHostForURL (line 15) | function getHostForURL(url) {
function getHostEntry (line 21) | function getHostEntry(host) {
function check (line 30) | function check(host, permission) {
function addEntry (line 41) | function addEntry(host, permission, value) {
function onAllow (line 81) | function onAllow() {
function onDeny (line 87) | function onDeny() {
function deactivate (line 93) | function deactivate() {
FILE: _archive/apps/samples/webview-samples/multi-tab-browser/tabs.js
function handleInternalCommand (line 339) | function handleInternalCommand(url) {
function checkForPermissions (line 345) | function checkForPermissions(tab, e) {
FILE: _archive/apps/samples/webview-samples/multi-tab-browser/zoom_box_controller.js
function qsel (line 2) | function qsel(id) {
function initHandlers (line 29) | function initHandlers() {
function setZoomWithinLimits (line 55) | function setZoomWithinLimits(value) {
function increaseZoom (line 59) | function increaseZoom() {
function decreaseZoom (line 64) | function decreaseZoom() {
function updateZoom (line 69) | function updateZoom(value) {
function getNextPresetZoom (line 75) | function getNextPresetZoom(zoomFactor) {
FILE: _archive/apps/samples/webview-samples/new-window-user-agent/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/new-window/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/shared-script/correct_injection.js
function generateScriptText (line 9) | function generateScriptText(fn) {
FILE: _archive/apps/samples/webview-samples/shared-script/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/shared-script/more_dragons.js
function addMoreDragons (line 9) | function addMoreDragons() {
FILE: _archive/apps/samples/webview-samples/user-agent/browser.js
function toArray (line 185) | function toArray(arrayLikeObject) {
function getContentOverlay (line 189) | function getContentOverlay() {
function getLocationInput (line 193) | function getLocationInput() {
function getFindBox (line 197) | function getFindBox() {
function getWebViews (line 201) | function getWebViews() {
function getSadWebViews (line 205) | function getSadWebViews() {
function getWebViewContainers (line 209) | function getWebViewContainers() {
function getWebViewContainer (line 213) | function getWebViewContainer(webView) {
function getFindResultsLists (line 219) | function getFindResultsLists() {
function isLoading (line 223) | function isLoading(container) {
function setLoading (line 227) | function setLoading(container) {
function setLoadingAll (line 233) | function setLoadingAll() {
function clearLoading (line 241) | function clearLoading(container) {
function anyLoading (line 245) | function anyLoading() {
function stopNavigation (line 251) | function stopNavigation() {
function navigateTo (line 259) | function navigateTo(url, initiatorWebView) {
function doLayout (line 293) | function doLayout() {
function handleExit (line 328) | function handleExit(event) {
function resetExitedState (line 339) | function resetExitedState() {
function handleFindUpdate (line 346) | function handleFindUpdate(event) {
function findBoxObscuresActiveMatch (line 375) | function findBoxObscuresActiveMatch(findBoxRect, matchRect) {
function handleKeyDown (line 382) | function handleKeyDown(event) {
function handleLoadCommit (line 415) | function handleLoadCommit(event) {
function handleLoadStart (line 425) | function handleLoadStart(event) {
function handleLoadStop (line 429) | function handleLoadStop(event) {
function handleLoadAbort (line 433) | function handleLoadAbort(event) {
function handleLoadRedirect (line 439) | function handleLoadRedirect(event) {
function getNextPresetZoom (line 448) | function getNextPresetZoom(zoomFactor) {
function changeZoom (line 469) | function changeZoom(direction) {
function increaseZoom (line 478) | function increaseZoom() {
function decreaseZoom (line 482) | function decreaseZoom() {
function openZoomBox (line 486) | function openZoomBox() {
function closeZoomBox (line 495) | function closeZoomBox() {
function openFindBox (line 499) | function openFindBox() {
function closeFindBox (line 504) | function closeFindBox() {
function closeBoxes (line 512) | function closeBoxes() {
FILE: _archive/apps/samples/webview-samples/user-agent/main.js
function runApp (line 25) | function runApp() {
FILE: _archive/apps/samples/webview-samples/webview/index.js
function log (line 12) | function log(str) {
function changeProperty (line 16) | function changeProperty(property, isCssAttribute, e) {
function logSizeChanged (line 47) | function logSizeChanged(e) {
function sendInitialMessage (line 55) | function sendInitialMessage(e) {
function handlePermissionRequest (line 61) | function handlePermissionRequest(e) {
FILE: _archive/apps/samples/window-options/window.js
function setIfANumber (line 9) | function setIfANumber(dictionary, field, numberEdit) {
function getNumber (line 16) | function getNumber(numberEdit) {
function setNumberEdit (line 29) | function setNumberEdit(value, numberEdit, attr) {
function getBounds (line 36) | function getBounds(prefix) {
function setBounds (line 49) | function setBounds(bounds, prefix, attr) {
function createNewWindow (line 62) | function createNewWindow() {
function copyWindowBounds (line 97) | function copyWindowBounds() {
function initCreateWindowTab (line 103) | function initCreateWindowTab() {
function updateCurrentStateReadout (line 112) | function updateCurrentStateReadout() {
function initEditWindowTab (line 122) | function initEditWindowTab() {
function initBoundsControls (line 185) | function initBoundsControls() {
function resizeContent (line 269) | function resizeContent() {
FILE: _archive/apps/samples/window-state/window.js
function setIfANumber (line 22) | function setIfANumber(dictionary, field, number) {
function createNewWindow (line 28) | function createNewWindow(optionsDictionary) {
function getCustomIconDataURL (line 67) | function getCustomIconDataURL() {
function setWasState (line 219) | function setWasState(wasStateArray, state) {
function updateCurrentStateReadout (line 226) | function updateCurrentStateReadout() {
FILE: _archive/apps/samples/windows/main.js
function reset (line 7) | function reset() {
function launch (line 20) | function launch() {
function minimizeAll (line 96) | function minimizeAll() {
FILE: _archive/apps/samples/windows/scripts/window.js
function update (line 2) | function update() {
FILE: _archive/mv2/api/bookmarks/basic/popup.js
function dumpBookmarks (line 13) | function dumpBookmarks(query) {
function dumpTreeNodes (line 19) | function dumpTreeNodes(bookmarkNodes, query) {
function dumpNode (line 27) | function dumpNode(bookmarkNode, query) {
FILE: _archive/mv2/api/browserAction/set_icon_path/background.js
function updateIcon (line 13) | function updateIcon() {
FILE: _archive/mv2/api/browserAction/set_page_color/popup.js
function click (line 7) | function click(e) {
FILE: _archive/mv2/api/contentSettings/popup.js
function settingChanged (line 8) | function settingChanged() {
FILE: _archive/mv2/api/contextMenus/basic/sample.js
function genericOnClick (line 6) | function genericOnClick(info, tab) {
function radioOnClick (line 34) | function radioOnClick(info, tab) {
function checkboxOnClick (line 47) | function checkboxOnClick(info, tab) {
FILE: _archive/mv2/api/contextMenus/event_page/sample.js
function onClickHandler (line 6) | function onClickHandler(info, tab) {
FILE: _archive/mv2/api/contextMenus/global_context_search/options.js
function createForm (line 5) | function createForm() {
FILE: _archive/mv2/api/cookies/background.js
function focusOrCreateTab (line 9) | function focusOrCreateTab(url) {
FILE: _archive/mv2/api/cookies/manager.js
function Timer (line 10) | function Timer() {
function cookieMatch (line 24) | function cookieMatch(c1, c2) {
function sortedKeys (line 32) | function sortedKeys(array) {
function select (line 42) | function select(selector) {
function CookieCache (line 48) | function CookieCache() {
function removeAllForFilter (line 101) | function removeAllForFilter() {
function removeAll (line 109) | function removeAll() {
function removeCookie (line 131) | function removeCookie(cookie) {
function removeCookiesForDomain (line 137) | function removeCookiesForDomain(domain) {
function resetTable (line 144) | function resetTable() {
function scheduleReloadCookieTable (line 153) | function scheduleReloadCookieTable() {
function reloadCookieTable (line 160) | function reloadCookieTable() {
function focusFilter (line 202) | function focusFilter() {
function resetFilter (line 206) | function resetFilter() {
function listener (line 222) | function listener(info) {
function startListening (line 230) | function startListening() {
function stopListening (line 234) | function stopListening() {
function onload (line 238) | function onload() {
FILE: _archive/mv2/api/debugger/live-headers/background.js
function onAttach (line 12) | function onAttach(tabId) {
FILE: _archive/mv2/api/debugger/live-headers/headers.js
function onEvent (line 18) | function onEvent(debuggeeId, message, params) {
function appendResponse (line 46) | function appendResponse(requestId, response) {
function formatHeaders (line 57) | function formatHeaders(headers) {
function parseURL (line 66) | function parseURL(url) {
FILE: _archive/mv2/api/debugger/pause-resume/background.js
function onAttach (line 24) | function onAttach(debuggeeId) {
function onDebuggerEnabled (line 39) | function onDebuggerEnabled(debuggeeId) {
function onEvent (line 43) | function onEvent(debuggeeId, method) {
function onDetach (line 52) | function onDetach(debuggeeId) {
FILE: _archive/mv2/api/desktopCapture/app.js
constant DESKTOP_MEDIA (line 7) | const DESKTOP_MEDIA = ['screen', 'window', 'tab', 'audio'];
function onAccessApproved (line 32) | function onAccessApproved(id, options) {
function getUserMediaError (line 60) | function getUserMediaError(error) {
function gotStream (line 65) | function gotStream(stream) {
function onCreateOfferSuccess (line 96) | function onCreateOfferSuccess(desc) {
function gotRemoteStream (line 111) | function gotRemoteStream(event) {
function onCreateAnswerSuccess (line 121) | function onCreateAnswerSuccess(desc) {
function onIceCandidate (line 126) | function onIceCandidate(pc, event) {
function onIceStateChange (line 133) | function onIceStateChange(pc, event) {
FILE: _archive/mv2/api/deviceInfo/basic/popup.js
function dumpDevices (line 5) | function dumpDevices(devices) {
function outputDevicesToList (line 10) | function outputDevicesToList(devices) {
function populateDevices (line 35) | function populateDevices() {
FILE: _archive/mv2/api/devtools/network/chrome-firephp/devtools.js
function Console (line 5) | function Console() {
function ChromeFirePHP (line 36) | function ChromeFirePHP() {
FILE: _archive/mv2/api/devtools/panels/chrome-query/devtools.js
function updateElementProperties (line 20) | function updateElementProperties() {
FILE: _archive/mv2/api/displaySource/tabCast/background.js
function getDeviceList (line 20) | function getDeviceList(callback) {
function start (line 43) | function start(sinkId) {
function captureTabAndStartSession (line 51) | function captureTabAndStartSession(sink_id) {
function stop (line 97) | function stop() {
FILE: _archive/mv2/api/displaySource/tabCast/main.js
function createButtonList (line 40) | function createButtonList(deviceList, backgroundPage) {
function changeButtonState (line 73) | function changeButtonState(button, styleName, method) {
FILE: _archive/mv2/api/document_scan/scan.js
function setOnlyChild (line 11) | function setOnlyChild(parent, child) {
FILE: _archive/mv2/api/downloads/download_filename_controller/bg.js
function matches (line 5) | function matches(rule, item) {
function suggest (line 25) | function suggest(filename, conflictAction) {
FILE: _archive/mv2/api/downloads/download_filename_controller/options.js
function Rule (line 5) | function Rule(data) {
function loadRules (line 70) | function loadRules() {
function storeRules (line 79) | function storeRules() {
FILE: _archive/mv2/api/downloads/download_links/popup.js
function showLinks (line 12) | function showLinks() {
function toggleAll (line 38) | function toggleAll() {
function downloadCheckedLinks (line 46) | function downloadCheckedLinks() {
function filterLinks (line 58) | function filterLinks() {
FILE: _archive/mv2/api/downloads/download_manager/background.js
function drawLine (line 17) | function drawLine(ctx, x1, y1, x2, y2) {
function drawProgressArc (line 26) | function drawProgressArc(ctx, startAngle, endAngle) {
function drawUnknownProgressSpinner (line 36) | function drawUnknownProgressSpinner(ctx) {
function drawProgressSpinner (line 47) | function drawProgressSpinner(ctx, stage) {
function drawArrow (line 53) | function drawArrow(ctx) {
function drawDangerBadge (line 75) | function drawDangerBadge(ctx) {
function drawPausedBadge (line 91) | function drawPausedBadge(ctx) {
function drawCompleteBadge (line 105) | function drawCompleteBadge(ctx) {
function drawIcon (line 116) | function drawIcon(side, options) {
function maybeOpen (line 140) | function maybeOpen(id) {
function setBrowserActionIcon (line 155) | function setBrowserActionIcon(options) {
function pollProgress (line 168) | function pollProgress() {
function isNumber (line 221) | function isNumber(n) {
function openWhenComplete (line 235) | function openWhenComplete(downloadId) {
FILE: _archive/mv2/api/downloads/download_manager/popup.js
function pointInElement (line 5) | function pointInElement(p, elem) {
function setLastOpened (line 12) | function setLastOpened() {
function loadI18nMessages (line 17) | function loadI18nMessages() {
function getTextWidth (line 63) | function getTextWidth(s) {
function formatDateTime (line 69) | function formatDateTime(date) {
function formatBytes (line 86) | function formatBytes(n) {
function formatTimeLeft (line 102) | function formatTimeLeft(openWhenComplete, ms) {
function ratchetWidth (line 123) | function ratchetWidth(w) {
function ratchetHeight (line 128) | function ratchetHeight(h) {
function binarySearch (line 133) | function binarySearch(array, target, cmp) {
function arrayFrom (line 149) | function arrayFrom(seq) {
function DownloadItem (line 153) | function DownloadItem(data) {
function setByExtension (line 335) | function setByExtension(show) {
FILE: _archive/mv2/api/downloads/download_open/background.js
function getOpeningIds (line 5) | function getOpeningIds() {
function setOpeningIds (line 15) | function setOpeningIds(ids) {
FILE: _archive/mv2/api/eventPage/basic/background.js
function sendMessage (line 10) | function sendMessage() {
FILE: _archive/mv2/api/eventPage/basic/content.js
function addButton (line 7) | function addButton(name, cb) {
function log (line 15) | function log(str) {
FILE: _archive/mv2/api/fileSystemProvider/archive/background.js
function Volume (line 17) | function Volume(entry, metadata, openedFiles) {
function onUnmountRequested (line 35) | function onUnmountRequested(options, onSuccess, onError) {
function onGetMetadataRequested (line 56) | function onGetMetadataRequested(options, onSuccess, onError) {
function onReadDirectoryRequested (line 67) | function onReadDirectoryRequested(options, onSuccess, onError) {
function onOpenFileRequested (line 99) | function onOpenFileRequested(options, onSuccess, onError) {
function onCloseFileRequested (line 111) | function onCloseFileRequested(options, onSuccess, onError) {
function onReadFileRequested (line 122) | function onReadFileRequested(options, onSuccess, onError) {
function saveState (line 145) | function saveState() {
function restoreState (line 157) | function restoreState(fileSystemId, onSuccess, onError) {
function readMetadataFromFile (line 185) | function readMetadataFromFile(entry, onSuccess, onError) {
FILE: _archive/mv2/api/fileSystemProvider/basic/background.js
function onGetMetadataRequested (line 30) | function onGetMetadataRequested(options, onSuccess, onError) {
function onReadDirectoryRequested (line 37) | function onReadDirectoryRequested(options, onSuccess, onError) {
function onOpenFileRequested (line 65) | function onOpenFileRequested(options, onSuccess, onError) {
function onCloseFileRequested (line 74) | function onCloseFileRequested(options, onSuccess, onError) {
function onReadFileRequested (line 83) | function onReadFileRequested(options, onSuccess, onError) {
function onMountRequested (line 105) | function onMountRequested(onSuccess, onError) {
function onUnmountRequested (line 119) | function onUnmountRequested(options, onSuccess, onError) {
FILE: _archive/mv2/api/fontSettings/js/cr.js
function exportPath (line 27) | function exportPath(name, opt_object, opt_objectToExportTo) {
function dispatchPropertyChange (line 51) | function dispatchPropertyChange(target, propertyName, newValue, oldValue) {
function getAttributeName (line 65) | function getAttributeName(jsName) {
function getGetter (line 100) | function getGetter(name, kind) {
function getSetter (line 131) | function getSetter(name, kind, opt_setHook) {
function defineProperty (line 186) | function defineProperty(obj, name, opt_kind, opt_setHook) {
function createUid (line 207) | function createUid() {
function getUid (line 217) | function getUid(item) {
function dispatchSimpleEvent (line 233) | function dispatchSimpleEvent(target, type, opt_bubbles, opt_cancelable) {
function define (line 260) | function define(name, fun) {
function addSingletonGetter (line 280) | function addSingletonGetter(ctor) {
function initialize (line 289) | function initialize() {
FILE: _archive/mv2/api/fontSettings/js/cr/ui.js
function decorate (line 15) | function decorate(source, constr) {
function createElementHelper (line 31) | function createElementHelper(tagName, opt_bag) {
function define (line 63) | function define(tagNameOrFunction) {
function limitInputWidth (line 111) | function limitInputWidth(el, parentEl, min, opt_scale) {
function toCssPx (line 165) | function toCssPx(pixels) {
FILE: _archive/mv2/api/fontSettings/js/cr/ui/overlay.js
function getTopOverlay (line 16) | function getTopOverlay() {
function globalInitialization (line 24) | function globalInitialization() {
function setMaxHeightAllPages (line 45) | function setMaxHeightAllPages() {
function setupOverlay (line 57) | function setupOverlay(overlay) {
FILE: _archive/mv2/api/fontSettings/options.js
function $ (line 11) | function $(id) {
FILE: _archive/mv2/api/fontSettings/slider.js
function Slider (line 21) | function Slider(container, value, min, max, opt_onChange) {
FILE: _archive/mv2/api/history/historyOverride/logic.js
function constructHistory (line 11) | function constructHistory(historyItems) {
FILE: _archive/mv2/api/history/showHistory/typedUrls.js
function onAnchorClick (line 7) | function onAnchorClick(event) {
function buildPopupDom (line 17) | function buildPopupDom(divName, data) {
function buildTypedUrlList (line 38) | function buildTypedUrlList(divName) {
FILE: _archive/mv2/api/i18n/cld/background.js
function refreshLanguage (line 6) | function refreshLanguage() {
FILE: _archive/mv2/api/i18n/getMessage/popup.js
function setChildTextNode (line 5) | function setChildTextNode(elementId, text) {
function init (line 9) | function init() {
function getAcceptLanguages (line 13) | function getAcceptLanguages() {
FILE: _archive/mv2/api/idle/idle_simple/history.js
function renderState (line 8) | function renderState(state, time) {
function renderItem (line 23) | function renderItem(state, time, parent) {
function checkState (line 38) | function checkState() {
function renderHistory (line 65) | function renderHistory() {
FILE: _archive/mv2/api/messaging/timer/popup.js
function setChildTextNode (line 5) | function setChildTextNode(elementId, text) {
function testMessage (line 10) | function testMessage() {
function testConnect (line 30) | function testConnect() {
FILE: _archive/mv2/api/nativeMessaging/app/main.js
function appendMessage (line 16) | function appendMessage(text) {
function updateUiState (line 20) | function updateUiState() {
function sendNativeMessage (line 32) | function sendNativeMessage() {
function onNativeMessage (line 38) | function onNativeMessage(message) {
function onDisconnected (line 42) | function onDisconnected() {
function connect (line 48) | function connect() {
FILE: _archive/mv2/api/notifications/background.js
function show (line 10) | function show() {
FILE: _archive/mv2/api/notifications/options.js
function ghost (line 9) | function ghost(isDeactivated) {
FILE: _archive/mv2/api/pageAction/set_icon/background.js
function draw (line 53) | function draw(starty, startx) {
FILE: _archive/mv2/api/permissions/extension-questions/popup.js
function makeRequest (line 24) | function makeRequest(callback) {
function renderQuestions (line 34) | function renderQuestions(data) {
FILE: _archive/mv2/api/power/background.js
function loadSavedState (line 23) | function loadSavedState(callback) {
function setState (line 40) | function setState(newState) {
FILE: _archive/mv2/api/preferences/allowThirdPartyCookies/popup.js
function $ (line 8) | function $(id) {
function settingIsControllable (line 18) | function settingIsControllable(levelOfControl) {
function updateUI (line 29) | function updateUI(settings) {
function updateUIFromGet (line 52) | function updateUIFromGet(settings) {
function updateUIFromOnChange (line 66) | function updateUIFromOnChange(settings) {
function init (line 74) | function init() {
function setPrefValue (line 102) | function setPrefValue(enabled, incognito) {
function setUseSeparateIncognitoSettings (line 114) | function setUseSeparateIncognitoSettings(value) {
FILE: _archive/mv2/api/preferences/enableReferrer/popup.js
function $ (line 8) | function $(id) {
function settingIsControllable (line 18) | function settingIsControllable(levelOfControl) {
function updateUI (line 29) | function updateUI(settings) {
function updateUIFromGet (line 52) | function updateUIFromGet(settings) {
function updateUIFromOnChange (line 66) | function updateUIFromOnChange(settings) {
function init (line 74) | function init() {
function setPrefValue (line 102) | function setPrefValue(enabled, incognito) {
function setUseSeparateIncognitoSettings (line 114) | function setUseSeparateIncognitoSettings(value) {
FILE: _archive/mv2/api/printing/printers.js
function onPrintButtonClicked (line 5) | function onPrintButtonClicked(printerId, dpi) {
function createPrintButton (line 47) | function createPrintButton(onClicked) {
function createPrintersTable (line 54) | function createPrintersTable() {
FILE: _archive/mv2/api/printingMetrics/print_jobs.js
function showPrintJobTable (line 5) | function showPrintJobTable() {
FILE: _archive/mv2/api/processes/process_monitor/popup.js
function init (line 6) | function init() {
function displayProcessInfo (line 35) | function displayProcessInfo(process, table) {
FILE: _archive/mv2/api/processes/show_tabs/popup.js
function init (line 6) | function init() {
function displaySameProcessTabs (line 26) | function displaySameProcessTabs(selectedTab, processId, outputDiv) {
function displayTabInfo (line 53) | function displayTabInfo(windowId, tab, outputDiv) {
function showTab (line 64) | function showTab(origWindow, windowId, tabId) {
FILE: _archive/mv2/api/storage/stylizr/options.js
function saveChanges (line 27) | function saveChanges() {
function loadChanges (line 42) | function loadChanges() {
function reset (line 53) | function reset() {
function message (line 63) | function message(msg) {
FILE: _archive/mv2/api/tabCapture/eventPage.js
function playCapturedStream (line 9) | function playCapturedStream(stream) {
function testCapture (line 22) | function testCapture() {
function testGetMediaStreamId (line 45) | function testGetMediaStreamId() {
FILE: _archive/mv2/api/tabCapture/options.js
function saveOption (line 17) | function saveOption(){
FILE: _archive/mv2/api/tabCapture/receiver.js
function shutdownReceiver (line 9) | function shutdownReceiver() {
FILE: _archive/mv2/api/tabs/inspector/jstemplate_compiled.js
function createElement (line 18) | function createElement(tagName, owner, opt_position, opt_size, opt_noApp...
function createTextNode (line 41) | function createTextNode(value, owner) {
function ownerDocument (line 57) | function ownerDocument(node) {
function px (line 67) | function px(numPixels) {
function setPosition (line 77) | function setPosition(element, point) {
function setSize (line 90) | function setSize(element, size) {
function displayNone (line 102) | function displayNone(node) {
function displayDefault (line 111) | function displayDefault(node) {
function appendChild (line 121) | function appendChild(parent, child) {
function jsEval (line 137) | function jsEval(expr) {
function jsExec (line 158) | function jsExec(stmt) {
function jsEvalWith (line 181) | function jsEvalWith(expr, context) {
function nodeGetElementById (line 221) | function nodeGetElementById(node, elemId) {
function domGetAttribute (line 244) | function domGetAttribute(node, name) {
function domSetAttribute (line 255) | function domSetAttribute(node, name, value) {
function domRemoveAttribute (line 265) | function domRemoveAttribute(node, name) {
function domCloneNode (line 275) | function domCloneNode(node) {
function domClassName (line 287) | function domClassName(node) {
function domAddClass (line 297) | function domAddClass(node, className) {
function domRemoveClass (line 325) | function domRemoveClass(node, className) {
function domTestClass (line 346) | function domTestClass(node, className) {
function domInsertBefore (line 363) | function domInsertBefore(newChild, oldChild) {
function domAppendChild (line 374) | function domAppendChild(node, child) {
function domRemoveChild (line 385) | function domRemoveChild(node, child) {
function domReplaceChild (line 396) | function domReplaceChild(newChild, oldChild) {
function domRemoveNode (line 406) | function domRemoveNode(node) {
function domCreateTextNode (line 417) | function domCreateTextNode(doc, text) {
function domCreateElement (line 428) | function domCreateElement(doc, name) {
function domCreateAttribute (line 439) | function domCreateAttribute(doc, name) {
function domCreateComment (line 450) | function domCreateComment(doc, text) {
function domCreateDocumentFragment (line 460) | function domCreateDocumentFragment(doc) {
function domGetElementById (line 471) | function domGetElementById(doc, id) {
function windowSetInterval (line 483) | function windowSetInterval(win, fun, time) {
function windowClearInterval (line 494) | function windowClearInterval(win, id) {
function containsNode (line 504) | function containsNode(parent, child) {
function jsLength (line 523) | function jsLength(a) {
function copyProperties (line 540) | function copyProperties(to, from) {
function foreach (line 553) | function foreach(array, fn) {
function foreachin (line 570) | function foreachin(object, fn, opt_all) {
function arrayAppend (line 587) | function arrayAppend(a1, a2, opt_begin, opt_end) {
function stringTrim (line 603) | function stringTrim(str) {
function stringTrimLeft (line 615) | function stringTrimLeft(str) {
function stringTrimRight (line 627) | function stringTrimRight(str) {
function parseInt10 (line 638) | function parseInt10(s) {
function JsExprContext (line 693) | function JsExprContext(opt_data, opt_parent) {
function jstProcess (line 833) | function jstProcess(context, template) {
function JstProcessor (line 845) | function JstProcessor() {
function postProcessMultiple_ (line 1058) | function postProcessMultiple_(template, select, instanceStr) {
function postProcessSingle_ (line 1072) | function postProcessSingle_(template, select) {
function jstGetTemplate (line 1169) | function jstGetTemplate(name) {
FILE: _archive/mv2/api/tabs/inspector/tabs_api.js
function bootStrap (line 11) | function bootStrap() {
function isInt (line 21) | function isInt(i) {
function loadWindowList (line 25) | function loadWindowList() {
function updateTabData (line 45) | function updateTabData(id) {
function updateTab (line 54) | function updateTab(id){
function moveTabData (line 62) | function moveTabData(id) {
function moveTab (line 68) | function moveTab(id) {
function createTabData (line 76) | function createTabData(id) {
function createTab (line 86) | function createTab() {
function updateAll (line 101) | function updateAll() {
function moveAll (line 111) | function moveAll() {
function removeTab (line 122) | function removeTab(tabId) {
function appendToLog (line 132) | function appendToLog(logLine) {
function clearLog (line 138) | function clearLog() {
function refreshTab (line 179) | function refreshTab(tabId) {
function createWindow (line 214) | function createWindow() {
function refreshWindow (line 241) | function refreshWindow(windowId) {
function updateWindowData (line 255) | function updateWindowData(id) {
function updateWindow (line 274) | function updateWindow(id){
function removeWindow (line 282) | function removeWindow(windowId) {
function refreshSelectedTab (line 292) | function refreshSelectedTab(windowId) {
FILE: _archive/mv2/api/tabs/screenshot/screenshot.js
function setScreenshotUrl (line 5) | function setScreenshotUrl(url) {
FILE: _archive/mv2/api/tabs/zoom/background.js
function zoomChangeListener (line 10) | function zoomChangeListener(zoomChangeInfo) {
FILE: _archive/mv2/api/tabs/zoom/popup.js
function displayZoomLevel (line 22) | function displayZoomLevel(level) {
function zoomChangeListener (line 69) | function zoomChangeListener(zoomChangeInfo) {
function changeZoomByFactorDelta (line 75) | function changeZoomByFactorDelta(factorDelta) {
function doZoomIn (line 88) | function doZoomIn() {
function doZoomOut (line 92) | function doZoomOut() {
function doZoomDefault (line 96) | function doZoomDefault() {
function doSetMode (line 106) | function doSetMode() {
function doClose (line 139) | function doClose() {
FILE: _archive/mv2/api/topsites/basic/popup.js
function onAnchorClick (line 7) | function onAnchorClick(event) {
function buildPopupDom (line 14) | function buildPopupDom(mostVisitedURLs) {
FILE: _archive/mv2/api/topsites/magic8ball/newTab.js
function $ (line 5) | function $(id) {
function thumbnailsGotten (line 9) | function thumbnailsGotten(data) {
FILE: _archive/mv2/api/ttsEngine/console_tts_engine/console_tts_engine.js
function areNewOptions (line 11) | function areNewOptions(options) {
function getTtsElement (line 23) | function getTtsElement(element) {
function appendText (line 27) | function appendText(text) {
function logOptions (line 31) | function logOptions() {
function logUtterance (line 39) | function logUtterance(utterance, index, sendTtsEvent) {
FILE: _archive/mv2/api/water_alarm_notification/popup.js
function setAlarm (line 6) | function setAlarm(event) {
function clearAlarm (line 14) | function clearAlarm() {
FILE: _archive/mv2/api/webNavigation/basic/navigation_collector.js
function NavigationCollector (line 20) | function NavigationCollector() {
method completed (line 420) | get completed() {
method errored (line 429) | get errored() {
FILE: _archive/mv2/api/webview/comm_demo_app/app.js
function createWebView (line 15) | function createWebView(initScripts) {
function connectToExtension (line 92) | function connectToExtension(extensionId) {
function setUpExtensionHandlers (line 132) | function setUpExtensionHandlers() {
FILE: _archive/mv2/api/windows/merge_windows/background.js
function start (line 8) | function start(tab) {
function getWindows (line 12) | function getWindows(win) {
function getTabs (line 17) | function getTabs(tabs) {
function moveTabs (line 23) | function moveTabs(windows) {
FILE: _archive/mv2/extensions/app_launcher/popup.js
function $ (line 5) | function $(id) {
function getIconURL (line 10) | function getIconURL(app) {
function launchApp (line 24) | function launchApp(id) {
function addApp (line 30) | function addApp(appsDiv, app, selected) {
function reloadAppDisplay (line 59) | function reloadAppDisplay() {
function rebuildAppList (line 72) | function rebuildAppList(filter) {
function adjustWidthIfNeeded (line 92) | function adjustWidthIfNeeded(filter) {
function onSearchInput (line 104) | function onSearchInput() {
function compare (line 111) | function compare(a, b) {
function compareByName (line 115) | function compareByName(app1, app2) {
function changeSelection (line 120) | function changeSelection(newIndex) {
FILE: _archive/mv2/extensions/buildbot/bg.js
function updateBadgeOnErrorStatus (line 20) | function updateBadgeOnErrorStatus() {
function notifyStatusChange (line 26) | function notifyStatusChange(treeState, status) {
function getLastStatusTime (line 37) | function getLastStatusTime(callback, type) {
function updateTimeBadge (line 50) | function updateTimeBadge(timeDeltaInMs) {
function updateStatus (line 79) | function updateStatus(status) {
function requestStatus (line 119) | function requestStatus() {
function fetchTryJobResults (line 132) | function fetchTryJobResults(fullPatchset, builder, buildnumber, complete...
function fetchPatches (line 164) | function fetchPatches(issue, updatedCallback) {
function updateTryStatus (line 203) | function updateTryStatus(status) {
function fetchTryStatus (line 232) | function fetchTryStatus(username) {
function requestTryStatus (line 244) | function requestTryStatus() {
function main (line 267) | function main() {
FILE: _archive/mv2/extensions/buildbot/options.js
function main (line 12) | function main() {
FILE: _archive/mv2/extensions/buildbot/popup.js
function getClassForTryJobResult (line 14) | function getClassForTryJobResult(result) {
function filterOldTryJobs (line 48) | function filterOldTryJobs(tryJobs) {
function createTryJobAnchorTitle (line 65) | function createTryJobAnchorTitle(tryJob, fullTryJob) {
function createPatchsetStatusElement (line 98) | function createPatchsetStatusElement(patchset) {
function getLastFullPatchsetWithTryJobs (line 121) | function getLastFullPatchsetWithTryJobs(issue) {
function createTryStatusRow (line 135) | function createTryStatusRow(issue) {
function updateIssueDisplay (line 153) | function updateIssueDisplay(issue) {
function removeIssueDisplay (line 188) | function removeIssueDisplay(issueNumber) {
function addTryStatusRows (line 193) | function addTryStatusRows() {
function updateLKGR (line 197) | function updateLKGR(lkgr) {
function addBotStatusRow (line 202) | function addBotStatusRow(bot, className) {
function addBotStatusRows (line 229) | function addBotStatusRows() {
function fillStatusTable (line 257) | function fillStatusTable() {
function main (line 262) | function main() {
FILE: _archive/mv2/extensions/calendar/javascript/background.js
function hideWarning (line 9) | function hideWarning(done) {
function showWarning (line 15) | function showWarning() {
function openWarningPage (line 30) | function openWarningPage() {
FILE: _archive/mv2/extensions/catifier/event_page.js
function registerRules (line 18) | function registerRules() {
function setup (line 66) | function setup() {
FILE: _archive/mv2/extensions/chrome_search/background.js
function resetDefaultSuggestion (line 72) | function resetDefaultSuggestion() {
function updateDefaultSuggestion (line 80) | function updateDefaultSuggestion(text) {
function search (line 110) | function search(query, callback) {
function getUrl (line 135) | function getUrl(path, line) {
function getEntryUrl (line 143) | function getEntryUrl(entry) {
function navigate (line 150) | function navigate(url) {
FILE: _archive/mv2/extensions/constant_context/popup.js
function displayWords (line 5) | function displayWords() {
FILE: _archive/mv2/extensions/download_images/options.js
function setCheckbox (line 12) | function setCheckbox(data, checkbox) {
function storeOption (line 24) | function storeOption(optionName, optionValue) {
FILE: _archive/mv2/extensions/download_images/popup.js
function addImage (line 21) | function addImage(url) {
function setUp (line 42) | function setUp(array) {
FILE: _archive/mv2/extensions/email_this_page/background.js
function customMailtoUrl (line 5) | function customMailtoUrl() {
function executeMailto (line 13) | function executeMailto(tab_id, subject, body, selection) {
FILE: _archive/mv2/extensions/email_this_page/options.js
function toggle (line 7) | function toggle(radioButton) {
function main (line 19) | function main() {
FILE: _archive/mv2/extensions/fx/bg.js
function shouldPlay (line 108) | function shouldPlay(id) {
function didPlay (line 120) | function didPlay(id) {
function playSound (line 125) | function playSound(id, loop) {
function stopSound (line 157) | function stopSound(id) {
function soundLoadError (line 168) | function soundLoadError(audio, id) {
function soundLoaded (line 175) | function soundLoaded(audio, id) {
function loadSound (line 185) | function loadSound(file, id) {
function eatEvent (line 207) | function eatEvent(name) {
function soundEvent (line 216) | function soundEvent(event, name) {
function stopNavSound (line 251) | function stopNavSound() {
function playNavSound (line 258) | function playNavSound(id) {
function tabNavigated (line 264) | function tabNavigated(tabId, changeInfo, tab) {
function tabSelectionChanged (line 345) | function tabSelectionChan
Copy disabled (too large)
Download .json
Condensed preview — 2371 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,893K chars).
[
{
"path": ".allstar/binary_artifacts.yaml",
"chars": 123,
"preview": "# Ignore reason: Packed extension for demo purposes.\nignorePaths:\n - _archive/mv2/api/permissions/extension-questions.c"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 805,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n---\n\n⚠️ If you have ge"
},
{
"path": ".github/dependabot.yml",
"chars": 205,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"github-actions\"\n directory: \"/\"\n schedule:\n interval: \"weekly\"\n "
},
{
"path": ".github/workflows/lint.yml",
"chars": 213,
"preview": "name: CI\non: [push, pull_request]\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n "
},
{
"path": ".github/workflows/sample-list-generator.yml",
"chars": 692,
"preview": "name: Sample List Generator\non:\n push:\n branches:\n - main\n\ndefaults:\n run:\n working-directory: ./.repo/samp"
},
{
"path": ".gitignore",
"chars": 113,
"preview": "*~\n*.DS_store\nnode_modules\n# Temporary directory for debugging extension samples\n_debug\n_metadata\ndist\n**/*.swp \n"
},
{
"path": ".husky/pre-commit",
"chars": 16,
"preview": "npx lint-staged\n"
},
{
"path": ".prettierignore",
"chars": 39,
"preview": "_archive\nthird-party\nnode_modules\ndist\n"
},
{
"path": ".prettierrc.json",
"chars": 159,
"preview": "{\n \"printWidth\": 80,\n \"tabWidth\": 2,\n \"semi\": true,\n \"singleQuote\": true,\n \"trailingComma\": \"none\",\n \"bracketSpaci"
},
{
"path": ".repo/migrate-samples.js",
"chars": 1650,
"preview": "// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": ".repo/sample-list-generator/.gitignore",
"chars": 23,
"preview": "extension-samples.json\n"
},
{
"path": ".repo/sample-list-generator/README.md",
"chars": 3513,
"preview": "# Sample List Generator\n\n## Overview\n\nIt's a script that generates `./extension-samples.json` with the list of all the s"
},
{
"path": ".repo/sample-list-generator/extension-apis.json",
"chars": 50781,
"preview": "{\n \"_comment\": \"This file is autogenerated by running `npm run prepare-chrome-types`, do not edit.\",\n \"accessibilityFe"
},
{
"path": ".repo/sample-list-generator/package.json",
"chars": 611,
"preview": "{\n \"name\": \"sample-list-generator\",\n \"version\": \"1.0.0\",\n \"scripts\": {\n \"start\": \"ts-node src/index.ts\",\n \"prep"
},
{
"path": ".repo/sample-list-generator/src/constants.ts",
"chars": 415,
"preview": "export type FolderTypes = \"API_SAMPLE\" | \"FUNCTIONAL_SAMPLE\";\n\n// Define all available folders for samples\nexport const "
},
{
"path": ".repo/sample-list-generator/src/index.ts",
"chars": 352,
"preview": "import path from 'path';\nimport fs from 'fs/promises';\nimport { getAllSamples } from './libs/sample-collector';\n\nconst s"
},
{
"path": ".repo/sample-list-generator/src/libs/api-detector.ts",
"chars": 5522,
"preview": "import {\n ApiItem,\n ApiItemWithType,\n ApiTypeResult,\n ExtensionApiMap\n} from '../types';\nimport * as babel from '@ba"
},
{
"path": ".repo/sample-list-generator/src/libs/api-loader.ts",
"chars": 921,
"preview": "import path from 'path';\nimport fs from 'fs';\nimport type { ExtensionApiMap } from '../types';\nimport { isFileExistsSync"
},
{
"path": ".repo/sample-list-generator/src/libs/sample-collector.ts",
"chars": 2283,
"preview": "import path from 'path';\nimport fs from 'fs/promises';\nimport { AVAILABLE_FOLDERS, REPO_BASE_URL } from '../constants';\n"
},
{
"path": ".repo/sample-list-generator/src/prepare-chrome-types.ts",
"chars": 2100,
"preview": "import fetch from 'node-fetch';\nimport path from 'path';\nimport fs from 'fs/promises';\nimport { ExtensionApiMap } from '"
},
{
"path": ".repo/sample-list-generator/src/types.ts",
"chars": 846,
"preview": "import type { FolderTypes } from './constants';\n\nexport interface ApiItem {\n namespace: string;\n propertyName: string;"
},
{
"path": ".repo/sample-list-generator/src/utils/filesystem.ts",
"chars": 1268,
"preview": "import fs from 'fs/promises';\nimport { accessSync } from 'fs';\nimport path from 'path';\n\nexport const getAllFiles = asyn"
},
{
"path": ".repo/sample-list-generator/src/utils/manifest.ts",
"chars": 1502,
"preview": "import fs from 'fs/promises';\nimport { dirname } from 'path';\nimport { ManifestData, LocaleData } from '../types';\nconst"
},
{
"path": ".repo/sample-list-generator/test/api-detector/api-detector.test.ts",
"chars": 5738,
"preview": "import { describe, it, beforeEach } from 'mocha';\nimport assert from 'assert';\nimport sinon from 'sinon';\nimport {\n get"
},
{
"path": "CONTRIBUTING.md",
"chars": 2204,
"preview": "# How to Contribute\n\nWe'd love to accept your patches and contributions to this project.\n\n## Before you begin\n\n### Sign "
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README-template.md",
"chars": 1013,
"preview": "_To create a README for your sample_\n\n1. _Copy this file to your sample folder._\n1. _Enter the requested information bel"
},
{
"path": "README.md",
"chars": 1407,
"preview": "# Chrome Extensions samples\n\nOfficial samples for Chrome Extensions and the Chrome Apps platform. (Chrome Apps are depre"
},
{
"path": "_archive/apps/README.md",
"chars": 62640,
"preview": "# Chrome Apps samples\n\nOfficial samples for deprecated Chrome Apps platform. If you want to learn about the platform, yo"
},
{
"path": "_archive/apps/libraries/gapi-chrome-apps-lib/LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "_archive/apps/libraries/gapi-chrome-apps-lib/README.md",
"chars": 864,
"preview": "# Google API javascript client library loader for Chrome Packaged Apps\n\nProvides the Google API javascript client 'gapi'"
},
{
"path": "_archive/apps/libraries/gapi-chrome-apps-lib/gapi-chrome-apps.js",
"chars": 4258,
"preview": "/**\n * Copyright 2013 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"Licens"
},
{
"path": "_archive/apps/samples/analytics/README.md",
"chars": 1140,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/anfhlhgdnbpnglngmblhkdifdbcepjce\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/analytics/background.js",
"chars": 751,
"preview": "// Copyright 2013 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "_archive/apps/samples/analytics/google-analytics-bundle.js",
"chars": 51122,
"preview": "(function() { var g,aa=aa||{},h=this,ba=function(){},ca=function(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof "
},
{
"path": "_archive/apps/samples/analytics/main.html",
"chars": 647,
"preview": "<!doctype html>\n<html>\n <head>\n <title>Analytics sample app</title>\n </head>\n <body>\n <div>\n <button id=\"c"
},
{
"path": "_archive/apps/samples/analytics/main.js",
"chars": 1886,
"preview": "// Copyright 2013 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
},
{
"path": "_archive/apps/samples/analytics/manifest.json",
"chars": 363,
"preview": "{\n \"name\": \"Analytics Sample App\",\n \"description\": \"An example app using Google Analytics without the Closure library\""
},
{
"path": "_archive/apps/samples/analytics/sample_support_metadata.json",
"chars": 114,
"preview": "{\n \"sample\": \"analytics\",\n \"files_with_snippets\": [ ],\n \"android\": {\"works\": true},\n \"ios\": {\"works\": true}\n}\n"
},
{
"path": "_archive/apps/samples/appengine-channelapi/README.md",
"chars": 2133,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/alieplnmdkoekpkepkfgickpmhhabfkl\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/README.md",
"chars": 289,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/alieplnmdkoekpkepkfgickpmhhabfkl\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/channel_in_a_webview.js",
"chars": 1402,
"preview": "(function (exports) {\n\n function ChannelInAWebview(rootUrl) {\n this.webview = document.createElement('webview');\n "
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/game.js",
"chars": 4165,
"preview": "\nROOT = 'http:/localhost:8080';\n\nwindow.addEventListener('DOMContentLoaded', init);\n\nfunction init() {\n var xhr = new X"
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/index.css",
"chars": 1317,
"preview": " body {\n font-family: 'Helvetica';\n }\n\n #board {\n width:152px; \n height:"
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/index.html",
"chars": 1834,
"preview": "<html>\n <head>\n <link rel=\"stylesheet\" href=\"index.css\">\n </head>\n <body>\n <script type='text/javascript' src"
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/main.js",
"chars": 414,
"preview": "/**\n * Listens for the app launching then creates the window\n *\n * @see https://developer.chrome.com/docs/extensions/ref"
},
{
"path": "_archive/apps/samples/appengine-channelapi/app/manifest.json",
"chars": 250,
"preview": "{\n \"manifest_version\": 2,\n \"name\": \"Appengine Channel API Sample\",\n \"version\": \"2\",\n \"minimum_chrome_version\": \"27\","
},
{
"path": "_archive/apps/samples/appengine-channelapi/appengine/app.yaml",
"chars": 200,
"preview": "application: moishetest\r\nversion: 1\r\nruntime: python\r\napi_version: 1\r\n\r\nhandlers:\r\n- url: /static\r\n static_dir: static\r"
},
{
"path": "_archive/apps/samples/appengine-channelapi/appengine/chatactoe.py",
"chars": 5106,
"preview": "#!/usr/bin/python2.4\n#\n# Copyright 2010 Google Inc. All Rights Reserved.\n\n# pylint: disable-msg=C6310\n\n\"\"\"Channel Tic Ta"
},
{
"path": "_archive/apps/samples/appengine-channelapi/appengine/static/channel_in_a_webview.html",
"chars": 1380,
"preview": "<html>\n<!-- This file goes into your web application folder, and is accessed through a webview -->\n <head>\n <scrip"
},
{
"path": "_archive/apps/samples/appsquare/README.md",
"chars": 1825,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/loimmcmmgnhkbppokdpfhlccebcpicld\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/appsquare/background.js",
"chars": 190,
"preview": "chrome.app.runtime.onLaunched.addListener(function() {\n chrome.app.window.create('main.html', {\n \tid: \"appSquareID\",\n "
},
{
"path": "_archive/apps/samples/appsquare/foursquare.js",
"chars": 2898,
"preview": "var foursquare = {};\n\n(function(api) {\n // See \"Pure AJAX application\" from\n // https://developer.foursquare.com/overv"
},
{
"path": "_archive/apps/samples/appsquare/loader.js",
"chars": 386,
"preview": "function ImageLoader(url) {\n this.url_ = url;\n}\n\nImageLoader.prototype.loadInto = function(imageNode) {\n var xhr = new"
},
{
"path": "_archive/apps/samples/appsquare/main.html",
"chars": 2351,
"preview": "<html>\n <head>\n <title>Foursquare Client</title>\n <style>\n body {\n background: #fff;\n font-fam"
},
{
"path": "_archive/apps/samples/appsquare/main.js",
"chars": 4510,
"preview": "function initUi() {\n foursquare.isSignedIn(function(isSignedIn) {\n if (isSignedIn) {\n document.body.classList.a"
},
{
"path": "_archive/apps/samples/appsquare/manifest.json",
"chars": 463,
"preview": "{\n \"name\": \"Sample of Foursquare integration\",\n \"version\": \"7.1\",\n \"manifest_version\": 2,\n \"minimum_chrome_version\":"
},
{
"path": "_archive/apps/samples/appview/README.md",
"chars": 548,
"preview": "# Appview\n\nThese samples show how to use the `<appview>` tag to embed other Chrome Apps\nwithin your Chrome App.\n\nAdd `ho"
},
{
"path": "_archive/apps/samples/appview/embedded-app/README.md",
"chars": 289,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/mighjnlldblaiimoaidiggecdkobklfe\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/appview/embedded-app/camera.html",
"chars": 241,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <style>\n body {\n margin: 0 auto;\n }\n video {\n height: 100%;\n wid"
},
{
"path": "_archive/apps/samples/appview/embedded-app/camera.js",
"chars": 178,
"preview": "navigator.webkitGetUserMedia({ video: true }, function(stream) {\n document.querySelector('video').src = URL.createObjec"
},
{
"path": "_archive/apps/samples/appview/embedded-app/default.html",
"chars": 314,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <style>\n body {\n background-color: #4CAF50;\n color: white;\n margin: 16"
},
{
"path": "_archive/apps/samples/appview/embedded-app/main.js",
"chars": 256,
"preview": "chrome.app.runtime.onEmbedRequested.addListener(function(request) {\n if (!request.data.message) {\n request.allow('de"
},
{
"path": "_archive/apps/samples/appview/embedded-app/manifest.json",
"chars": 315,
"preview": "{\n \"manifest_version\": 2,\n \"name\": \"Sample Appview Embedded\",\n \"description\": \"This sample shows how to allow your ap"
},
{
"path": "_archive/apps/samples/appview/host-app/README.md",
"chars": 289,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/gkmjlnhjcdognmniiadfdhdlgdocngda\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/appview/host-app/index.html",
"chars": 956,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <style>\n html, body {\n height: 100%;\n }\n body {\n margin: 0 auto;\n "
},
{
"path": "_archive/apps/samples/appview/host-app/index.js",
"chars": 1122,
"preview": "var container = document.querySelector('#container');\nvar logField = document.querySelector('#log');\nvar form = document"
},
{
"path": "_archive/apps/samples/appview/host-app/main.js",
"chars": 403,
"preview": "/**\n * Listens for the app launching then creates the window\n *\n * @see https://developer.chrome.com/docs/extensions/ref"
},
{
"path": "_archive/apps/samples/appview/host-app/manifest.json",
"chars": 295,
"preview": "{\n \"manifest_version\": 2,\n \"name\": \"Sample Appview Host\",\n \"description\": \"This sample shows how to request another a"
},
{
"path": "_archive/apps/samples/blink1/README.md",
"chars": 1418,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/kcpjgiicabigbjejdjnkflkdkjknkdch\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/blink1/blink1.js",
"chars": 3973,
"preview": "function Blink1(deviceId) {\n this.deviceId = deviceId;\n this.connection = null;\n};\n\nBlink1.VENDOR_ID = 0x27B8;\nBlink1."
},
{
"path": "_archive/apps/samples/blink1/color-picker.html",
"chars": 518,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <link rel=\"stylesheet\" href=\"style.css\">\n <script src=\"blink1.js\"></script>\n <"
},
{
"path": "_archive/apps/samples/blink1/color-picker.js",
"chars": 4750,
"preview": "(function() {\n var ui = {\n picker: null,\n r: null,\n g: null,\n b: null\n };\n\n var bg = undefined;\n\n functi"
},
{
"path": "_archive/apps/samples/blink1/main.js",
"chars": 462,
"preview": "var blink1 = undefined;\n\nfunction onAppWindowClosed() {\n if (blink1) {\n blink1.disconnect();\n }\n window.close();\n}"
},
{
"path": "_archive/apps/samples/blink1/manifest.json",
"chars": 350,
"preview": "{\n \"name\": \"blink(1)\",\n \"manifest_version\": 2,\n \"version\": \"0.3\",\n \"minimum_chrome_version\": \"39.0.2140.0\",\n \"app\":"
},
{
"path": "_archive/apps/samples/blink1/style.css",
"chars": 292,
"preview": "select {\n margin: 2px;\n width: 140px;\n}\n\ninput[type=range] {\n outline: none;\n -webkit-appearance: none;\n width: 140"
},
{
"path": "_archive/apps/samples/blink1/udev/61-blink1.rules",
"chars": 174,
"preview": "# Make the blink(1) accessible to plugdev via hidraw.\nSUBSYSTEM==\"hidraw\", SUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"27b8\", A"
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/README.md",
"chars": 720,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/kllncpgahapecnfkhefffabcemaknamh\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/background.js",
"chars": 258,
"preview": "chrome.app.runtime.onLaunched.addListener(function() {\n chrome.app.window.create('main.html', {\n 'innerBounds': {\n "
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/main.html",
"chars": 1165,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title>Bluetooth LE Battery Service Demo</title>\n <link rel=\"stylesheet\" type=\"text/css"
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/main.js",
"chars": 15300,
"preview": "var main = (function() {\n // GATT Battery Service UUIDs\n var BATTERY_SERVICE_UUID = '0000180f-0000-1000-8000-00805f9b"
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/manifest.json",
"chars": 408,
"preview": "{\n \"name\": \"Battery Service Demo\",\n \"description\": \"Battery Service Demo using chrome.bluetoothLowEnergy\",\n \"version\""
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/style.css",
"chars": 1740,
"preview": "body {\n margin: 0;\n overflow: hidden;\n height: 274px;\n}\n\n#header {\n padding: 10px 15px 5px 15px;\n background: #fafa"
},
{
"path": "_archive/apps/samples/bluetooth-samples/battery-service-demo/ui.js",
"chars": 4034,
"preview": "var UI = (function() {\n\n // Common functions used for tweaking UI elements.\n function UI() {\n }\n\n // Global instance"
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/README.md",
"chars": 695,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/dblimghcclaakknbpajckcamddhjaaai\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/background.js",
"chars": 258,
"preview": "chrome.app.runtime.onLaunched.addListener(function() {\n chrome.app.window.create('main.html', {\n 'innerBounds': {\n "
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/main.html",
"chars": 2015,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title>Bluetooth LE Device Information Service Demo</title>\n <link rel=\"stylesheet\" typ"
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/main.js",
"chars": 14323,
"preview": "var main = (function() {\n // GATT Device Information Service UUIDs\n var DEVICE_INFO_SERVICE_UUID = '0000180a-0000"
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/manifest.json",
"chars": 422,
"preview": "{\n \"name\": \"Device Information Service Demo\",\n \"description\": \"Device Information Demo using chrome.bluetoothLowEnergy"
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/style.css",
"chars": 1411,
"preview": "body {\n margin: 0;\n overflow: hidden;\n}\n\n#header {\n padding: 10px 15px 5px 15px;\n background: #fafafa;\n box-shadow:"
},
{
"path": "_archive/apps/samples/bluetooth-samples/device-info-demo/ui.js",
"chars": 5048,
"preview": "var UI = (function() {\n\n // Common functions used for tweaking UI elements.\n function UI() {\n }\n\n // Global instance"
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/README.md",
"chars": 663,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/nmlcgjldnboapnjdmllfcdenlljfjanm\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/background.js",
"chars": 258,
"preview": "chrome.app.runtime.onLaunched.addListener(function() {\n chrome.app.window.create('main.html', {\n 'innerBounds': {\n "
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/main.html",
"chars": 1764,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <title>Bluetooth LE Heart Rate Monitor</title>\n <link rel=\"stylesheet\" type=\"text/css\" "
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/main.js",
"chars": 20020,
"preview": "var main = (function() {\n // GATT Heart Rate Service UUIDs\n var HEART_RATE_SERVICE_UUID = '0000180d-0000-1000-80"
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/manifest.json",
"chars": 436,
"preview": "{\n \"name\": \"Heart Rate Service Demo\",\n \"description\": \"Heart Rate Monitor Demo using chrome.bluetoothLowEnergy\",\n \"ve"
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/style.css",
"chars": 1846,
"preview": "body {\n margin: 0;\n overflow: hidden;\n}\n\n#header {\n padding: 10px 15px 5px 15px;\n background: #fafafa;\n box-shadow:"
},
{
"path": "_archive/apps/samples/bluetooth-samples/heart-rate-sensor/ui.js",
"chars": 4585,
"preview": "var UI = (function() {\n\n // Common functions used for tweaking UI elements.\n function UI() {\n }\n\n // Global instance"
},
{
"path": "_archive/apps/samples/calculator/README.md",
"chars": 808,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/pelimflkpjiicnajdjcmekpioacmahkh\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/calculator/calculator.html",
"chars": 1831,
"preview": "<html>\n\t<head>\n\t\t<title>Calculator</title>\n\t\t<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />\n\t\t<script src=\"j"
},
{
"path": "_archive/apps/samples/calculator/controller.js",
"chars": 66,
"preview": "$(document).ready(function () {\n new View(new Calculator());\n});\n"
},
{
"path": "_archive/apps/samples/calculator/main.js",
"chars": 560,
"preview": "/**\n * Copyright (c) 2012 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-sty"
},
{
"path": "_archive/apps/samples/calculator/manifest.json",
"chars": 383,
"preview": "{\n \"name\": \"Calculator\",\n \"description\": \"A simple calculator.\",\n \"manifest_version\": 2,\n \"minimum_chrome_version\": "
},
{
"path": "_archive/apps/samples/calculator/model.js",
"chars": 3216,
"preview": "function Calculator() {\n this.operatorNeedsReset = true;\n this.operandNeedsReset = true;\n this.accumulatorNeedsReset "
},
{
"path": "_archive/apps/samples/calculator/sample_support_metadata.json",
"chars": 229,
"preview": "{\n \"sample\": \"calculator\",\n \"files_with_snippets\": [ ],\n \"android\": {\"works\": true, \"comments\": \"Visual issues caused"
},
{
"path": "_archive/apps/samples/calculator/style.css",
"chars": 3397,
"preview": "html {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\nbody {\n margin: 0px;\n padding:"
},
{
"path": "_archive/apps/samples/calculator/tests/calculator_test.html",
"chars": 1136,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <title>Calcu"
},
{
"path": "_archive/apps/samples/calculator/tests/calculator_test.js",
"chars": 4703,
"preview": "$(document).ready(function() {\n\n module(\"Initialize and Reset Registers\");\n\n test(\"Basic Initialization\", function()"
},
{
"path": "_archive/apps/samples/calculator/view.js",
"chars": 5921,
"preview": "var operators = ['+', '-', '/', '*'];\n\nvar values = { 'one' : 1,\n 'two' : 2,\n 'three' : "
},
{
"path": "_archive/apps/samples/camera-capture/README.md",
"chars": 774,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/ilefapmpngkdnnllcnlcjffipbolhklf\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/camera-capture/app.js",
"chars": 3556,
"preview": "/*\nCopyright 2012 Google Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file"
},
{
"path": "_archive/apps/samples/camera-capture/background.js",
"chars": 409,
"preview": "/**\n * Listens for the app launching then creates the window\n *\n * @see https://developer.chrome.com/docs/extensions/ref"
},
{
"path": "_archive/apps/samples/camera-capture/index.html",
"chars": 1308,
"preview": "<html>\n<head>\n<style>\n body {\n background: white;\n display: -webkit-flex;\n -webkit-justify-content: center;\n "
},
{
"path": "_archive/apps/samples/camera-capture/manifest.json",
"chars": 269,
"preview": "{\n \"name\": \"Camera Capture Sample\",\n \"version\": \"2.2\",\n \"manifest_version\": 2,\n \"icons\": {\n \"16\": \"camera.png\",\n "
},
{
"path": "_archive/apps/samples/clock/README.md",
"chars": 713,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/lhfiglpmnendbchimlikaeachppfonmm\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/clock/alarm.js",
"chars": 2341,
"preview": "Alarm = function(id, name, hour, minute, on) {\n\tthis.id = id;\n\tthis.name = name;\n\tthis.hour = hour;\n\tthis.minute = minut"
},
{
"path": "_archive/apps/samples/clock/clock.js",
"chars": 7825,
"preview": "Clock = function(id, offset) {\n\n\tthis.config = {\n\t\tcontainer: {height: 240, width: 240},\n\t\tface: {color: '#424240', alph"
},
{
"path": "_archive/apps/samples/clock/index.html",
"chars": 2533,
"preview": "<!DOCTYPE html>\n<html>\n\t<head>\n\t\t<title>World Clock</title>\n\n\t\t<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">\n"
},
{
"path": "_archive/apps/samples/clock/lib/tipTipv13/jquery.tipTip.js",
"chars": 6871,
"preview": " /*\n * TipTip\n * Copyright 2010 Drew Wilson\n * www.drewwilson.com\n * code.drewwilson.com/entry/tiptip-jquery-plugin\n *\n "
},
{
"path": "_archive/apps/samples/clock/lib/tipTipv13/jquery.tipTip.minified.js",
"chars": 5251,
"preview": " /*\n * TipTip\n * Copyright 2010 Drew Wilson\n * www.drewwilson.com\n * code.drewwilson.com/entry/tiptip-jquery-plugin\n *\n "
},
{
"path": "_archive/apps/samples/clock/lib/tipTipv13/tipTip.css",
"chars": 2432,
"preview": "/* TipTip CSS - Version 1.2 */\n\n#tiptip_holder {\n\tdisplay: none;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tz-index: 99999"
},
{
"path": "_archive/apps/samples/clock/main.js",
"chars": 548,
"preview": "/**\n * Copyright (c) 2012 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-sty"
},
{
"path": "_archive/apps/samples/clock/manifest.json",
"chars": 429,
"preview": "{\n\t\"name\": \"World Clock\",\n\t\"version\": \"0.1.6\",\n\t\"manifest_version\": 2,\n\t\"minimum_chrome_version\": \"23\",\n\t\"description\": "
},
{
"path": "_archive/apps/samples/clock/script.js",
"chars": 15898,
"preview": "var local;\nvar local_class;\nvar clocks = {};\nvar alarms = {};\nvar alarm_clocks = {};\n\nvar base_url = 'http://api.worldwe"
},
{
"path": "_archive/apps/samples/clock/stopwatch.js",
"chars": 10093,
"preview": "Stopwatch = function() {\n\tthis.config = {\n\t\tcontainer: {height: 250, width: 250},\n\t\tface: {color: '#424240', alpha: 1, r"
},
{
"path": "_archive/apps/samples/clock/style.css",
"chars": 8647,
"preview": "html {\n position: fixed;\n width: 100%;\n height: 100%;\n -webkit-app-region: drag;\n}\n\ninput, button, .menu-item, .butt"
},
{
"path": "_archive/apps/samples/clock/tests/clock_test.html",
"chars": 1315,
"preview": "<!DOCTYPE html>\n<html>\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <title>World"
},
{
"path": "_archive/apps/samples/clock/tests/clock_test.js",
"chars": 1743,
"preview": "chrome = {};\nchrome.storage = {};\nchrome.storage.sync = {};\nstorage_get_called = false;\nstorage_set_called = false;\n\nchr"
},
{
"path": "_archive/apps/samples/clock/tests/lib/prototype.js",
"chars": 180828,
"preview": "/* Prototype JavaScript framework, version 1.7.1\n * (c) 2005-2010 Sam Stephenson\n *\n * Prototype is freely distributa"
},
{
"path": "_archive/apps/samples/clock/tests/lib/right.js",
"chars": 49008,
"preview": "/**\n * RightJS v2.3.1 - http://rightjs.org\n * Released under the terms of MIT license\n *\n * Copyright (C) 2008-2012 Niko"
},
{
"path": "_archive/apps/samples/clock/timer.js",
"chars": 6539,
"preview": "Timer = function() {\n\tthis.config = {\n\t\tcontainer: {height: 250, width: 250},\n\t\tface: {color: '#424240', alpha: 1, radiu"
},
{
"path": "_archive/apps/samples/context-menu/README.md",
"chars": 886,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/biknlgbccocnocjfclpedecpgopjokik\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/context-menu/a.html",
"chars": 308,
"preview": "<html>\n <head>\n <script src=\"a.js\"></script>\n <title>Window A</title>\n </head>\n <body>\n <h1>Window A</h1>\n "
},
{
"path": "_archive/apps/samples/context-menu/a.js",
"chars": 402,
"preview": "function log(message) {\n document.getElementById('log').textContent += message + '\\n';\n}\n\nchrome.contextMenus.onClicked"
},
{
"path": "_archive/apps/samples/context-menu/b.html",
"chars": 225,
"preview": "<html>\n <head>\n <script src=\"b.js\"></script>\n <title>Window B</title>\n </head>\n <body>\n <h1>Window B</h1>\n "
},
{
"path": "_archive/apps/samples/context-menu/b.js",
"chars": 401,
"preview": "function log(message) {\n document.getElementById('log').textContent += message + '\\n';\n}\n\nchrome.contextMenus.onClicked"
},
{
"path": "_archive/apps/samples/context-menu/main.js",
"chars": 2169,
"preview": "// Holds the data structure for all the context menus used in the app\nvar CONTEXT_MENU_CONTENTS = {\n forWindows : [\n "
},
{
"path": "_archive/apps/samples/context-menu/manifest.json",
"chars": 185,
"preview": "{\n \"manifest_version\": 2,\n \"name\": \"Context Menu Sample\",\n \"version\": \"4\",\n \"app\": {\n \"background\": {\n \"scri"
},
{
"path": "_archive/apps/samples/dart/README.md",
"chars": 871,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/pcbbhbaibaphjlbaoahmahgmncbdkeli\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/dart/clock.html",
"chars": 1054,
"preview": "<!DOCTYPE html>\n\n<!-- Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file\n for details. All r"
},
{
"path": "_archive/apps/samples/dart/compile.sh",
"chars": 66,
"preview": "#!/bin/bash\n\npub get\ndart2js -odart/clock.dart.js dart/clock.dart\n"
},
{
"path": "_archive/apps/samples/dart/css/clock.css",
"chars": 1046,
"preview": "/* Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file */\n/* for details. All rights reserved. Us"
},
{
"path": "_archive/apps/samples/dart/dart/balls.dart",
"chars": 4581,
"preview": "// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "_archive/apps/samples/dart/dart/clock.dart",
"chars": 4248,
"preview": "// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "_archive/apps/samples/dart/dart/clock.dart.precompiled.js",
"chars": 422625,
"preview": "// Generated by dart2js, the Dart to JavaScript compiler version: 1.1.1.\n// The code supports the following hooks:\n// da"
},
{
"path": "_archive/apps/samples/dart/dart/numbers.dart",
"chars": 4372,
"preview": "// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "_archive/apps/samples/dart/js/browser_dart_csp_safe.js",
"chars": 1390,
"preview": "// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "_archive/apps/samples/dart/js/main.js",
"chars": 377,
"preview": "/**\n * Listens for the app launching then creates the window\n *\n * @see https://developer.chrome.com/docs/extensions/ref"
},
{
"path": "_archive/apps/samples/dart/manifest.json",
"chars": 230,
"preview": "{\n \"manifest_version\": 2,\n \"name\": \"Hello Dart! Sample\",\n \"version\": \"2\",\n \"minimum_chrome_version\": \"23\",\n \"icons\""
},
{
"path": "_archive/apps/samples/dart/pubspec.yaml",
"chars": 67,
"preview": "name: dart-clock-packaged-app-sample\n\ndependencies:\n browser: any\n"
},
{
"path": "_archive/apps/samples/dart/sample_support_metadata.json",
"chars": 136,
"preview": "{\n \"sample\": \"dart\",\n \"files_with_snippets\": [ ],\n \"ios\": {\"works\": true, \"comments\": \"Visual issues caused by fixed-"
},
{
"path": "_archive/apps/samples/desktop-capture/README.md",
"chars": 797,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/mhkidniocjdaiddjckopkigjmjbadfji\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/desktop-capture/app.js",
"chars": 2530,
"preview": "/*\nCopyright 2014 Intel Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file "
},
{
"path": "_archive/apps/samples/desktop-capture/background.js",
"chars": 414,
"preview": "/**\n * Listens for the app launching then creates the window\n *\n * @see https://developer.chrome.com/docs/extensions/ref"
},
{
"path": "_archive/apps/samples/desktop-capture/index.html",
"chars": 1256,
"preview": "<html>\n<head>\n<style>\n body {\n background: white;\n display: -webkit-flex;\n -webkit-justify-content: center;\n "
},
{
"path": "_archive/apps/samples/desktop-capture/manifest.json",
"chars": 272,
"preview": "{\n \"name\": \"Desktop Capture Sample\",\n \"version\": \"2\",\n \"manifest_version\": 2,\n \"icons\": {\n \"16\": \"desktop.png\",\n "
},
{
"path": "_archive/apps/samples/dialog-element/README.md",
"chars": 1497,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/mikhnkopoddcomlgmcjgfnaccjhibiec\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/dialog-element/dialog.js",
"chars": 636,
"preview": "window.addEventListener(\"load\", function(e) {\n\tvar dialog = document.querySelector('#dialog1');\n\tdocument.querySelector("
},
{
"path": "_archive/apps/samples/dialog-element/index.html",
"chars": 756,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <title>Hello World</title>\n <link rel=\"stylesheet\" href="
},
{
"path": "_archive/apps/samples/dialog-element/main.js",
"chars": 655,
"preview": "/**\n * Listens for the app launching then creates the window\n *\n * @see https://developer.chrome.com/docs/extensions/ref"
},
{
"path": "_archive/apps/samples/dialog-element/manifest.json",
"chars": 187,
"preview": "{\n \"manifest_version\": 2,\n \"name\": \"Dialog Element Example\",\n \"version\": \"2\",\n \"minimum_chrome_version\": \"31\",\n \"ap"
},
{
"path": "_archive/apps/samples/dialog-element/styles.css",
"chars": 473,
"preview": "dialog {\n border: 1px solid rgba(0, 0, 0, 0.3);\n border-radius: 6px;\n box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);\n pad"
},
{
"path": "_archive/apps/samples/diff/README.md",
"chars": 1210,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/neifiophhpiohjlhiohlhlekkfokcepk\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/diff/css/editor.css",
"chars": 18523,
"preview": ".ace_editor {\n position: absolute;\n overflow: hidden;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Droid Sa"
},
{
"path": "_archive/apps/samples/diff/css/style.css",
"chars": 15503,
"preview": "/**\n * Copyright (c) 2012 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-sty"
},
{
"path": "_archive/apps/samples/diff/js/background.js",
"chars": 401,
"preview": "/**\n * Copyright (c) 2012 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-sty"
},
{
"path": "_archive/apps/samples/diff/js/diff.js",
"chars": 26167,
"preview": "/**\n * Copyright (c) 2012 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-sty"
},
{
"path": "_archive/apps/samples/diff/js/filesystem.js",
"chars": 13267,
"preview": "/**\n * Copyright (c) 2012 The Chromium Authors. All rights reserved.\n * Use of this source code is governed by a BSD-sty"
},
{
"path": "_archive/apps/samples/diff/lib/diff_match_patch.js",
"chars": 19199,
"preview": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=0.5;this.Match_Dis"
},
{
"path": "_archive/apps/samples/diff/lib/diff_match_patch_test.html",
"chars": 4979,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<!--\n Test Harness for diff_"
},
{
"path": "_archive/apps/samples/diff/lib/diff_match_patch_test.js",
"chars": 38310,
"preview": "/**\n * Test Harness for Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-ma"
},
{
"path": "_archive/apps/samples/diff/lib/diff_match_patch_uncompressed.js",
"chars": 76595,
"preview": "/**\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * "
},
{
"path": "_archive/apps/samples/diff/lib/jquery.activity-indicator.js",
"chars": 6951,
"preview": "/*!\n * NETEYE Activity Indicator jQuery Plugin\n *\n * Copyright (c) 2010 NETEYE GmbH\n * Licensed under the MIT license\n *"
},
{
"path": "_archive/apps/samples/diff/main.html",
"chars": 3869,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <t"
},
{
"path": "_archive/apps/samples/diff/manifest.json",
"chars": 628,
"preview": "{\n \"manifest_version\": 2,\n \"minimum_chrome_version\": \"23\",\n \"name\": \"Diff Tool\",\n \"description\": \"View diff and merg"
},
{
"path": "_archive/apps/samples/dojo/.gitignore",
"chars": 17,
"preview": "out\ntmp\ndojo.crx\n"
},
{
"path": "_archive/apps/samples/dojo/Markdown_1.0.1/License.text",
"chars": 1508,
"preview": "Copyright (c) 2004, John Gruber \n<http://daringfireball.net/> \nAll rights reserved.\n\nRedistribution and use in source "
},
{
"path": "_archive/apps/samples/dojo/Markdown_1.0.1/Markdown Readme.text",
"chars": 11075,
"preview": "Markdown\n========\n\nVersion 1.0.1 - Tue 14 Dec 2004\n\nby John Gruber \n<http://daringfireball.net/>\n\n\nIntroduction\n-------"
},
{
"path": "_archive/apps/samples/dojo/Markdown_1.0.1/Markdown.pl",
"chars": 35622,
"preview": "#!/usr/bin/perl\n\n#\n# Markdown -- A text-to-HTML conversion tool for web writers\n#\n# Copyright (c) 2004 John Gruber\n# <ht"
},
{
"path": "_archive/apps/samples/dojo/README.md",
"chars": 700,
"preview": "Dojo\n====\nThis directory contains a script (build.sh) to generate an \"one-app-to-rule-them-all\": an app that executes al"
},
{
"path": "_archive/apps/samples/dojo/build.sh",
"chars": 6856,
"preview": "#!/bin/bash\n\n# Subroutines\nfunction writeJS_header() {\n cat > ${BUILDDIR}/main.js <<EOF\nvar _dojo_apps={};\n\nfunction _d"
},
{
"path": "_archive/apps/samples/dojo/crxmake.sh",
"chars": 989,
"preview": "#!/bin/bash -e\n#\n# Purpose: Pack a Chromium extension directory into crx format\nif test $# -ne 2; then\n echo \"Usage: cr"
},
{
"path": "_archive/apps/samples/dojo/executable_list",
"chars": 374,
"preview": "frameless-window\nserial/adkjs/app\nanalytics\nappsquare\nbrowser-tag\ncalculator\ncamera-capture\ncontext-menu\ndiff\neval-in-if"
},
{
"path": "_archive/apps/samples/dojo/include/main.css",
"chars": 981,
"preview": "body {\n font-family: 'Open Sans', arial, sans-serif; \n font-size: 12px;\n}\n\n.apps {\n background-color: #E5E5E5;\n borde"
},
{
"path": "_archive/apps/samples/filesystem-access/README.md",
"chars": 698,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/ehbhjpchdgepkgjhfkhpkjdbnljedllm\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/filesystem-access/background.js",
"chars": 235,
"preview": "chrome.app.runtime.onLaunched.addListener(function(launchData) {\n chrome.app.window.create('index.html', {id:\"fileWin\","
},
{
"path": "_archive/apps/samples/filesystem-access/index.html",
"chars": 1795,
"preview": "<html>\n<head>\n<title>Filesystem Access Example</title>\n<style>\nbody {\n display: -webkit-flex;\n -webkit-flex-direction:"
},
{
"path": "_archive/apps/samples/filesystem-access/js/app.js",
"chars": 7311,
"preview": "/*\nCopyright 2012 Google Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file"
},
{
"path": "_archive/apps/samples/filesystem-access/js/dnd.js",
"chars": 1533,
"preview": "/*\nCopyright 2012 Google Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file"
},
{
"path": "_archive/apps/samples/filesystem-access/manifest.json",
"chars": 386,
"preview": "{\n \"name\": \"Filesystem Access Sample\",\n \"version\": \"2.1\",\n \"manifest_version\": 2,\n \"minimum_chrome_version\": \"31\",\n "
},
{
"path": "_archive/apps/samples/frameless-window/README.md",
"chars": 1204,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/hjjdaddngnaofnfjpajdcbdmkegiakec\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/frameless-window/background.js",
"chars": 314,
"preview": "chrome.app.runtime.onLaunched.addListener(function() {\n chrome.app.window.create(\"frameless_window.html\",\n { frame:"
},
{
"path": "_archive/apps/samples/frameless-window/frameless_window.html",
"chars": 615,
"preview": "<html>\n\n<head>\n\n<title>Frameless Window</title>\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />\n<script src="
},
{
"path": "_archive/apps/samples/frameless-window/frameless_window.js",
"chars": 1852,
"preview": "function updateCheckbox() {\n var top_checkbox = document.getElementById(\"top-box\");\n var bottom_checkbox = document.ge"
},
{
"path": "_archive/apps/samples/frameless-window/manifest.json",
"chars": 203,
"preview": "{\n \"name\": \"Frameless Window Sample\",\n \"description\": \"Chrome platform app.\",\n \"manifest_version\": 2,\n \"version\": \"0"
},
{
"path": "_archive/apps/samples/frameless-window/style.css",
"chars": 3159,
"preview": "html {\n margin: 0px;\n padding: 0px;\n overflow: hidden;\n}\n\nbody {\n margin: 0px;\n padding: 0px;\n}\n\n::-webkit-scrollba"
},
{
"path": "_archive/apps/samples/frameless-window/titlebar.js",
"chars": 3739,
"preview": "function closeWindow() {\n window.close();\n}\n\nfunction updateImageUrl(image_id, new_image_url) {\n var image = document."
},
{
"path": "_archive/apps/samples/gcm-notifications/README.md",
"chars": 716,
"preview": "<a target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/gpededflkpcoehfjpdecdkoiagajloin\">![Try it now in CWS"
},
{
"path": "_archive/apps/samples/gcm-notifications/background.js",
"chars": 1578,
"preview": "// Returns a new notification ID used in the notification.\r\nfunction getNotificationId() {\r\n var id = Math.floor(Math.r"
},
{
"path": "_archive/apps/samples/gcm-notifications/manifest.json",
"chars": 301,
"preview": "{\r\n \"name\": \"GCM Notifications\",\r\n \"description\": \"Chrome platform app.\",\r\n \"manifest_version\": 2,\r\n \"version\": \"0.1"
}
]
// ... and 2171 more files (download for full content)
About this extraction
This page contains the full source code of the GoogleChrome/chrome-extensions-samples GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2371 files (10.6 MB), approximately 2.9M tokens, and a symbol index with 3417 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.