diff options
-rw-r--r-- | chrome/renderer/render_process.cc | 8 | ||||
-rw-r--r-- | chrome/renderer/render_process.h | 3 | ||||
-rw-r--r-- | chrome/renderer/render_thread.cc | 6 | ||||
-rw-r--r-- | chrome/renderer/renderer_glue.cc | 12 | ||||
-rw-r--r-- | webkit/api/public/WebKit.h | 9 | ||||
-rw-r--r-- | webkit/api/src/MediaPlayerPrivateChromium.cpp | 47 | ||||
-rw-r--r-- | webkit/api/src/TemporaryGlue.h | 53 | ||||
-rw-r--r-- | webkit/api/src/WebKit.cpp | 14 | ||||
-rw-r--r-- | webkit/api/src/WebMediaPlayerClientImpl.cpp | 348 | ||||
-rw-r--r-- | webkit/api/src/WebMediaPlayerClientImpl.h | 107 | ||||
-rw-r--r-- | webkit/glue/media_player_private_impl.cc | 26 | ||||
-rw-r--r-- | webkit/glue/temporary_glue.cc | 24 | ||||
-rw-r--r-- | webkit/glue/webkit_glue.h | 8 | ||||
-rw-r--r-- | webkit/glue/webmediaplayerclient_impl.cc | 310 | ||||
-rw-r--r-- | webkit/glue/webmediaplayerclient_impl.h | 101 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell.cc | 12 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_main.cc | 5 | ||||
-rw-r--r-- | webkit/webkit.gyp | 8 |
18 files changed, 612 insertions, 489 deletions
diff --git a/chrome/renderer/render_process.cc b/chrome/renderer/render_process.cc index 94d353e..abf4289 100644 --- a/chrome/renderer/render_process.cc +++ b/chrome/renderer/render_process.cc @@ -112,11 +112,9 @@ void RenderProcess::Init() { } FilePath module_path; - if (PathService::Get(base::DIR_MODULE, &module_path)) { - if (media::InitializeMediaLibrary(module_path)) { - webkit_glue::SetMediaPlayerAvailable(true); - } - } + initialized_media_library_ = + PathService::Get(base::DIR_MODULE, &module_path) && + media::InitializeMediaLibrary(module_path); } bool RenderProcess::InProcessPlugins() { diff --git a/chrome/renderer/render_process.h b/chrome/renderer/render_process.h index e09d8fa..d8ed72b 100644 --- a/chrome/renderer/render_process.h +++ b/chrome/renderer/render_process.h @@ -45,6 +45,8 @@ class RenderProcess : public ChildProcess { // Returns true if plugins should be loaded in-process. bool in_process_plugins() const { return in_process_plugins_; } + bool initialized_media_library() const { return initialized_media_library_; } + // Returns a pointer to the RenderProcess singleton instance. static RenderProcess* current() { return static_cast<RenderProcess*>(ChildProcess::current()); @@ -92,6 +94,7 @@ class RenderProcess : public ChildProcess { uint32 sequence_number_; bool in_process_plugins_; + bool initialized_media_library_; DISALLOW_COPY_AND_ASSIGN(RenderProcess); }; diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc index ffdc80a..bf95dad 100644 --- a/chrome/renderer/render_thread.cc +++ b/chrome/renderer/render_thread.cc @@ -350,9 +350,11 @@ void RenderThread::EnsureWebKitInitialized() { WebKit::registerExtension(extensions_v8::PlaybackExtension::Get()); } - if (command_line.HasSwitch(switches::kEnableWebWorkers)) { + if (command_line.HasSwitch(switches::kEnableWebWorkers)) WebKit::enableWebWorkers(); - } + + if (RenderProcess::current()->initialized_media_library()) + WebKit::enableMediaPlayer(); } void RenderThread::OnExtensionHandleConnect(int port_id, diff --git a/chrome/renderer/renderer_glue.cc b/chrome/renderer/renderer_glue.cc index 7ccdec4..73d91ff 100644 --- a/chrome/renderer/renderer_glue.cc +++ b/chrome/renderer/renderer_glue.cc @@ -146,18 +146,6 @@ ScopedClipboardWriterGlue::~ScopedClipboardWriterGlue() { namespace webkit_glue { -// Global variable set during RenderProcess::GlobalInit if video was enabled -// and our media libraries were successfully loaded. -static bool g_media_player_available = false; - -void SetMediaPlayerAvailable(bool value) { - g_media_player_available = value; -} - -bool IsMediaPlayerAvailable() { - return g_media_player_available; -} - void PrecacheUrl(const wchar_t* url, int url_length) { // TBD: jar: Need implementation that loads the targetted URL into our cache. // For now, at least prefetch DNS lookup diff --git a/webkit/api/public/WebKit.h b/webkit/api/public/WebKit.h index faf54ce..55675a6 100644 --- a/webkit/api/public/WebKit.h +++ b/webkit/api/public/WebKit.h @@ -1,10 +1,10 @@ /* * Copyright (C) 2009 Google Inc. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: - * + * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above @@ -14,7 +14,7 @@ * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -80,6 +80,9 @@ namespace WebKit { // Enables HTML5 worker support. WEBKIT_API void enableWebWorkers(); + // Enables HTML5 media support. + WEBKIT_API void enableMediaPlayer(); + // Purge the plugin list cache. WEBKIT_API void resetPluginCache(); diff --git a/webkit/api/src/MediaPlayerPrivateChromium.cpp b/webkit/api/src/MediaPlayerPrivateChromium.cpp new file mode 100644 index 0000000..09d33d4 --- /dev/null +++ b/webkit/api/src/MediaPlayerPrivateChromium.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "MediaPlayerPrivateChromium.h" + +#if ENABLE(VIDEO) + +#include "WebMediaPlayerClientImpl.h" + +namespace WebCore { + +void MediaPlayerPrivate::registerMediaEngine(MediaEngineRegistrar registrar) +{ + WebKit::WebMediaPlayerClientImpl::registerSelf(registrar); +} + +} // namespace WebCore + +#endif diff --git a/webkit/api/src/TemporaryGlue.h b/webkit/api/src/TemporaryGlue.h new file mode 100644 index 0000000..c53453e --- /dev/null +++ b/webkit/api/src/TemporaryGlue.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TemporaryGlue_h +#define TemporaryGlue_h + +// This is a temporary file declaring some functions that the WebKit layer can +// use to call to the Glue layer. Once the Glue layer moves entirely into the +// WebKit layer, this file will be deleted. + +namespace WebCore { + class Frame; +} // namespace WebCore + +namespace WebKit { + class WebMediaPlayer; + class WebMediaPlayerClient; + + class TemporaryGlue { + public: + static WebMediaPlayer* createWebMediaPlayer(WebMediaPlayerClient*, WebCore::Frame*); + }; + +} // namespace WebKit + +#endif diff --git a/webkit/api/src/WebKit.cpp b/webkit/api/src/WebKit.cpp index 5523eba..163a3a3 100644 --- a/webkit/api/src/WebKit.cpp +++ b/webkit/api/src/WebKit.cpp @@ -1,10 +1,10 @@ /* * Copyright (C) 2009 Google Inc. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: - * + * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above @@ -14,7 +14,7 @@ * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -31,6 +31,7 @@ #include "config.h" #include "WebKit.h" +#include "WebMediaPlayerClientImpl.h" #include "WebString.h" #include "AtomicString.h" @@ -112,6 +113,13 @@ void enableWebWorkers() #endif } +void enableMediaPlayer() +{ +#if ENABLE(VIDEO) + WebMediaPlayerClientImpl::setIsEnabled(true); +#endif +} + void resetPluginCache() { WebCore::Page::refreshPlugins(false); diff --git a/webkit/api/src/WebMediaPlayerClientImpl.cpp b/webkit/api/src/WebMediaPlayerClientImpl.cpp new file mode 100644 index 0000000..9312516 --- /dev/null +++ b/webkit/api/src/WebMediaPlayerClientImpl.cpp @@ -0,0 +1,348 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "config.h" +#include "WebMediaPlayerClientImpl.h" + +#if ENABLE(VIDEO) + +#include "TemporaryGlue.h" +#include "WebCanvas.h" +#include "WebCString.h" +#include "WebKit.h" +#include "WebKitClient.h" +#include "WebMediaPlayer.h" +#include "WebRect.h" +#include "WebSize.h" +#include "WebString.h" +#include "WebURL.h" + +#include "CString.h" +#include "Frame.h" +#include "GraphicsContext.h" +#include "HTMLMediaElement.h" +#include "IntSize.h" +#include "KURL.h" +#include "MediaPlayer.h" +#include "NotImplemented.h" +#include "PlatformContextSkia.h" + +using namespace WebCore; + +namespace WebKit { + +static bool s_isEnabled = false; + +void WebMediaPlayerClientImpl::setIsEnabled(bool isEnabled) +{ + s_isEnabled = isEnabled; +} + +void WebMediaPlayerClientImpl::registerSelf(MediaEngineRegistrar registrar) +{ + if (s_isEnabled) { + registrar(WebMediaPlayerClientImpl::create, + WebMediaPlayerClientImpl::getSupportedTypes, + WebMediaPlayerClientImpl::supportsType); + } +} + + +// WebMediaPlayerClient -------------------------------------------------------- + +void WebMediaPlayerClientImpl::networkStateChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->networkStateChanged(); +} + +void WebMediaPlayerClientImpl::readyStateChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->readyStateChanged(); +} + +void WebMediaPlayerClientImpl::volumeChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->volumeChanged(); +} + +void WebMediaPlayerClientImpl::timeChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->timeChanged(); +} + +void WebMediaPlayerClientImpl::repaint() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->repaint(); +} + +void WebMediaPlayerClientImpl::durationChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->durationChanged(); +} + +void WebMediaPlayerClientImpl::rateChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->rateChanged(); +} + +void WebMediaPlayerClientImpl::sizeChanged() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->sizeChanged(); +} + +void WebMediaPlayerClientImpl::sawUnsupportedTracks() +{ + ASSERT(m_mediaPlayer); + m_mediaPlayer->mediaPlayerClient()->mediaPlayerSawUnsupportedTracks(m_mediaPlayer); +} + +// MediaPlayerPrivateInterface ------------------------------------------------- + +void WebMediaPlayerClientImpl::load(const String& url) +{ + Frame* frame = static_cast<HTMLMediaElement*>( + m_mediaPlayer->mediaPlayerClient())->document()->frame(); + m_webMediaPlayer.set(TemporaryGlue::createWebMediaPlayer(this, frame)); + if (m_webMediaPlayer.get()) + m_webMediaPlayer->load(KURL(url)); +} + +void WebMediaPlayerClientImpl::cancelLoad() +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->cancelLoad(); +} + +void WebMediaPlayerClientImpl::play() +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->play(); +} + +void WebMediaPlayerClientImpl::pause() +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->pause(); +} + +IntSize WebMediaPlayerClientImpl::naturalSize() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->naturalSize(); + return IntSize(); +} + +bool WebMediaPlayerClientImpl::hasVideo() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->hasVideo(); + return false; +} + +void WebMediaPlayerClientImpl::setVisible(bool visible) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->setVisible(visible); +} + +float WebMediaPlayerClientImpl::duration() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->duration(); + return 0.0f; +} + +float WebMediaPlayerClientImpl::currentTime() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->currentTime(); + return 0.0f; +} + +void WebMediaPlayerClientImpl::seek(float time) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->seek(time); +} + +bool WebMediaPlayerClientImpl::seeking() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->seeking(); + return false; +} + +void WebMediaPlayerClientImpl::setEndTime(float time) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->setEndTime(time); +} + +void WebMediaPlayerClientImpl::setRate(float rate) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->setRate(rate); +} + +bool WebMediaPlayerClientImpl::paused() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->paused(); + return false; +} + +void WebMediaPlayerClientImpl::setVolume(float volume) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->setVolume(volume); +} + +MediaPlayer::NetworkState WebMediaPlayerClientImpl::networkState() const +{ + COMPILE_ASSERT( + int(WebMediaPlayer::Empty) == int(MediaPlayer::Empty), Empty); + COMPILE_ASSERT( + int(WebMediaPlayer::Idle) == int(MediaPlayer::Idle), Idle); + COMPILE_ASSERT( + int(WebMediaPlayer::Loading) == int(MediaPlayer::Loading), Loading); + COMPILE_ASSERT( + int(WebMediaPlayer::Loaded) == int(MediaPlayer::Loaded), Loaded); + COMPILE_ASSERT( + int(WebMediaPlayer::FormatError) == int(MediaPlayer::FormatError), + FormatError); + COMPILE_ASSERT( + int(WebMediaPlayer::NetworkError) == int(MediaPlayer::NetworkError), + NetworkError); + COMPILE_ASSERT( + int(WebMediaPlayer::DecodeError) == int(MediaPlayer::DecodeError), + DecodeError); + + if (m_webMediaPlayer.get()) + return static_cast<MediaPlayer::NetworkState>(m_webMediaPlayer->networkState()); + return MediaPlayer::Empty; +} + +MediaPlayer::ReadyState WebMediaPlayerClientImpl::readyState() const +{ + COMPILE_ASSERT( + int(WebMediaPlayer::HaveNothing) == int(MediaPlayer::HaveNothing), + HaveNothing); + COMPILE_ASSERT( + int(WebMediaPlayer::HaveMetadata) == int(MediaPlayer::HaveMetadata), + HaveMetadata); + COMPILE_ASSERT( + int(WebMediaPlayer::HaveCurrentData) == int(MediaPlayer::HaveCurrentData), + HaveCurrentData); + COMPILE_ASSERT( + int(WebMediaPlayer::HaveFutureData) == int(MediaPlayer::HaveFutureData), + HaveFutureData); + COMPILE_ASSERT( + int(WebMediaPlayer::HaveEnoughData) == int(MediaPlayer::HaveEnoughData), + HaveEnoughData); + + if (m_webMediaPlayer.get()) + return static_cast<MediaPlayer::ReadyState>(m_webMediaPlayer->readyState()); + return MediaPlayer::HaveNothing; +} + +float WebMediaPlayerClientImpl::maxTimeSeekable() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->maxTimeSeekable(); + return 0.0f; +} + +float WebMediaPlayerClientImpl::maxTimeBuffered() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->maxTimeBuffered(); + return 0.0f; +} + +int WebMediaPlayerClientImpl::dataRate() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->dataRate(); + return 0; +} + +bool WebMediaPlayerClientImpl::totalBytesKnown() const +{ + if (m_webMediaPlayer.get()) + return m_webMediaPlayer->totalBytesKnown(); + return false; +} + +unsigned WebMediaPlayerClientImpl::totalBytes() const +{ + if (m_webMediaPlayer.get()) + return static_cast<unsigned>(m_webMediaPlayer->totalBytes()); + return 0; +} + +unsigned WebMediaPlayerClientImpl::bytesLoaded() const +{ + if (m_webMediaPlayer.get()) + return static_cast<unsigned>(m_webMediaPlayer->bytesLoaded()); + return 0; +} + +void WebMediaPlayerClientImpl::setSize(const IntSize& size) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->setSize(WebSize(size.width(), size.height())); +} + +void WebMediaPlayerClientImpl::paint(GraphicsContext* context, const IntRect& rect) +{ + // FIXME: enable this for mac. +#if WEBKIT_USING_SKIA + if (m_webMediaPlayer.get()) + m_webMediaPlayer->paint(context->platformContext()->canvas(), rect); +#endif +} + +void WebMediaPlayerClientImpl::setAutobuffer(bool autoBuffer) +{ + if (m_webMediaPlayer.get()) + m_webMediaPlayer->setAutoBuffer(autoBuffer); +} + +MediaPlayerPrivateInterface* WebMediaPlayerClientImpl::create(MediaPlayer* player) +{ + WebMediaPlayerClientImpl* client = new WebMediaPlayerClientImpl(); + client->m_mediaPlayer = player; + return client; +} + +void WebMediaPlayerClientImpl::getSupportedTypes(HashSet<String>& supportedTypes) +{ + // FIXME: decide what to do here, we should fill in the HashSet about + // codecs that we support. + notImplemented(); +} + +MediaPlayer::SupportsType WebMediaPlayerClientImpl::supportsType(const String& type, + const String& codecs) +{ + // FIXME: implement this properly. + return MediaPlayer::IsSupported; +} + +WebMediaPlayerClientImpl::WebMediaPlayerClientImpl() + : m_mediaPlayer(0) +{ +} + +} // namespace WebKit + +#endif // ENABLE(VIDEO) diff --git a/webkit/api/src/WebMediaPlayerClientImpl.h b/webkit/api/src/WebMediaPlayerClientImpl.h new file mode 100644 index 0000000..e4f2b9f --- /dev/null +++ b/webkit/api/src/WebMediaPlayerClientImpl.h @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WebMediaPlayerClientImpl_h +#define WebMediaPlayerClientImpl_h + +#if ENABLE(VIDEO) + +#include "WebMediaPlayerClient.h" + +#include "MediaPlayerPrivate.h" +#include <wtf/OwnPtr.h> + +namespace WebKit { + class WebMediaPlayer; + + // This class serves as a bridge between WebCore::MediaPlayer and + // WebKit::WebMediaPlayer. + class WebMediaPlayerClientImpl : public WebMediaPlayerClient + , public WebCore::MediaPlayerPrivateInterface { + public: + static void setIsEnabled(bool); + static void registerSelf(WebCore::MediaEngineRegistrar); + + // WebMediaPlayerClient methods: + virtual void networkStateChanged(); + virtual void readyStateChanged(); + virtual void volumeChanged(); + virtual void timeChanged(); + virtual void repaint(); + virtual void durationChanged(); + virtual void rateChanged(); + virtual void sizeChanged(); + virtual void sawUnsupportedTracks(); + + // MediaPlayerPrivateInterface methods: + virtual void load(const WebCore::String& url); + virtual void cancelLoad(); + virtual void play(); + virtual void pause(); + virtual WebCore::IntSize naturalSize() const; + virtual bool hasVideo() const; + virtual void setVisible(bool); + virtual float duration() const; + virtual float currentTime() const; + virtual void seek(float time); + virtual bool seeking() const; + virtual void setEndTime(float time); + virtual void setRate(float); + virtual bool paused() const; + virtual void setVolume(float); + virtual WebCore::MediaPlayer::NetworkState networkState() const; + virtual WebCore::MediaPlayer::ReadyState readyState() const; + virtual float maxTimeSeekable() const; + virtual float maxTimeBuffered() const; + virtual int dataRate() const; + virtual void setAutobuffer(bool); + virtual bool totalBytesKnown() const; + virtual unsigned totalBytes() const; + virtual unsigned bytesLoaded() const; + virtual void setSize(const WebCore::IntSize&); + virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&); + + private: + WebMediaPlayerClientImpl(); + + static WebCore::MediaPlayerPrivateInterface* create(WebCore::MediaPlayer*); + static void getSupportedTypes(WTF::HashSet<WebCore::String>&); + static WebCore::MediaPlayer::SupportsType supportsType( + const WebCore::String& type, const WebCore::String& codecs); + + WebCore::MediaPlayer* m_mediaPlayer; + OwnPtr<WebMediaPlayer> m_webMediaPlayer; + }; + +} // namespace WebKit + +#endif + +#endif diff --git a/webkit/glue/media_player_private_impl.cc b/webkit/glue/media_player_private_impl.cc deleted file mode 100644 index 15661b5..0000000 --- a/webkit/glue/media_player_private_impl.cc +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2008-2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "config.h" - -#if ENABLE(VIDEO) - -#include "MediaPlayerPrivateChromium.h" - -#include "webkit/glue/webkit_glue.h" -#include "webkit/glue/webmediaplayerclient_impl.h" - -namespace WebCore { - -void MediaPlayerPrivate::registerMediaEngine(MediaEngineRegistrar registrar) { - if (webkit_glue::IsMediaPlayerAvailable()) { - registrar(&WebMediaPlayerClientImpl::create, - &WebMediaPlayerClientImpl::getSupportedTypes, - &WebMediaPlayerClientImpl::supportsType); - } -} - -} // namespace WebCore - -#endif diff --git a/webkit/glue/temporary_glue.cc b/webkit/glue/temporary_glue.cc new file mode 100644 index 0000000..fb201b1 --- /dev/null +++ b/webkit/glue/temporary_glue.cc @@ -0,0 +1,24 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "config.h" +#include "webkit/api/src/TemporaryGlue.h" + +#include "webkit/glue/webview_impl.h" + +using WebCore::Frame; + +namespace WebKit { + +// static +WebMediaPlayer* TemporaryGlue::createWebMediaPlayer( + WebMediaPlayerClient* client, Frame* frame) { + WebViewImpl* webview = WebFrameImpl::FromFrame(frame)->GetWebViewImpl(); + if (!webview || !webview->delegate()) + return NULL; + + return webview->delegate()->CreateWebMediaPlayer(client); +} + +} // namespace WebKit diff --git a/webkit/glue/webkit_glue.h b/webkit/glue/webkit_glue.h index 2e7e4e3..0024fe1 100644 --- a/webkit/glue/webkit_glue.h +++ b/webkit/glue/webkit_glue.h @@ -110,14 +110,6 @@ WebKit::WebString FilePathStringToWebString(const FilePath::StringType& str); //---- BEGIN FUNCTIONS IMPLEMENTED BY EMBEDDER -------------------------------- -// Set during RenderProcess::GlobalInit when --enable-video has been passed in -// and all media related libraries were successfully loaded. -void SetMediaPlayerAvailable(bool value); - -// This function is called from WebCore::MediaPlayerPrivate, -// Returns true if media player is available and can be created. -bool IsMediaPlayerAvailable(); - // This function is called to request a prefetch of the entire URL, loading it // into our cache for (expected) future needs. The given URL may NOT be in // canonical form and it will NOT be null-terminated; use the length instead. diff --git a/webkit/glue/webmediaplayerclient_impl.cc b/webkit/glue/webmediaplayerclient_impl.cc deleted file mode 100644 index 78d7f58..0000000 --- a/webkit/glue/webmediaplayerclient_impl.cc +++ /dev/null @@ -1,310 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "config.h" -#include "webkit/glue/webmediaplayerclient_impl.h" - -#if ENABLE(VIDEO) - -#include "webkit/api/public/WebCanvas.h" -#include "webkit/api/public/WebCString.h" -#include "webkit/api/public/WebKit.h" -#include "webkit/api/public/WebKitClient.h" -#include "webkit/api/public/WebMediaPlayer.h" -#include "webkit/api/public/WebRect.h" -#include "webkit/api/public/WebSize.h" -#include "webkit/api/public/WebString.h" -#include "webkit/api/public/WebURL.h" -#include "webkit/glue/glue_util.h" -#include "webkit/glue/webframe_impl.h" -#include "webkit/glue/webview.h" -#include "webkit/glue/webview_delegate.h" - -#include "CString.h" -#include "Frame.h" -#include "GraphicsContext.h" -#include "HTMLMediaElement.h" -#include "IntSize.h" -#include "KURL.h" -#include "MediaPlayer.h" -#include "NotImplemented.h" -#include "PlatformContextSkia.h" - -using namespace WebCore; -using namespace WebKit; - -WebMediaPlayerClientImpl::WebMediaPlayerClientImpl() - : m_webMediaPlayer(0) { -} - - -WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl() { - delete m_webMediaPlayer; -} - -////////////////////////////////////////////////////////////////////////////// -// WebMediaPlayerClientImpl, WebMediaPlayerClient implementations -void WebMediaPlayerClientImpl::networkStateChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->networkStateChanged(); -} - -void WebMediaPlayerClientImpl::readyStateChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->readyStateChanged(); -} - -void WebMediaPlayerClientImpl::volumeChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->volumeChanged(); -} - -void WebMediaPlayerClientImpl::timeChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->timeChanged(); -} - -void WebMediaPlayerClientImpl::repaint() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->repaint(); -} - -void WebMediaPlayerClientImpl::durationChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->durationChanged(); -} - -void WebMediaPlayerClientImpl::rateChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->rateChanged(); -} - -void WebMediaPlayerClientImpl::sizeChanged() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->sizeChanged(); -} - -void WebMediaPlayerClientImpl::sawUnsupportedTracks() { - ASSERT(m_mediaPlayer); - m_mediaPlayer->mediaPlayerClient()->mediaPlayerSawUnsupportedTracks( - m_mediaPlayer); -} - -////////////////////////////////////////////////////////////////////////////// -// WebMediaPlayerClientImpl, MediaPlayerPrivateInterface implementations -void WebMediaPlayerClientImpl::load(const String& url) { - delete m_webMediaPlayer; - - WebCore::Frame* frame = static_cast<HTMLMediaElement*>( - m_mediaPlayer->mediaPlayerClient())->document()->frame(); - WebFrame* webFrame = WebFrameImpl::FromFrame(frame); - WebViewDelegate* d = webFrame->GetView()->GetDelegate(); - m_webMediaPlayer = d->CreateWebMediaPlayer(this); - m_webMediaPlayer->load(webkit_glue::KURLToWebURL(KURL(url))); -} - -void WebMediaPlayerClientImpl::cancelLoad() { - if (m_webMediaPlayer) - m_webMediaPlayer->cancelLoad(); -} - -void WebMediaPlayerClientImpl::play() { - if (m_webMediaPlayer) - m_webMediaPlayer->play(); -} - -void WebMediaPlayerClientImpl::pause() { - if (m_webMediaPlayer) - m_webMediaPlayer->pause(); -} - -IntSize WebMediaPlayerClientImpl::naturalSize() const { - if (m_webMediaPlayer) { - const WebSize& size = m_webMediaPlayer->naturalSize(); - return IntSize(size.width, size.height); - } - return IntSize(0, 0); -} - -bool WebMediaPlayerClientImpl::hasVideo() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->hasVideo(); - return false; -} - -void WebMediaPlayerClientImpl::setVisible(bool visible) { - if (m_webMediaPlayer) - m_webMediaPlayer->setVisible(visible); -} - -float WebMediaPlayerClientImpl::duration() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->duration(); - return 0.0f; -} - -float WebMediaPlayerClientImpl::currentTime() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->currentTime(); - return 0.0f; -} - -void WebMediaPlayerClientImpl::seek(float time) { - if (m_webMediaPlayer) - m_webMediaPlayer->seek(time); -} - -bool WebMediaPlayerClientImpl::seeking() const { - return m_webMediaPlayer->seeking(); -} - -void WebMediaPlayerClientImpl::setEndTime(float time) { - if (m_webMediaPlayer) - m_webMediaPlayer->setEndTime(time); -} - -void WebMediaPlayerClientImpl::setRate(float rate) { - if (m_webMediaPlayer) - m_webMediaPlayer->setRate(rate); -} - -bool WebMediaPlayerClientImpl::paused() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->paused(); - return false; -} - -void WebMediaPlayerClientImpl::setVolume(float volume) { - if (m_webMediaPlayer) - m_webMediaPlayer->setVolume(volume); -} - -MediaPlayer::NetworkState WebMediaPlayerClientImpl::networkState() const { - COMPILE_ASSERT( - int(WebMediaPlayer::Empty) == int(MediaPlayer::Empty), Empty); - COMPILE_ASSERT( - int(WebMediaPlayer::Idle) == int(MediaPlayer::Idle), Idle); - COMPILE_ASSERT( - int(WebMediaPlayer::Loading) == int(MediaPlayer::Loading), Loading); - COMPILE_ASSERT( - int(WebMediaPlayer::Loaded) == int(MediaPlayer::Loaded), Loaded); - COMPILE_ASSERT( - int(WebMediaPlayer::FormatError) == int(MediaPlayer::FormatError), - FormatError); - COMPILE_ASSERT( - int(WebMediaPlayer::NetworkError) == int(MediaPlayer::NetworkError), - NetworkError); - COMPILE_ASSERT( - int(WebMediaPlayer::DecodeError) == int(MediaPlayer::DecodeError), - DecodeError); - - if (m_webMediaPlayer) - return static_cast<MediaPlayer::NetworkState>( - m_webMediaPlayer->networkState()); - return MediaPlayer::Empty; -} - -MediaPlayer::ReadyState WebMediaPlayerClientImpl::readyState() const { - COMPILE_ASSERT( - int(WebMediaPlayer::HaveNothing) == int(MediaPlayer::HaveNothing), - HaveNothing); - COMPILE_ASSERT( - int(WebMediaPlayer::HaveMetadata) == int(MediaPlayer::HaveMetadata), - HaveMetadata); - COMPILE_ASSERT( - int(WebMediaPlayer::HaveCurrentData) == int(MediaPlayer::HaveCurrentData), - HaveCurrentData); - COMPILE_ASSERT( - int(WebMediaPlayer::HaveFutureData) == int(MediaPlayer::HaveFutureData), - HaveFutureData); - COMPILE_ASSERT( - int(WebMediaPlayer::HaveEnoughData) == int(MediaPlayer::HaveEnoughData), - HaveEnoughData); - - if (m_webMediaPlayer) - return static_cast<MediaPlayer::ReadyState>(m_webMediaPlayer->readyState()); - return MediaPlayer::HaveNothing; -} - -float WebMediaPlayerClientImpl::maxTimeSeekable() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->maxTimeSeekable(); - return 0.0f; -} - -float WebMediaPlayerClientImpl::maxTimeBuffered() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->maxTimeBuffered(); - return 0.0f; -} - -int WebMediaPlayerClientImpl::dataRate() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->dataRate(); - return 0; -} - -bool WebMediaPlayerClientImpl::totalBytesKnown() const { - if (m_webMediaPlayer) - return m_webMediaPlayer->totalBytesKnown(); - return false; -} - -unsigned WebMediaPlayerClientImpl::totalBytes() const { - if (m_webMediaPlayer) - return static_cast<unsigned>(m_webMediaPlayer->totalBytes()); - return 0; -} - -unsigned WebMediaPlayerClientImpl::bytesLoaded() const { - if (m_webMediaPlayer) - return static_cast<unsigned>(m_webMediaPlayer->bytesLoaded()); - return 0; -} - -void WebMediaPlayerClientImpl::setSize(const IntSize& size) { - if (m_webMediaPlayer) - m_webMediaPlayer->setSize(WebSize(size.width(), size.height())); -} - -void WebMediaPlayerClientImpl::paint(GraphicsContext* context, - const IntRect& rect) { -// TODO(hclam): enable this for mac. -#if WEBKIT_USING_SKIA - if (m_webMediaPlayer) - m_webMediaPlayer->paint( - context->platformContext()->canvas(), - WebRect(rect.x(), rect.y(), rect.width(), rect.height())); -#endif -} - -void WebMediaPlayerClientImpl::setAutobuffer(bool autoBuffer) { - if (m_webMediaPlayer) - m_webMediaPlayer->setAutoBuffer(autoBuffer); -} - -// static -MediaPlayerPrivateInterface* WebMediaPlayerClientImpl::create( - MediaPlayer* player) { - WebMediaPlayerClientImpl* client = new WebMediaPlayerClientImpl(); - client->m_mediaPlayer = player; - return client; -} - -// static -void WebMediaPlayerClientImpl::getSupportedTypes( - HashSet<String>& supportedTypes) { - // TODO(hclam): decide what to do here, we should fill in the HashSet about - // codecs that we support. - notImplemented(); -} - -// static -MediaPlayer::SupportsType WebMediaPlayerClientImpl::supportsType( - const String& type, const String& codecs) { - // TODO(hclam): implement this nicely. - return MediaPlayer::IsSupported; -} - -#endif // ENABLE(VIDEO) diff --git a/webkit/glue/webmediaplayerclient_impl.h b/webkit/glue/webmediaplayerclient_impl.h deleted file mode 100644 index 0081955..0000000 --- a/webkit/glue/webmediaplayerclient_impl.h +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_GLUE_WEBMEDIAPLAYERCLIENT_IMPL_H_ -#define WEBKIT_GLUE_WEBMEDIAPLAYERCLIENT_IMPL_H_ - -#if ENABLE(VIDEO) - -#include "webkit/api/public/WebMediaPlayerClient.h" - -#include "MediaPlayerPrivate.h" - -namespace WebCore { -class MediaPlayerPrivate; -} // namespace WebCore - -namespace WebKit { -class WebMediaPlayer; -} // namespace WebKit - -class WebMediaPlayerClientImpl : public WebKit::WebMediaPlayerClient, - public WebCore::MediaPlayerPrivateInterface { - public: - virtual ~WebMediaPlayerClientImpl(); - - //////////////////////////////////////////////////////////////////////////// - // WebMediaPlayerPlayerClient methods - virtual void networkStateChanged(); - virtual void readyStateChanged(); - virtual void volumeChanged(); - virtual void timeChanged(); - virtual void repaint(); - virtual void durationChanged(); - virtual void rateChanged(); - virtual void sizeChanged(); - virtual void sawUnsupportedTracks(); - - //////////////////////////////////////////////////////////////////////////// - // MediaPlayerPrivateInterface methods - virtual void load(const WebCore::String& url); - virtual void cancelLoad(); - - virtual void play(); - virtual void pause(); - - virtual WebCore::IntSize naturalSize() const; - - virtual bool hasVideo() const; - - virtual void setVisible(bool); - - virtual float duration() const; - - virtual float currentTime() const; - virtual void seek(float time); - virtual bool seeking() const; - - virtual void setEndTime(float time); - - virtual void setRate(float); - virtual bool paused() const; - - virtual void setVolume(float); - - virtual WebCore::MediaPlayer::NetworkState networkState() const; - virtual WebCore::MediaPlayer::ReadyState readyState() const; - - virtual float maxTimeSeekable() const; - virtual float maxTimeBuffered() const; - - virtual int dataRate() const; - virtual void setAutobuffer(bool); - - virtual bool totalBytesKnown() const; - virtual unsigned totalBytes() const; - virtual unsigned bytesLoaded() const; - - virtual void setSize(const WebCore::IntSize&); - virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect&); - - private: - friend class WebCore::MediaPlayerPrivate; - - WebMediaPlayerClientImpl(); - - // Static methods used by WebKit for construction. - static WebCore::MediaPlayerPrivateInterface* create( - WebCore::MediaPlayer* player); - static void getSupportedTypes( - WTF::HashSet<WebCore::String>& supportedTypes); - static WebCore::MediaPlayer::SupportsType supportsType( - const WebCore::String& type, const WebCore::String& codecs); - - WebCore::MediaPlayer* m_mediaPlayer; - WebKit::WebMediaPlayer* m_webMediaPlayer; -}; - -#endif // ENABLE(VIDEO) - -#endif // WEBKIT_GLUE_WEBMEDIAPLAYERCLIENT_IMPL_H_ diff --git a/webkit/tools/test_shell/test_shell.cc b/webkit/tools/test_shell/test_shell.cc index 085537e..1a81225 100644 --- a/webkit/tools/test_shell/test_shell.cc +++ b/webkit/tools/test_shell/test_shell.cc @@ -400,7 +400,7 @@ void TestShell::ResetWebPreferences() { web_prefs_->text_areas_are_resizable = false; web_prefs_->java_enabled = true; web_prefs_->allow_scripts_to_close_windows = false; - // It's off by default for Chrome, but we don't want to + // It's off by default for Chrome, but we don't want to // lose the coverage of dynamic font tests in webkit test. web_prefs_->remote_fonts_enabled = true; } @@ -589,16 +589,6 @@ void TestShell::SetFocus(WebWidgetHost* host, bool enable) { namespace webkit_glue { -static bool g_media_player_available = false; - -void SetMediaPlayerAvailable(bool value) { - g_media_player_available = value; -} - -bool IsMediaPlayerAvailable() { - return g_media_player_available; -} - void PrecacheUrl(const char16* url, int url_length) {} void AppendToLog(const char* file, int line, const char* msg) { diff --git a/webkit/tools/test_shell/test_shell_main.cc b/webkit/tools/test_shell/test_shell_main.cc index 166fcae..daa3791 100644 --- a/webkit/tools/test_shell/test_shell_main.cc +++ b/webkit/tools/test_shell/test_shell_main.cc @@ -238,11 +238,6 @@ int main(int argc, char* argv[]) { base::MemoryDebug::DumpAllMemoryInUse(); } - if (false) { - // TODO(scherkus): check for any DLL dependencies. - webkit_glue::SetMediaPlayerAvailable(true); - } - // See if we need to run the tests. if (layout_test_mode) { // Set up for the kind of test requested. diff --git a/webkit/webkit.gyp b/webkit/webkit.gyp index c22e3e7..92f6a5c 100644 --- a/webkit/webkit.gyp +++ b/webkit/webkit.gyp @@ -4217,6 +4217,8 @@ 'api/src/x11/WebScreenInfoFactory.cpp', 'api/src/mac/WebInputEventFactory.mm', 'api/src/mac/WebScreenInfoFactory.mm', + 'api/src/MediaPlayerPrivateChromium.cpp', + 'api/src/TemporaryGlue.h', 'api/src/WebCache.cpp', 'api/src/WebCString.cpp', 'api/src/WebData.cpp', @@ -4224,6 +4226,8 @@ 'api/src/WebImageSkia.cpp', 'api/src/WebInputEvent.cpp', 'api/src/WebKit.cpp', + 'api/src/WebMediaPlayerClientImpl.cpp', + 'api/src/WebMediaPlayerClientImpl.h', 'api/src/WebPluginListBuilderImpl.cpp', 'api/src/WebPluginListBuilderImpl.h', 'api/src/WebString.cpp', @@ -4478,7 +4482,6 @@ 'glue/inspector_client_impl.cc', 'glue/inspector_client_impl.h', 'glue/localized_strings.cc', - 'glue/media_player_private_impl.cc', 'glue/multipart_response_delegate.cc', 'glue/multipart_response_delegate.h', 'glue/npruntime_util.cc', @@ -4501,6 +4504,7 @@ 'glue/simple_webmimeregistry_impl.h', 'glue/stacking_order_iterator.cc', 'glue/stacking_order_iterator.h', + 'glue/temporary_glue.cc', 'glue/webaccessibility.h', 'glue/webaccessibilitymanager.h', 'glue/webaccessibilitymanager_impl.cc', @@ -4541,8 +4545,6 @@ 'glue/webkit_glue.h', 'glue/webkitclient_impl.cc', 'glue/webkitclient_impl.h', - 'glue/webmediaplayerclient_impl.cc', - 'glue/webmediaplayerclient_impl.h', 'glue/webmenurunner_mac.h', 'glue/webmenurunner_mac.mm', 'glue/webplugin.h', |