15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file.
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Widevine player responsible for playing media using Widevine key system
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// and prefixed EME API.
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)function PrefixedWidevinePlayer(video, testConfig) {
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  this.video = video;
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  this.testConfig = testConfig;
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)PrefixedWidevinePlayer.prototype.init = function() {
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  PlayerUtils.initPrefixedEMEPlayer(this);
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)};
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)PrefixedWidevinePlayer.prototype.registerEventListeners = function() {
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  PlayerUtils.registerPrefixedEMEEventListeners(this);
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)};
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)PrefixedWidevinePlayer.prototype.onWebkitKeyMessage = function(message) {
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  function onSuccess(response) {
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    var key = new Uint8Array(response);
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    Utils.timeLog('Adding key to sessionID: ' + message.sessionId, key);
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    message.target.webkitAddKey(this.testConfig.keySystem,
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                key,
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                new Uint8Array(1),
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                message.sessionId);
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  Utils.sendRequest('POST', 'arraybuffer', message.message,
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                    this.testConfig.licenseServerURL, onSuccess,
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                    this.testConfig.forceInvalidResponse);
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)};
33