Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

angular-chrome-messaging

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-chrome-messaging

AngularJS interface for chrome.runtime messaging. Allows for remote procedure calls and data binding.

  • 0.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

angular-chrome-messaging

AngularJS interface for chrome.runtime messaging. Allows for remote procedure calls and data binding.

NOTE: With Facebook's introduction of the Flux Architecture, the two-way data binding provided by this module has become poor practice, so I wouldn't recommend it for most situations.

Overview

Google Chrome Extensions usually consist of:

  • A background script that continuously runs in the background
  • A content script that's loaded on pages you visit
  • A browser action or page action popup
  • An options page

angular-chrome-messaging allows:

  • Synchronizing data between separate scripts via two-way variable binding
  • Remote procedure calls

Usage:

Two-way binding

In the background script, publish the variable to be bound:

// background.js
/**
 * A service to hold global state and methods for the extension
 *
 * @param ChromeBindings
 * @constructor
 */
function BackgroundService(ChromeBindings) {
  this.user = {};
  // Publish the `user` object so it can be read & modified by other scripts
  ChromeBindings.publishVariable(this, 'user');
}
angular
  .module('ChromeMessagingExample')
  .service('BackgroundService', BackgroundService);

In another script (options/popup/contentscript), bind to the variable:

// options.js

function OptionsCtrl(ChromeBindings, ChromeMessaging) {
  // Bind `ChromeMessagingExample.user` to `OptionsCtrl.user`
  this.user = {};
  ChromeBindings
    .bindVariable('ChromeMessagingExample', 'user')
    .to(this, 'user');
}
angular
  .module('ChromeMessagingExampleOptions')
  .controller('OptionsCtrl', OptionsCtrl);
Remote procedure calls

Publish methods using angular.Module.run:

// background.js

angular.module('ChromeMessagingExample')
  .run(function (ChromeMessaging, BackgroundService) {
    /* Publish `BackgroundService.login` so it can be called from other scripts:
     *   ChromeMessaging.callMethod(
     *     'ChromeMessagingExample',
     *     'login',
     *     {email: 'test@example.com', name: 'Alice'}
     *   ).then(function (user) {
     *     console.log(user);
     *   });
     */
    ChromeMessaging.publish(
      'login',
      BackgroundService.login
    );

    ChromeMessaging.publish(
      'logout',
      BackgroundService.logout
    );
  });

Call them in from other scripts:

// options.js

function OptionsCtrl(ChromeBindings, ChromeMessaging) {
  var vm = this;

  vm.inputEmail = '';
  vm.inputName = '';

  vm.login = function () {
    ChromeMessaging.callMethod('ChromeMessagingExample', 'login', {
      email: vm.inputEmail,
      name: vm.inputName
    }).then(function (user) {
      console.log('Logged in as:', user);
    });
  };
}
angular
  .module('ChromeMessagingExampleOptions')
  .controller('OptionsCtrl', OptionsCtrl);

Example

To run the example:

  1. Clone this repository.

  2. Build the example:

    cd example
    npm install
    gulp build
    
  3. In Chrome, load example/build/ as an unpacked extension.

FAQs

Package last updated on 18 Feb 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc