| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This script contains privileged chrome extension related javascript APIs. | 5 // This script contains privileged chrome extension related javascript APIs. |
| 6 // It is loaded by pages whose URL has the chrome-extension protocol. | 6 // It is loaded by pages whose URL has the chrome-extension protocol. |
| 7 | 7 |
| 8 var chrome = chrome || {}; | 8 var chrome = chrome || {}; |
| 9 (function() { | 9 (function() { |
| 10 native function GetExtensionAPIDefinition(); | 10 native function GetExtensionAPIDefinition(); |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 var callback = function(errorMessage) { | 492 var callback = function(errorMessage) { |
| 493 if (errorMessage) | 493 if (errorMessage) |
| 494 chrome.experimental.tts.speakCompleted(requestId, errorMessage); | 494 chrome.experimental.tts.speakCompleted(requestId, errorMessage); |
| 495 else | 495 else |
| 496 chrome.experimental.tts.speakCompleted(requestId); | 496 chrome.experimental.tts.speakCompleted(requestId); |
| 497 }; | 497 }; |
| 498 chrome.Event.prototype.dispatch.apply(this, [text, options, callback]); | 498 chrome.Event.prototype.dispatch.apply(this, [text, options, callback]); |
| 499 }; | 499 }; |
| 500 } | 500 } |
| 501 | 501 |
| 502 // Get the platform from navigator.appVersion. |
| 503 function getPlatform() { |
| 504 var platforms = [ |
| 505 [/CrOS Touch/, "chromeos touch"], |
| 506 [/CrOS/, "chromeos"], |
| 507 [/Linux/, "linux"], |
| 508 [/Mac/, "mac"], |
| 509 [/Win/, "win"], |
| 510 ]; |
| 511 |
| 512 for (var i = 0; i < platforms.length; i++) { |
| 513 if (platforms[i][0].test(navigator.appVersion)) { |
| 514 return platforms[i][1]; |
| 515 } |
| 516 } |
| 517 return "unknown"; |
| 518 } |
| 519 |
| 502 chromeHidden.onLoad.addListener(function (extensionId) { | 520 chromeHidden.onLoad.addListener(function (extensionId) { |
| 503 if (!extensionId) { | 521 if (!extensionId) { |
| 504 return; | 522 return; |
| 505 } | 523 } |
| 506 chrome.initExtension(extensionId, false, IsIncognitoProcess()); | 524 chrome.initExtension(extensionId, false, IsIncognitoProcess()); |
| 507 | 525 |
| 508 // Setup the ChromeSetting class so we can use it to construct | 526 // Setup the ChromeSetting class so we can use it to construct |
| 509 // ChromeSetting objects from the API definition. | 527 // ChromeSetting objects from the API definition. |
| 510 setupChromeSetting(); | 528 setupChromeSetting(); |
| 511 | 529 |
| 512 // |apiFunctions| is a hash of name -> object that stores the | 530 // |apiFunctions| is a hash of name -> object that stores the |
| 513 // name & definition of the apiFunction. Custom handling of api functions | 531 // name & definition of the apiFunction. Custom handling of api functions |
| 514 // is implemented by adding a "handleRequest" function to the object. | 532 // is implemented by adding a "handleRequest" function to the object. |
| 515 var apiFunctions = {}; | 533 var apiFunctions = {}; |
| 516 | 534 |
| 517 // Read api definitions and setup api functions in the chrome namespace. | 535 // Read api definitions and setup api functions in the chrome namespace. |
| 518 // TODO(rafaelw): Consider defining a json schema for an api definition | 536 // TODO(rafaelw): Consider defining a json schema for an api definition |
| 519 // and validating either here, in a unit_test or both. | 537 // and validating either here, in a unit_test or both. |
| 520 // TODO(rafaelw): Handle synchronous functions. | 538 // TODO(rafaelw): Handle synchronous functions. |
| 521 // TOOD(rafaelw): Consider providing some convenient override points | 539 // TOOD(rafaelw): Consider providing some convenient override points |
| 522 // for api functions that wish to insert themselves into the call. | 540 // for api functions that wish to insert themselves into the call. |
| 523 var apiDefinitions = chromeHidden.JSON.parse(GetExtensionAPIDefinition()); | 541 var apiDefinitions = chromeHidden.JSON.parse(GetExtensionAPIDefinition()); |
| 542 var platform = getPlatform(); |
| 524 | 543 |
| 525 apiDefinitions.forEach(function(apiDef) { | 544 apiDefinitions.forEach(function(apiDef) { |
| 545 // Check platform, if apiDef has platforms key. |
| 546 if (apiDef.platforms && apiDef.platforms.indexOf(platform) == -1) { |
| 547 return; |
| 548 } |
| 549 |
| 526 var module = chrome; | 550 var module = chrome; |
| 527 var namespaces = apiDef.namespace.split('.'); | 551 var namespaces = apiDef.namespace.split('.'); |
| 528 for (var index = 0, name; name = namespaces[index]; index++) { | 552 for (var index = 0, name; name = namespaces[index]; index++) { |
| 529 module[name] = module[name] || {}; | 553 module[name] = module[name] || {}; |
| 530 module = module[name]; | 554 module = module[name]; |
| 531 } | 555 } |
| 532 | 556 |
| 533 // Add types to global validationTypes | 557 // Add types to global validationTypes |
| 534 if (apiDef.types) { | 558 if (apiDef.types) { |
| 535 apiDef.types.forEach(function(t) { | 559 apiDef.types.forEach(function(t) { |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 | 931 |
| 908 if (!chrome.experimental) | 932 if (!chrome.experimental) |
| 909 chrome.experimental = {}; | 933 chrome.experimental = {}; |
| 910 | 934 |
| 911 if (!chrome.experimental.accessibility) | 935 if (!chrome.experimental.accessibility) |
| 912 chrome.experimental.accessibility = {}; | 936 chrome.experimental.accessibility = {}; |
| 913 | 937 |
| 914 if (!chrome.experimental.tts) | 938 if (!chrome.experimental.tts) |
| 915 chrome.experimental.tts = {}; | 939 chrome.experimental.tts = {}; |
| 916 })(); | 940 })(); |
| OLD | NEW |