/*****************************************************
*
* Copyright 2009 Adobe Systems Incorporated. All Rights Reserved.
*
*****************************************************
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
*
* The Initial Developer of the Original Code is Adobe Systems Incorporated.
* Portions created by Adobe Systems Incorporated are Copyright (C) 2009 Adobe Systems
* Incorporated. All Rights Reserved.
*
*****************************************************/
package org.osmf.net.drm
{
import org.osmf.events.DRMEvent;
import org.osmf.events.MediaError;
import org.osmf.traits.DRMTrait;
CONFIG::FLASH_10_1
{
import flash.events.DRMStatusEvent;
import flash.net.drm.DRMContentData;
import flash.system.SystemUpdater;
}
[ExcludeClass]
/**
* @private
*
* NetStream-specific DRM trait.
*/
public class NetStreamDRMTrait extends DRMTrait
{
CONFIG::FLASH_10_1
{
/**
* Constructor.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function NetStreamDRMTrait()
{
super();
drmServices.addEventListener(DRMEvent.DRM_STATE_CHANGE, onStateChange);
}
/**
* Data used by the flash player to implement DRM specific content protection.
*
* @langversion 3.0
* @playerversion Flash 10
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function set drmMetadata(value:Object):void
{
if (value != drmServices.drmMetadata)
{
drmServices.drmMetadata = value;
}
}
public function get drmMetadata():Object
{
return drmServices.drmMetadata;
}
/**
* Calls the System Updater's update function
* @private
*/
public function update(type:String):SystemUpdater
{
return drmServices.update(type);
}
/**
* @private
*/
override public function authenticate(username:String = null, password:String = null):void
{
drmServices.authenticate(username, password);
}
/**
* @private
*/
override public function authenticateWithToken(token:Object):void
{
drmServices.authenticateWithToken(token);
}
/**
* @private
* Signals failures from the DRMsubsystem not captured though the
* DRMServices class.
* @langversion 3.0
* @playerversion Flash 10.1
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function inlineDRMFailed(error:MediaError):void
{
drmServices.inlineDRMFailed(error);
}
/**
* @private
* Signals DRM is available, taken from the inline netstream APIs.
* Assumes the voucher is available.
*
* @langversion 3.0
* @playerversion Flash 10.1
* @playerversion AIR 1.5
* @productversion OSMF 1.0
*/
public function inlineOnVoucher(event:DRMStatusEvent):void
{
drmServices.inlineOnVoucher(event);
}
// Internals
//
private function onStateChange(event:DRMEvent):void
{
setPeriod(event.period);
setStartDate(event.startDate);
setEndDate(event.endDate);
setDrmState(event.drmState);
dispatchEvent(new DRMEvent(DRMEvent.DRM_STATE_CHANGE, drmState, false, false, startDate, endDate, period, event.serverURL, event.token, event.mediaError));
}
private var drmServices:DRMServices = new DRMServices();
}
}
}