Skip to content

A native messaging host to handle SVN commands received from specific Chrome extension.

License

Notifications You must be signed in to change notification settings

Crowdstar/svn-agent-host

Repository files navigation

Build Status AppVeyor Build Status Latest Stable Version Latest Unstable Version License

A native messaging host to handle SVN commands received from specific Chrome extension.

The host program is built for Mac and Linux. For Windows users, you may have the host program installed in Ubuntu or some other Linux distribution through the Windows Subsystem for Linux.

This repository was for an internal project at Glu Mobile. We make part of the whole project open source to share our experience on

Run Tests

We use Docker to setup our test environments. You may run unit tests, coding style checks, and other tests on different versions of PHP and Subversion installations (prepared with Docker) using following commands:

PHP_VERSION=7.0    SVN_VERSION=1.8.19 ./bin/ci-on-linux.sh
PHP_VERSION=7.1    SVN_VERSION=1.9.9  ./bin/ci-on-linux.sh
PHP_VERSION=7.2    SVN_VERSION=1.10.3 ./bin/ci-on-linux.sh
PHP_VERSION=7.3    SVN_VERSION=1.11.0 ./bin/ci-on-linux.sh
PHP_VERSION=7.4    SVN_VERSION=1.13.0 ./bin/ci-on-linux.sh
# or, more specifically:
PHP_VERSION=7.1.19 SVN_VERSION=1.10.0 ./bin/ci-on-linux.sh

To run unit tests with current PHP and Subversion installation on your box, just execute following commands directly:

./bin/ci-on-osx.sh

Demo Code

Following demo code shows how to communicate with the native message host from a Chrome extension.

// content.js: a Content Script file.
window.addEventListener(
    "message",
    function (event) {
        chrome.runtime.sendMessage(
            event.data,
            function (response) {
                console.log('response from the background script', response);
            }
        );
    },
    false
);
window.postMessage({action: "create", data: {"path": "path/1"}}, "*");

// background.js: a Background Script file.
chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        chrome.runtime.sendNativeMessage(
            'com.glu.crowdstar.svnagent', // name of the native messaging host.
            request,
            function (response) {
                console.log("response from the native messaging host: ", response);
                // sendResponse(response);
            }
        );

        return true;
    }
);