1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5var port = null; 6 7var getKeys = function(obj){ 8 var keys = []; 9 for(var key in obj){ 10 keys.push(key); 11 } 12 return keys; 13} 14 15 16function appendMessage(text) { 17 document.getElementById('response').innerHTML += "<p>" + text + "</p>"; 18} 19 20function updateUiState() { 21 if (port) { 22 document.getElementById('connect-button').style.display = 'none'; 23 document.getElementById('input-text').style.display = 'block'; 24 document.getElementById('send-message-button').style.display = 'block'; 25 } else { 26 document.getElementById('connect-button').style.display = 'block'; 27 document.getElementById('input-text').style.display = 'none'; 28 document.getElementById('send-message-button').style.display = 'none'; 29 } 30} 31 32function sendNativeMessage() { 33 message = {"text": document.getElementById('input-text').value}; 34 port.postMessage(message); 35 appendMessage("Sent message: <b>" + JSON.stringify(message) + "</b>"); 36} 37 38function onNativeMessage(message) { 39 appendMessage("Received message: <b>" + JSON.stringify(message) + "</b>"); 40} 41 42function onDisconnected() { 43 appendMessage("Failed to connect: " + chrome.runtime.lastError.message); 44 port = null; 45 updateUiState(); 46} 47 48function connect() { 49 var hostName = "com.google.chrome.example.echo"; 50 appendMessage("Connecting to native messaging host <b>" + hostName + "</b>") 51 port = chrome.runtime.connectNative(hostName); 52 port.onMessage.addListener(onNativeMessage); 53 port.onDisconnect.addListener(onDisconnected); 54 updateUiState(); 55} 56 57document.addEventListener('DOMContentLoaded', function () { 58 document.getElementById('connect-button').addEventListener( 59 'click', connect); 60 document.getElementById('send-message-button').addEventListener( 61 'click', sendNativeMessage); 62 updateUiState(); 63}); 64