- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / common / extensions / docs / examples / extensions / speak_selection / content_script.js
1 /**
2  * Copyright (c) 2011 The Chromium Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 var speakKeyStr;
8
9 function speakSelection() {
10   var focused = document.activeElement;
11   var selectedText;
12   if (focused) {
13     try {
14       selectedText = focused.value.substring(
15           focused.selectionStart, focused.selectionEnd);
16     } catch (err) {
17     }
18   }
19   if (selectedText == undefined) {
20     var sel = window.getSelection();
21     var selectedText = sel.toString();
22   }
23   chrome.extension.sendRequest({'speak': selectedText});
24 }
25
26 function onExtensionMessage(request) {
27   if (request['speakSelection'] != undefined) {
28     if (!document.hasFocus()) {
29       return;
30     }
31     speakSelection();
32   } else if (request['key'] != undefined) {
33     speakKeyStr = request['key'];
34   }
35 }
36
37 function initContentScript() {
38   chrome.extension.onRequest.addListener(onExtensionMessage);
39   chrome.extension.sendRequest({'init': true}, onExtensionMessage);
40
41   document.addEventListener('keydown', function(evt) {
42     if (!document.hasFocus()) {
43       return true;
44     }
45     var keyStr = keyEventToString(evt);
46     if (keyStr == speakKeyStr && speakKeyStr.length > 0) {
47       speakSelection();
48       evt.stopPropagation();
49       evt.preventDefault();
50       return false;
51     }
52     return true;
53   }, false);
54 }
55
56 initContentScript();