1. Remove all ffmpeg library files
2. Run Chromium
3. Open a page and does typeof(HTMLMediaElement), it should return undefined, but it returns "function" instead.
In the v8 binding we should check if the media engine and intercept such calls and returns undefined.
Created attachment 41138 [details]
This patch passes try servers on chromium side.
Comment on attachment 41138 [details]
Every change requires a test:
"No new test because this is V8 specific." makes no sense.
Created attachment 41240 [details]
Providing a manual test.
OK. I misunderstood how one would reproduce this. I guess I didn't read the bug close enough. Yes, I think it's better to have the manual test, but I now understand why you didn't have a test initially.
It would also of course be possible to override MediaPlayer::isAvailable() via some layoutTestController method, but a manual test is OK in this case.
I think a v8-enabled reviewer should review this though.
Didn't atwilson just do this?
I changed window.Audio, and did nothing for HTMLMediaElement or any other constructors, as I was not aware that this was the desired behavior.
Just returning undefined for the constructor is incorrect - you should instead follow the example for window.Audio, which actually removes the associated attribute from the window object.
Case in point: with the patch attached to this bug, "typeof HTMLMediaElement === 'undefined'", but "'HTMLMediaElement' in window" would still return true. If you follow the approach I used for window.Audio, then you'd get the correct behavior in both cases.
Take a look here:
Great, I'll also change the tests accordingly.
Created attachment 41254 [details]
Patch + manual test case
I've uploaded a new patch does similar things according to atwilson. Please take a look. Thanks.
This looks fine to me (although someone with reviewer bit needs to r+ it) - only comment is that ideally the test would include testing that ('HTMLMediaElement' in window) == false.
Comment on attachment 41254 [details]
Patch + manual test case
> + attribute [Conditional=VIDEO,EnabledAtRuntime] HTMLAudioElementConstructor HTMLAudioElement;
> + attribute [Conditional=VIDEO,EnabledAtRuntime] HTMLMediaElementConstructor HTMLMediaElement;
> + attribute [Conditional=VIDEO,EnabledAtRuntime] HTMLVideoElementConstructor HTMLVideoElement;
> + attribute [Conditional=VIDEO,EnabledAtRuntime] MediaErrorConstructor MediaError;
Space between IDL attributes would be nice for readability. You can fix upon landing.
Landed as http://trac.webkit.org/changeset/49803.