Make 'crossOrigin' IDL attributes nullable

This affects the 'crossOrigin' IDL attributes in the interfaces
HTMLImageElement, HTMLLinkElement, HTMLMediaElement and HTMLScriptElement,
and is done to match the corresponding specification change:
  http://html5.org/r/8727

The effect is that on setting the IDL attribute to null, the content
attribute is removed (if present) instead of set to the string "null", and
on getting null is returned instead of the empty string if the content
attribute is not present.

BUG=409524

Review URL: https://codereview.chromium.org/529933002

git-svn-id: svn://svn.chromium.org/blink/trunk@181728 bbb929c8-8fbe-4397-9dbb-9b2b20218538
IDL: Enumerations support in dictionaries

Enumerations are essentially the same as Strings, but those values
are restricted to specific values. When a value is invalid, we should
throw an exception as the spec requires[1].

[1] http://heycam.github.io/webidl/#es-enumeration

BUG=321462

Review URL: https://codereview.chromium.org/561633003

git-svn-id: svn://svn.chromium.org/blink/trunk@181729 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Revert 181702 "Oilpan: Move MediaStreamSource, MediaStreamCompon..."

This CL caused memory leaks in content_unittests.
http://build.chromium.org/p/chromium.memory/builders/Linux%20ASan%20LSan%20Tests%20%282%29/builds/7259

> Oilpan: Move MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor
> to oilpan's heap
> 
> - MediaStreamSource, MediaStreamComponent and MediaStreamDescriptor must be moved
> to oilpan's heap in one go because their lifetime are tightly coupled.
> 
> - Removed m_descriptor->setClient(0) from MediaStream's destructor. This is OK
> because MediaStreamDescriptor has a strong Member back to the Client
> (i.e., MediaStream).
> 
> - Removed m_component->source()->removeObserver(this) from MediaStreamTrack's
> destructor. This is OK because this CL made the observers weak
> (i.e., MediaStreamSource::m_observers is a hash set of weak members to
> MediaStreamTrack objects).
> 
> - Removed WebMediaStreamTrack::ExtraData::m_owner because it's unused.
> 
> - Introduced MediaStreamComponentDisposer to delay the destruction of
> MediaStreamComponent::m_extraData. The ExtraData is exposed to the web
> and some Chromium objects inherit from the ExtraData. If we clear the
> m_extraData in the MediaStreamComponent's destructor, those Chromium-side
> objects are also destructed in the MediaStreamComponent's destructor.
> This is problematic because the destructors of the Chromium-side classes
> can touch other on-heap objects in the Blink side. To avoid the issue,
> we need to delay the destruction of the ExtraData to thread-specific
> weak processing. The disposer pattern actually makes the deletion of
> the extra data happen earlier and not later. The disposer makes sure
> that the extra data is destructed in weak processing which is run before
> sweeping and therefore all the objects are still alive and can be touched.
> 
> 
> - The same problem arises for MediaStreamDescriptor and MediaStreamSource.
> This CL adds MediaStreamDescriptorDisposer and MediaStreamSourceDisposer.
> 
> - This CL depends on https://codereview.chromium.org/543603003/ and https://codereview.chromium.org/549153002.
> 
> BUG=340522
> 
> Review URL: https://codereview.chromium.org/552653005

TBR=haraken@chromium.org

Review URL: https://codereview.chromium.org/562663002

git-svn-id: svn://svn.chromium.org/blink/trunk@181730 bbb929c8-8fbe-4397-9dbb-9b2b20218538