openfl
Version:
A fast, productive library for 2D cross-platform development.
162 lines (147 loc) • 7.3 kB
TypeScript
declare namespace openfl.media {
/**
* The SoundLoaderContext class provides security checks for files that load
* sound. SoundLoaderContext objects are passed as an argument to the
* constructor and the `load()` method of the Sound class.
*
* When you use this class, consider the following security model:
*
*
* * Loading and playing a sound is not allowed if the calling file is in
* a network sandbox and the sound file to be loaded is local.
* * By default, loading and playing a sound is not allowed if the calling
* is local and tries to load and play a remote sound. A user must grant
* explicit permission to allow this.
* * Certain operations dealing with sound are restricted. The data in a
* loaded sound cannot be accessed by a file in a different domain unless you
* implement a URL policy file. Sound-related APIs that fall under this
* restriction are the `Sound.id3` property and the
* `SoundMixer.computeSpectrum()`,
* `SoundMixer.bufferTime`, and `SoundTransform()`
* methods.
*
*
* However, in Adobe AIR, content in the `application` security
* sandbox(content installed with the AIR application) are not restricted by
* these security limitations.
*
* For more information related to security, see the Flash Player Developer
* Center Topic: [Security](http://www.adobe.com/go/devnet_security_en).
*/
export class SoundLoaderContext {
/**
* The number of milliseconds to preload a streaming sound into a buffer
* before the sound starts to stream.
*
* Note that you cannot override the value of
* `SoundLoaderContext.bufferTime` by setting the global
* `SoundMixer.bufferTime` property. The
* `SoundMixer.bufferTime` property affects the buffer time for
* embedded streaming sounds in a SWF file and is independent of dynamically
* created Sound objects(that is, Sound objects created in
* ActionScript).
*/
public bufferTime:number;
/**
* Specifies whether the application should try to download a URL policy file
* from the loaded sound's server before beginning to load the sound. This
* property applies to sound that is loaded from outside the calling file's
* own domain using the `Sound.load()` method.
*
* Set this property to `true` when you load a sound from
* outside the calling file's own domain and code in the calling file needs
* low-level access to the sound's data. Examples of low-level access to a
* sound's data include referencing the `Sound.id3` property to
* get an ID3Info object or calling the
* `SoundMixer.computeSpectrum()` method to get sound samples from
* the loaded sound. If you try to access sound data without setting the
* `checkPolicyFile` property to `true` at loading
* time, you may get a SecurityError exception because the required policy
* file has not been downloaded.
*
* If you don't need low-level access to the sound data that you are
* loading, avoid setting `checkPolicyFile` to `true`.
* Checking for a policy file consumes network bandwidth and might delay the
* start of your download, so it should only be done when necessary.
*
* When you call `Sound.load()` with
* `SoundLoaderContext.checkPolicyFile` set to `true`,
* Flash Player or AIR must either successfully download a relevant URL
* policy file or determine that no such policy file exists before it begins
* downloading the specified sound. Flash Player or AIR performs the
* following actions, in this order, to verify the existence of a policy
* file:
*
*
* * Flash Player or AIR considers policy files that have already been
* downloaded.
* * Flash Player or AIR tries to download any pending policy files
* specified in calls to `Security.loadPolicyFile()`.
* * Flash Player or AIR tries to download a policy file from the default
* location that corresponds to the sound's URL, which is
* `/crossdomain.xml` on the same server as
* `URLRequest.url`.(The sound's URL is specified in the
* `url` property of the URLRequest object passed to
* `Sound.load()` or the Sound() constructor function.)
*
*
* In all cases, Flash Player or AIR requires that an appropriate policy
* file exist on the sound's server, that it provide access to the sound file
* at `URLRequest.url` by virtue of the policy file's location,
* and that it allow the domain of the calling file to access the sound,
* through one or more `<allow-access-from>` tags.
*
* If you set `checkPolicyFile` to `true`, Flash
* Player or AIR waits until the policy file is verified before loading the
* sound. You should wait to perform any low-level operations on the sound
* data, such as calling `Sound.id3` or
* `SoundMixer.computeSpectrum()`, until `progress` and
* `complete` events are dispatched from the Sound object.
*
* If you set `checkPolicyFile` to `true` but no
* appropriate policy file is found, you will not receive an error until you
* perform an operation that requires a policy file, and then Flash Player or
* AIR throws a `SecurityError` exception. After you receive a
* `complete` event, you can test whether a relevant policy file
* was found by getting the value of `Sound.id3` within a
* `try` block and seeing if a `SecurityError` is
* thrown.
*
* Be careful with `checkPolicyFile` if you are downloading
* sound from a URL that uses server-side HTTP redirects. Flash Player or AIR
* tries to retrieve policy files that correspond to the `url`
* property of the URLRequest object passed to `Sound.load()`. If
* the final sound file comes from a different URL because of HTTP redirects,
* then the initially downloaded policy files might not be applicable to the
* sound's final URL, which is the URL that matters in security
* decisions.
*
* If you find yourself in this situation, here is one possible solution.
* After you receive a `progress` or `complete` event,
* you can examine the value of the `Sound.url` property, which
* contains the sound's final URL. Then call the
* `Security.loadPolicyFile()` method with a policy file URL that
* you calculate based on the sound's final URL. Finally, poll the value of
* `Sound.id3` until no exception is thrown.
*
* This does not apply to content in the AIR application sandbox. Content
* in the application sandbox always has programatic access to sound content,
* regardless of its origin.
*
* For more information related to security, see the Flash Player
* Developer Center Topic: [Security](http://www.adobe.com/go/devnet_security_en).
*/
public checkPolicyFile:boolean;
/**
* Creates a new sound loader context object.
*
* @param bufferTime The number of seconds to preload a streaming sound
* into a buffer before the sound starts to stream.
* @param checkPolicyFile Specifies whether the existence of a URL policy
* file should be checked upon loading the object
* (`true`) or not.
*/
public constructor (bufferTime?:number, checkPolicyFile?:boolean);
}
}
export default openfl.media.SoundLoaderContext;