Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7820)

Unified Diff: chrome/renderer/resources/extensions/bluetooth_custom_bindings.js

Issue 177113013: Bluetooth: add Device events, and cleanup JS API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@arman-patch
Patch Set: I suck at rebase Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/extensions/dispatcher.cc ('k') | chrome/renderer/resources/renderer_resources.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/resources/extensions/bluetooth_custom_bindings.js
diff --git a/chrome/renderer/resources/extensions/bluetooth_custom_bindings.js b/chrome/renderer/resources/extensions/bluetooth_custom_bindings.js
deleted file mode 100644
index a125877a76d4e23bc26dda5c7869fc92c917aa71..0000000000000000000000000000000000000000
--- a/chrome/renderer/resources/extensions/bluetooth_custom_bindings.js
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Custom binding for the Bluetooth API.
-
-var binding = require('binding').Binding.create('bluetooth');
-
-var chrome = requireNative('chrome').GetChrome();
-var Event = require('event_bindings').Event;
-var lastError = require('lastError');
-var sendRequest = require('sendRequest').sendRequest;
-
-// Use custom binding to create an undocumented event listener that will
-// receive events about device discovery and call the event listener that was
-// provided with the request to begin discovery.
-binding.registerCustomHook(function(api) {
- var apiFunctions = api.apiFunctions;
-
- var bluetooth = {};
-
- function callCallbackIfPresent(name, args, error) {
- var callback = args[args.length - 1];
- if (typeof(callback) == 'function')
- lastError.run(name, error, callback);
- }
-
- bluetooth.deviceDiscoveredHandler = null;
- bluetooth.onDeviceDiscovered = new Event('bluetooth.onDeviceDiscovered');
- function clearDeviceDiscoveredHandler() {
- bluetooth.onDeviceDiscovered.removeListener(
- bluetooth.deviceDiscoveredHandler);
- bluetooth.deviceDiscoveredHandler = null;
- }
- apiFunctions.setHandleRequest('startDiscovery',
- function() {
- var args = arguments;
- if (args.length > 0 && args[0] && args[0].deviceCallback) {
- if (bluetooth.deviceDiscoveredHandler != null) {
- callCallbackIfPresent('bluetooth.startDiscovery',
- args,
- 'Concurrent discovery is not allowed.');
- return;
- }
-
- bluetooth.deviceDiscoveredHandler = args[0].deviceCallback;
- bluetooth.onDeviceDiscovered.addListener(
- bluetooth.deviceDiscoveredHandler);
- sendRequest(this.name,
- args,
- this.definition.parameters,
- {customCallback:this.customCallback});
- } else {
- callCallbackIfPresent(
- 'bluetooth.startDiscovery',
- args,
- 'deviceCallback is required in the options object');
- return;
- }
- });
- apiFunctions.setCustomCallback('startDiscovery',
- function(name, request, response) {
- if (chrome.runtime.lastError) {
- clearDeviceDiscoveredHandler();
- return;
- }
- });
- apiFunctions.setHandleRequest('stopDiscovery',
- function() {
- clearDeviceDiscoveredHandler();
- sendRequest(this.name, arguments, this.definition.parameters);
- });
-
- // An object to hold state during one call to getDevices.
- bluetooth.getDevicesState = null;
-
- // Hidden events used to deliver getDevices data to the client callbacks
- bluetooth.onDeviceSearchResult = new Event('bluetooth.onDeviceSearchResult');
- bluetooth.onDeviceSearchFinished =
- new Event('bluetooth.onDeviceSearchFinished');
-
- function deviceSearchResultHandler(device) {
- bluetooth.getDevicesState.actualEvents++;
- bluetooth.getDevicesState.deviceCallback(device);
- maybeFinishDeviceSearch();
- }
-
- function deviceSearchFinishedHandler(info) {
- bluetooth.getDevicesState.expectedEventCount = info.expectedEventCount;
- maybeFinishDeviceSearch();
- }
-
- function addDeviceSearchListeners() {
- bluetooth.onDeviceSearchResult.addListener(deviceSearchResultHandler);
- bluetooth.onDeviceSearchFinished.addListener(deviceSearchFinishedHandler);
- }
-
- function removeDeviceSearchListeners() {
- bluetooth.onDeviceSearchResult.removeListener(deviceSearchResultHandler);
- bluetooth.onDeviceSearchFinished.removeListener(
- deviceSearchFinishedHandler);
- }
-
- function maybeFinishDeviceSearch() {
- var state = bluetooth.getDevicesState;
- if (typeof(state.expectedEventCount) != 'undefined' &&
- state.actualEvents >= state.expectedEventCount) {
- finishDeviceSearch();
- }
- }
-
- function finishDeviceSearch() {
- var finalCallback = bluetooth.getDevicesState.finalCallback;
- removeDeviceSearchListeners();
- bluetooth.getDevicesState = null;
-
- if (finalCallback) {
- finalCallback();
- }
- }
-
- apiFunctions.setUpdateArgumentsPostValidate('getDevices',
- function() {
- var args = $Array.slice(arguments);
-
- if (bluetooth.getDevicesState != null) {
- throw new Error('Concurrent calls to getDevices are not allowed.');
- }
-
- var state = { actualEvents: 0 };
-
- if (typeof(args[args.length - 1]) == 'function') {
- state.finalCallback = args.pop();
- $Array.push(args,
- function() {
- if (chrome.runtime.lastError) {
- finishDeviceSearch();
- }
- });
- } else {
- throw new Error('getDevices must have a final callback parameter.');
- }
-
- if (typeof(args[0].deviceCallback) == 'function') {
- state.deviceCallback = args[0].deviceCallback;
- } else {
- throw new Error('getDevices must be passed options with a ' +
- 'deviceCallback.');
- }
-
- bluetooth.getDevicesState = state;
- addDeviceSearchListeners();
-
- return args;
- });
-});
-
-exports.binding = binding.generate();
« no previous file with comments | « chrome/renderer/extensions/dispatcher.cc ('k') | chrome/renderer/resources/renderer_resources.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698