set eol-style to native on tons of files to head off future mixed-line-ending problems
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 19 Jan 2008 05:49:02 +0000 (05:49 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 19 Jan 2008 05:49:02 +0000 (05:49 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29663 268f45cc-cd09-0410-ab3c-d52691b4dbfc

13 files changed:
JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make
WebCore/WebCore.vcproj/migrate-idls.sh
WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp
WebCore/platform/win/SharedBufferWin.cpp
WebKit/win/COMEnumVariant.h
WebKit/win/WebDatabaseManager.cpp
WebKit/win/WebDatabaseManager.h
WebKit/win/WebKit.vcproj/WebKit.make
WebKit/win/WebSecurityOrigin.cpp
WebKit/win/WebSecurityOrigin.h
WebKitLibraries/win/tools/WinTools.make
WebKitTools/DumpRenderTree/win/MD5.h
WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h

index 18c1589..7bf6898 100644 (file)
@@ -1,19 +1,19 @@
-all:\r
-    set PATH=%PATH%;%SystemDrive%\cygwin\bin\r
-    bash build-generated-files.sh "$(WEBKITOUTPUTDIR)" "$(WEBKITLIBRARIESDIR)"\r
-    -mkdir 2>NUL "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\APICast.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JavaScript.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSBase.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSContextRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSObjectRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSStringRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSStringRefCF.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSStringRefBSTR.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSValueRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JavaScriptCore.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    xcopy /y /d "..\..\API\JSRetainPtr.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-\r
-clean:\r
-    -del /s /q "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"\r
-    -del /s /q "$(WEBKITOUTPUTDIR)\obj\JavaScriptCore\DerivedSources"\r
+all:
+    set PATH=%PATH%;%SystemDrive%\cygwin\bin
+    bash build-generated-files.sh "$(WEBKITOUTPUTDIR)" "$(WEBKITLIBRARIESDIR)"
+    -mkdir 2>NUL "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\APICast.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JavaScript.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSBase.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSContextRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSObjectRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSStringRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSStringRefCF.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSStringRefBSTR.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSValueRef.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JavaScriptCore.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    xcopy /y /d "..\..\API\JSRetainPtr.h" "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+
+clean:
+    -del /s /q "$(WEBKITOUTPUTDIR)\include\JavaScriptCore\JavaScriptCore"
+    -del /s /q "$(WEBKITOUTPUTDIR)\obj\JavaScriptCore\DerivedSources"
index 3881e44..651f230 100644 (file)
@@ -1,29 +1,29 @@
 #!/usr/bin/bash
 
-# Copyright (C) 2007 Apple Inc. All rights reserved.\r
-#\r
-# Redistribution and use in source and binary forms, with or without\r
-# modification, are permitted provided that the following conditions\r
-# are met:\r
-#\r
-# 1.  Redistributions of source code must retain the above copyright\r
-#     notice, this list of conditions and the following disclaimer. \r
-# 2.  Redistributions in binary form must reproduce the above copyright\r
-#     notice, this list of conditions and the following disclaimer in the\r
-#     documentation and/or other materials provided with the distribution. \r
-# 3.  Neither the name of Apple puter, Inc. ("Apple") nor the names of\r
-#     its contributors may be used to endorse or promote products derived\r
-#     from this software without specific prior written permission. \r
-#\r
-# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
-# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
+# Copyright (C) 2007 Apple 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:
+#
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer. 
+# 2.  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. 
+# 3.  Neither the name of Apple puter, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.
 
 NUMCPUPATH="../../WebKitTools/Scripts/num-cpus"
index 0480689..9ab6428 100644 (file)
-/*\r
- * Copyright (C) 2007 Apple Inc. All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY\r
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR\r
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\r
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\r
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \r
- */\r
-\r
-#include "config.h"\r
-\r
-#if ENABLE(VIDEO)\r
-#include "MediaPlayerPrivateQuickTimeWin.h"\r
-\r
-#include "DeprecatedString.h"\r
-#include "GraphicsContext.h"\r
-#include "KURL.h"\r
-#include "QTMovieWin.h"\r
-#include "ScrollView.h"\r
-#include <wtf/MathExtras.h>\r
-\r
-using namespace std;\r
-\r
-namespace WebCore {\r
-\r
-static const double endPointTimerInterval = 0.020;\r
-    \r
-MediaPlayerPrivate::MediaPlayerPrivate(MediaPlayer* player)\r
-    : m_player(player)\r
-    , m_seekTo(-1)\r
-    , m_endTime(numeric_limits<float>::infinity())\r
-    , m_seekTimer(this, &MediaPlayerPrivate::seekTimerFired)\r
-    , m_endPointTimer(this, &MediaPlayerPrivate::endPointTimerFired)\r
-    , m_networkState(MediaPlayer::Empty)\r
-    , m_readyState(MediaPlayer::DataUnavailable)\r
-    , m_startedPlaying(false)\r
-    , m_isStreaming(false)\r
-{\r
-}\r
-\r
-MediaPlayerPrivate::~MediaPlayerPrivate()\r
-{\r
-}\r
-\r
-void MediaPlayerPrivate::load(const String& url)\r
-{\r
-    if (!QTMovieWin::initializeQuickTime()) {\r
-        m_networkState = MediaPlayer::LoadFailed;\r
-        m_player->networkStateChanged();\r
-        return;\r
-    }\r
-\r
-    if (m_networkState != MediaPlayer::Loading) {\r
-        m_networkState = MediaPlayer::Loading;\r
-        m_player->networkStateChanged();\r
-    }\r
-    if (m_readyState != MediaPlayer::DataUnavailable) {\r
-        m_readyState = MediaPlayer::DataUnavailable;\r
-        m_player->readyStateChanged();\r
-    }\r
-    cancelSeek();\r
-    m_endPointTimer.stop();\r
-\r
-    m_qtMovie.set(new QTMovieWin(this));\r
-    m_qtMovie->load(url.characters(), url.length());\r
-    m_qtMovie->setMuted(m_player->m_muted);\r
-    m_qtMovie->setVolume(m_player->m_volume);\r
-    m_qtMovie->setVisible(m_player->m_visible);\r
-}\r
-\r
-void MediaPlayerPrivate::play()\r
-{\r
-    if (!m_qtMovie)\r
-        return;\r
-    m_startedPlaying = true;\r
-\r
-    m_qtMovie->play();\r
-    startEndPointTimerIfNeeded();\r
-}\r
-\r
-void MediaPlayerPrivate::pause()\r
-{\r
-    if (!m_qtMovie)\r
-        return;\r
-    m_startedPlaying = false;\r
-    m_qtMovie->pause();\r
-    m_endPointTimer.stop();\r
-}\r
-\r
-float MediaPlayerPrivate::duration() const\r
-{\r
-    if (!m_qtMovie)\r
-        return 0;\r
-    return m_qtMovie->duration();\r
-}\r
-\r
-float MediaPlayerPrivate::currentTime() const\r
-{\r
-    if (!m_qtMovie)\r
-        return 0;\r
-    return min(m_qtMovie->currentTime(), m_endTime);\r
-}\r
-\r
-void MediaPlayerPrivate::seek(float time)\r
-{\r
-    cancelSeek();\r
-    \r
-    if (!m_qtMovie)\r
-        return;\r
-    \r
-    if (time > duration())\r
-        time = duration();\r
-    \r
-    m_seekTo = time;\r
-    if (maxTimeLoaded() >= m_seekTo)\r
-        doSeek();\r
-    else \r
-        m_seekTimer.start(0, 0.5f);\r
-}\r
-    \r
-void MediaPlayerPrivate::doSeek() \r
-{\r
-    float oldRate = m_qtMovie->rate();\r
-    m_qtMovie->setRate(0);\r
-    m_qtMovie->setCurrentTime(m_seekTo);\r
-    float timeAfterSeek = currentTime();\r
-    // restore playback only if not at end, othewise QTMovie will loop\r
-    if (timeAfterSeek < duration() && timeAfterSeek < m_endTime)\r
-        m_qtMovie->setRate(oldRate);\r
-    cancelSeek();\r
-}\r
-\r
-void MediaPlayerPrivate::cancelSeek()\r
-{\r
-    m_seekTo = -1;\r
-    m_seekTimer.stop();\r
-}\r
-\r
-void MediaPlayerPrivate::seekTimerFired(Timer<MediaPlayerPrivate>*)\r
-{        \r
-    if (!m_qtMovie || !seeking() || currentTime() == m_seekTo) {\r
-        cancelSeek();\r
-        updateStates();\r
-        m_player->timeChanged(); \r
-        return;\r
-    } \r
-    \r
-    if (maxTimeLoaded() >= m_seekTo)\r
-        doSeek();\r
-    else {\r
-        MediaPlayer::NetworkState state = networkState();\r
-        if (state == MediaPlayer::Empty || state == MediaPlayer::Loaded) {\r
-            cancelSeek();\r
-            updateStates();\r
-            m_player->timeChanged();\r
-        }\r
-    }\r
-}\r
-\r
-void MediaPlayerPrivate::setEndTime(float time)\r
-{\r
-    m_endTime = time;\r
-    startEndPointTimerIfNeeded();\r
-}\r
-\r
-void MediaPlayerPrivate::startEndPointTimerIfNeeded()\r
-{\r
-    if (m_endTime < duration() && m_startedPlaying && !m_endPointTimer.isActive())\r
-        m_endPointTimer.startRepeating(endPointTimerInterval);\r
-}\r
-\r
-void MediaPlayerPrivate::endPointTimerFired(Timer<MediaPlayerPrivate>*)\r
-{\r
-    float time = currentTime();\r
-    if (time >= m_endTime) {\r
-        pause();\r
-        didEnd();\r
-    }\r
-}\r
-\r
-bool MediaPlayerPrivate::paused() const\r
-{\r
-    if (!m_qtMovie)\r
-        return true;\r
-    return m_qtMovie->rate() == 0.0f;\r
-}\r
-\r
-bool MediaPlayerPrivate::seeking() const\r
-{\r
-    if (!m_qtMovie)\r
-        return false;\r
-    return m_seekTo >= 0;\r
-}\r
-\r
-IntSize MediaPlayerPrivate::naturalSize() const\r
-{\r
-    if (!m_qtMovie)\r
-        return IntSize();\r
-    int width;\r
-    int height;\r
-    m_qtMovie->getNaturalSize(width, height);\r
-    return IntSize(width, height);\r
-}\r
-\r
-bool MediaPlayerPrivate::hasVideo() const\r
-{\r
-    // This is not used at the moment\r
-    return true;\r
-}\r
-\r
-void MediaPlayerPrivate::setVolume(float volume)\r
-{\r
-    if (!m_qtMovie)\r
-        return;\r
-    m_qtMovie->setVolume(volume);\r
-}\r
-\r
-void MediaPlayerPrivate::setMuted(bool b)\r
-{\r
-    if (!m_qtMovie)\r
-        return;\r
-    m_qtMovie->setMuted(b);\r
-}\r
-\r
-void MediaPlayerPrivate::setRate(float rate)\r
-{\r
-    if (!m_qtMovie)\r
-        return;\r
-    if (!paused())\r
-        m_qtMovie->setRate(rate);\r
-}\r
-\r
-int MediaPlayerPrivate::dataRate() const\r
-{\r
-    // This is not used at the moment\r
-    return 0;\r
-}\r
-\r
-float MediaPlayerPrivate::maxTimeBuffered() const\r
-{\r
-    // rtsp streams are not buffered\r
-    return m_isStreaming ? 0 : maxTimeLoaded();\r
-}\r
-\r
-float MediaPlayerPrivate::maxTimeSeekable() const\r
-{\r
-    // infinite duration means live stream\r
-    return !isfinite(duration()) ? 0 : maxTimeLoaded();\r
-}\r
-\r
-float MediaPlayerPrivate::maxTimeLoaded() const\r
-{\r
-    if (!m_qtMovie)\r
-        return 0;\r
-    return m_qtMovie->maxTimeLoaded(); \r
-}\r
-\r
-unsigned MediaPlayerPrivate::bytesLoaded() const\r
-{\r
-    if (!m_qtMovie)\r
-        return 0;\r
-    float dur = duration();\r
-    float maxTime = maxTimeLoaded();\r
-    if (!dur)\r
-        return 0;\r
-    return totalBytes() * maxTime / dur;\r
-}\r
-\r
-bool MediaPlayerPrivate::totalBytesKnown() const\r
-{\r
-    return totalBytes() > 0;\r
-}\r
-\r
-unsigned MediaPlayerPrivate::totalBytes() const\r
-{\r
-    if (!m_qtMovie)\r
-        return 0;\r
-    return m_qtMovie->dataSize();\r
-}\r
-\r
-void MediaPlayerPrivate::cancelLoad()\r
-{\r
-    if (m_networkState < MediaPlayer::Loading || m_networkState == MediaPlayer::Loaded)\r
-        return;\r
-    \r
-    // Cancel the load by destroying the movie.\r
-    m_qtMovie.clear();\r
-    \r
-    updateStates();\r
-}\r
-\r
-void MediaPlayerPrivate::updateStates()\r
-{\r
-    MediaPlayer::NetworkState oldNetworkState = m_networkState;\r
-    MediaPlayer::ReadyState oldReadyState = m_readyState;\r
-  \r
-    long loadState = m_qtMovie ? m_qtMovie->loadState() : QTMovieLoadStateError;\r
-\r
-    if (loadState >= QTMovieLoadStateLoaded && m_networkState < MediaPlayer::LoadedMetaData) {\r
-        unsigned enabledTrackCount;\r
-        m_qtMovie->disableUnsupportedTracks(enabledTrackCount);\r
-        // FIXME: We should differentiate between load errors and decode errors <rdar://problem/5605692>\r
-        if (!enabledTrackCount)\r
-            loadState = QTMovieLoadStateError;\r
-    }\r
-\r
-    // "Loaded" is reserved for fully buffered movies, never the case when streaming\r
-    if (loadState >= QTMovieLoadStateComplete && !m_isStreaming) {\r
-        if (m_networkState < MediaPlayer::Loaded)\r
-            m_networkState = MediaPlayer::Loaded;\r
-        m_readyState = MediaPlayer::CanPlayThrough;\r
-    } else if (loadState >= QTMovieLoadStatePlaythroughOK) {\r
-        if (m_networkState < MediaPlayer::LoadedFirstFrame && !seeking())\r
-            m_networkState = MediaPlayer::LoadedFirstFrame;\r
-        m_readyState = (m_qtMovie->rate() == 0.0f && m_startedPlaying) ? MediaPlayer::DataUnavailable : MediaPlayer::CanPlayThrough;\r
-    } else if (loadState >= QTMovieLoadStatePlayable) {\r
-        if (m_networkState < MediaPlayer::LoadedFirstFrame && !seeking())\r
-            m_networkState = MediaPlayer::LoadedFirstFrame;\r
-        m_readyState = (m_qtMovie->rate() == 0.0f && m_startedPlaying) ? MediaPlayer::DataUnavailable : MediaPlayer::CanPlay;\r
-    } else if (loadState >= QTMovieLoadStateLoaded) {\r
-        if (m_networkState < MediaPlayer::LoadedMetaData)\r
-            m_networkState = MediaPlayer::LoadedMetaData;\r
-        m_readyState = MediaPlayer::DataUnavailable;\r
-    } else if (loadState > QTMovieLoadStateError) {\r
-        if (m_networkState < MediaPlayer::Loading)\r
-            m_networkState = MediaPlayer::Loading;\r
-        m_readyState = MediaPlayer::DataUnavailable;        \r
-    } else {\r
-        m_networkState = MediaPlayer::LoadFailed;\r
-        m_readyState = MediaPlayer::DataUnavailable; \r
-    }\r
-\r
-    if (seeking())\r
-        m_readyState = MediaPlayer::DataUnavailable;\r
-    \r
-    if (m_networkState != oldNetworkState)\r
-        m_player->networkStateChanged();\r
-    if (m_readyState != oldReadyState)\r
-        m_player->readyStateChanged();\r
-}\r
-\r
-\r
-void MediaPlayerPrivate::didEnd()\r
-{\r
-    m_endPointTimer.stop();\r
-    m_startedPlaying = false;\r
-    updateStates();\r
-    m_player->timeChanged();\r
-}\r
-\r
-void MediaPlayerPrivate::setRect(const IntRect& r) \r
-{ \r
-    if (m_qtMovie)\r
-        m_qtMovie->setSize(r.width(), r.height());\r
-}\r
-\r
-void MediaPlayerPrivate::setVisible(bool b)\r
-{\r
-    if (!m_qtMovie)\r
-        return;\r
-    m_qtMovie->setVisible(b);\r
-}\r
-\r
-void MediaPlayerPrivate::paint(GraphicsContext* p, const IntRect& r)\r
-{\r
-    if (p->paintingDisabled() || !m_qtMovie)\r
-        return;\r
-    HDC hdc = p->getWindowsContext(r);\r
-    m_qtMovie->paint(hdc, r.x(), r.y());\r
-    p->releaseWindowsContext(hdc, r);\r
-}\r
-\r
-void MediaPlayerPrivate::getSupportedTypes(HashSet<String>& types)\r
-{\r
-    unsigned count = QTMovieWin::countSupportedTypes();\r
-    for (unsigned n = 0; n < count; n++) {\r
-        const UChar* character;\r
-        unsigned len;\r
-        QTMovieWin::getSupportedType(n, character, len);\r
-        if (len)\r
-            types.add(String(character, len));\r
-    }\r
-} \r
-\r
-bool MediaPlayerPrivate::isAvailable()\r
-{\r
-    return QTMovieWin::initializeQuickTime();\r
-}\r
-\r
-void MediaPlayerPrivate::movieEnded(QTMovieWin* movie)\r
-{\r
-    ASSERT(m_qtMovie.get() == movie);\r
-    didEnd();\r
-}\r
-\r
-void MediaPlayerPrivate::movieLoadStateChanged(QTMovieWin* movie)\r
-{\r
-    ASSERT(m_qtMovie.get() == movie);\r
-    updateStates();\r
-}\r
-\r
-void MediaPlayerPrivate::movieTimeChanged(QTMovieWin* movie)\r
-{\r
-    ASSERT(m_qtMovie.get() == movie);\r
-    updateStates();\r
-    m_player->timeChanged();\r
-}\r
-\r
-void MediaPlayerPrivate::movieNewImageAvailable(QTMovieWin* movie)\r
-{\r
-    ASSERT(m_qtMovie.get() == movie);\r
-    m_player->repaint();\r
-}\r
-\r
-}\r
-\r
-#endif\r
-\r
+/*
+ * Copyright (C) 2007 Apple 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:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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"
+
+#if ENABLE(VIDEO)
+#include "MediaPlayerPrivateQuickTimeWin.h"
+
+#include "DeprecatedString.h"
+#include "GraphicsContext.h"
+#include "KURL.h"
+#include "QTMovieWin.h"
+#include "ScrollView.h"
+#include <wtf/MathExtras.h>
+
+using namespace std;
+
+namespace WebCore {
+
+static const double endPointTimerInterval = 0.020;
+    
+MediaPlayerPrivate::MediaPlayerPrivate(MediaPlayer* player)
+    : m_player(player)
+    , m_seekTo(-1)
+    , m_endTime(numeric_limits<float>::infinity())
+    , m_seekTimer(this, &MediaPlayerPrivate::seekTimerFired)
+    , m_endPointTimer(this, &MediaPlayerPrivate::endPointTimerFired)
+    , m_networkState(MediaPlayer::Empty)
+    , m_readyState(MediaPlayer::DataUnavailable)
+    , m_startedPlaying(false)
+    , m_isStreaming(false)
+{
+}
+
+MediaPlayerPrivate::~MediaPlayerPrivate()
+{
+}
+
+void MediaPlayerPrivate::load(const String& url)
+{
+    if (!QTMovieWin::initializeQuickTime()) {
+        m_networkState = MediaPlayer::LoadFailed;
+        m_player->networkStateChanged();
+        return;
+    }
+
+    if (m_networkState != MediaPlayer::Loading) {
+        m_networkState = MediaPlayer::Loading;
+        m_player->networkStateChanged();
+    }
+    if (m_readyState != MediaPlayer::DataUnavailable) {
+        m_readyState = MediaPlayer::DataUnavailable;
+        m_player->readyStateChanged();
+    }
+    cancelSeek();
+    m_endPointTimer.stop();
+
+    m_qtMovie.set(new QTMovieWin(this));
+    m_qtMovie->load(url.characters(), url.length());
+    m_qtMovie->setMuted(m_player->m_muted);
+    m_qtMovie->setVolume(m_player->m_volume);
+    m_qtMovie->setVisible(m_player->m_visible);
+}
+
+void MediaPlayerPrivate::play()
+{
+    if (!m_qtMovie)
+        return;
+    m_startedPlaying = true;
+
+    m_qtMovie->play();
+    startEndPointTimerIfNeeded();
+}
+
+void MediaPlayerPrivate::pause()
+{
+    if (!m_qtMovie)
+        return;
+    m_startedPlaying = false;
+    m_qtMovie->pause();
+    m_endPointTimer.stop();
+}
+
+float MediaPlayerPrivate::duration() const
+{
+    if (!m_qtMovie)
+        return 0;
+    return m_qtMovie->duration();
+}
+
+float MediaPlayerPrivate::currentTime() const
+{
+    if (!m_qtMovie)
+        return 0;
+    return min(m_qtMovie->currentTime(), m_endTime);
+}
+
+void MediaPlayerPrivate::seek(float time)
+{
+    cancelSeek();
+    
+    if (!m_qtMovie)
+        return;
+    
+    if (time > duration())
+        time = duration();
+    
+    m_seekTo = time;
+    if (maxTimeLoaded() >= m_seekTo)
+        doSeek();
+    else 
+        m_seekTimer.start(0, 0.5f);
+}
+    
+void MediaPlayerPrivate::doSeek() 
+{
+    float oldRate = m_qtMovie->rate();
+    m_qtMovie->setRate(0);
+    m_qtMovie->setCurrentTime(m_seekTo);
+    float timeAfterSeek = currentTime();
+    // restore playback only if not at end, othewise QTMovie will loop
+    if (timeAfterSeek < duration() && timeAfterSeek < m_endTime)
+        m_qtMovie->setRate(oldRate);
+    cancelSeek();
+}
+
+void MediaPlayerPrivate::cancelSeek()
+{
+    m_seekTo = -1;
+    m_seekTimer.stop();
+}
+
+void MediaPlayerPrivate::seekTimerFired(Timer<MediaPlayerPrivate>*)
+{        
+    if (!m_qtMovie || !seeking() || currentTime() == m_seekTo) {
+        cancelSeek();
+        updateStates();
+        m_player->timeChanged(); 
+        return;
+    } 
+    
+    if (maxTimeLoaded() >= m_seekTo)
+        doSeek();
+    else {
+        MediaPlayer::NetworkState state = networkState();
+        if (state == MediaPlayer::Empty || state == MediaPlayer::Loaded) {
+            cancelSeek();
+            updateStates();
+            m_player->timeChanged();
+        }
+    }
+}
+
+void MediaPlayerPrivate::setEndTime(float time)
+{
+    m_endTime = time;
+    startEndPointTimerIfNeeded();
+}
+
+void MediaPlayerPrivate::startEndPointTimerIfNeeded()
+{
+    if (m_endTime < duration() && m_startedPlaying && !m_endPointTimer.isActive())
+        m_endPointTimer.startRepeating(endPointTimerInterval);
+}
+
+void MediaPlayerPrivate::endPointTimerFired(Timer<MediaPlayerPrivate>*)
+{
+    float time = currentTime();
+    if (time >= m_endTime) {
+        pause();
+        didEnd();
+    }
+}
+
+bool MediaPlayerPrivate::paused() const
+{
+    if (!m_qtMovie)
+        return true;
+    return m_qtMovie->rate() == 0.0f;
+}
+
+bool MediaPlayerPrivate::seeking() const
+{
+    if (!m_qtMovie)
+        return false;
+    return m_seekTo >= 0;
+}
+
+IntSize MediaPlayerPrivate::naturalSize() const
+{
+    if (!m_qtMovie)
+        return IntSize();
+    int width;
+    int height;
+    m_qtMovie->getNaturalSize(width, height);
+    return IntSize(width, height);
+}
+
+bool MediaPlayerPrivate::hasVideo() const
+{
+    // This is not used at the moment
+    return true;
+}
+
+void MediaPlayerPrivate::setVolume(float volume)
+{
+    if (!m_qtMovie)
+        return;
+    m_qtMovie->setVolume(volume);
+}
+
+void MediaPlayerPrivate::setMuted(bool b)
+{
+    if (!m_qtMovie)
+        return;
+    m_qtMovie->setMuted(b);
+}
+
+void MediaPlayerPrivate::setRate(float rate)
+{
+    if (!m_qtMovie)
+        return;
+    if (!paused())
+        m_qtMovie->setRate(rate);
+}
+
+int MediaPlayerPrivate::dataRate() const
+{
+    // This is not used at the moment
+    return 0;
+}
+
+float MediaPlayerPrivate::maxTimeBuffered() const
+{
+    // rtsp streams are not buffered
+    return m_isStreaming ? 0 : maxTimeLoaded();
+}
+
+float MediaPlayerPrivate::maxTimeSeekable() const
+{
+    // infinite duration means live stream
+    return !isfinite(duration()) ? 0 : maxTimeLoaded();
+}
+
+float MediaPlayerPrivate::maxTimeLoaded() const
+{
+    if (!m_qtMovie)
+        return 0;
+    return m_qtMovie->maxTimeLoaded(); 
+}
+
+unsigned MediaPlayerPrivate::bytesLoaded() const
+{
+    if (!m_qtMovie)
+        return 0;
+    float dur = duration();
+    float maxTime = maxTimeLoaded();
+    if (!dur)
+        return 0;
+    return totalBytes() * maxTime / dur;
+}
+
+bool MediaPlayerPrivate::totalBytesKnown() const
+{
+    return totalBytes() > 0;
+}
+
+unsigned MediaPlayerPrivate::totalBytes() const
+{
+    if (!m_qtMovie)
+        return 0;
+    return m_qtMovie->dataSize();
+}
+
+void MediaPlayerPrivate::cancelLoad()
+{
+    if (m_networkState < MediaPlayer::Loading || m_networkState == MediaPlayer::Loaded)
+        return;
+    
+    // Cancel the load by destroying the movie.
+    m_qtMovie.clear();
+    
+    updateStates();
+}
+
+void MediaPlayerPrivate::updateStates()
+{
+    MediaPlayer::NetworkState oldNetworkState = m_networkState;
+    MediaPlayer::ReadyState oldReadyState = m_readyState;
+  
+    long loadState = m_qtMovie ? m_qtMovie->loadState() : QTMovieLoadStateError;
+
+    if (loadState >= QTMovieLoadStateLoaded && m_networkState < MediaPlayer::LoadedMetaData) {
+        unsigned enabledTrackCount;
+        m_qtMovie->disableUnsupportedTracks(enabledTrackCount);
+        // FIXME: We should differentiate between load errors and decode errors <rdar://problem/5605692>
+        if (!enabledTrackCount)
+            loadState = QTMovieLoadStateError;
+    }
+
+    // "Loaded" is reserved for fully buffered movies, never the case when streaming
+    if (loadState >= QTMovieLoadStateComplete && !m_isStreaming) {
+        if (m_networkState < MediaPlayer::Loaded)
+            m_networkState = MediaPlayer::Loaded;
+        m_readyState = MediaPlayer::CanPlayThrough;
+    } else if (loadState >= QTMovieLoadStatePlaythroughOK) {
+        if (m_networkState < MediaPlayer::LoadedFirstFrame && !seeking())
+            m_networkState = MediaPlayer::LoadedFirstFrame;
+        m_readyState = (m_qtMovie->rate() == 0.0f && m_startedPlaying) ? MediaPlayer::DataUnavailable : MediaPlayer::CanPlayThrough;
+    } else if (loadState >= QTMovieLoadStatePlayable) {
+        if (m_networkState < MediaPlayer::LoadedFirstFrame && !seeking())
+            m_networkState = MediaPlayer::LoadedFirstFrame;
+        m_readyState = (m_qtMovie->rate() == 0.0f && m_startedPlaying) ? MediaPlayer::DataUnavailable : MediaPlayer::CanPlay;
+    } else if (loadState >= QTMovieLoadStateLoaded) {
+        if (m_networkState < MediaPlayer::LoadedMetaData)
+            m_networkState = MediaPlayer::LoadedMetaData;
+        m_readyState = MediaPlayer::DataUnavailable;
+    } else if (loadState > QTMovieLoadStateError) {
+        if (m_networkState < MediaPlayer::Loading)
+            m_networkState = MediaPlayer::Loading;
+        m_readyState = MediaPlayer::DataUnavailable;        
+    } else {
+        m_networkState = MediaPlayer::LoadFailed;
+        m_readyState = MediaPlayer::DataUnavailable; 
+    }
+
+    if (seeking())
+        m_readyState = MediaPlayer::DataUnavailable;
+    
+    if (m_networkState != oldNetworkState)
+        m_player->networkStateChanged();
+    if (m_readyState != oldReadyState)
+        m_player->readyStateChanged();
+}
+
+
+void MediaPlayerPrivate::didEnd()
+{
+    m_endPointTimer.stop();
+    m_startedPlaying = false;
+    updateStates();
+    m_player->timeChanged();
+}
+
+void MediaPlayerPrivate::setRect(const IntRect& r) 
+{ 
+    if (m_qtMovie)
+        m_qtMovie->setSize(r.width(), r.height());
+}
+
+void MediaPlayerPrivate::setVisible(bool b)
+{
+    if (!m_qtMovie)
+        return;
+    m_qtMovie->setVisible(b);
+}
+
+void MediaPlayerPrivate::paint(GraphicsContext* p, const IntRect& r)
+{
+    if (p->paintingDisabled() || !m_qtMovie)
+        return;
+    HDC hdc = p->getWindowsContext(r);
+    m_qtMovie->paint(hdc, r.x(), r.y());
+    p->releaseWindowsContext(hdc, r);
+}
+
+void MediaPlayerPrivate::getSupportedTypes(HashSet<String>& types)
+{
+    unsigned count = QTMovieWin::countSupportedTypes();
+    for (unsigned n = 0; n < count; n++) {
+        const UChar* character;
+        unsigned len;
+        QTMovieWin::getSupportedType(n, character, len);
+        if (len)
+            types.add(String(character, len));
+    }
+} 
+
+bool MediaPlayerPrivate::isAvailable()
+{
+    return QTMovieWin::initializeQuickTime();
+}
+
+void MediaPlayerPrivate::movieEnded(QTMovieWin* movie)
+{
+    ASSERT(m_qtMovie.get() == movie);
+    didEnd();
+}
+
+void MediaPlayerPrivate::movieLoadStateChanged(QTMovieWin* movie)
+{
+    ASSERT(m_qtMovie.get() == movie);
+    updateStates();
+}
+
+void MediaPlayerPrivate::movieTimeChanged(QTMovieWin* movie)
+{
+    ASSERT(m_qtMovie.get() == movie);
+    updateStates();
+    m_player->timeChanged();
+}
+
+void MediaPlayerPrivate::movieNewImageAvailable(QTMovieWin* movie)
+{
+    ASSERT(m_qtMovie.get() == movie);
+    m_player->repaint();
+}
+
+}
+
+#endif
+
index 6a55991..99422f2 100644 (file)
  * 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.
- */\r
-\r
-#include "config.h"\r
-#include "SharedBuffer.h"\r
-\r
-namespace WebCore {\r
-\r
+ */
+
+#include "config.h"
+#include "SharedBuffer.h"
+
+namespace WebCore {
+
 PassRefPtr<SharedBuffer> SharedBuffer::createWithContentsOfFile(const String& filePath)
 {
     if (filePath.isEmpty())
@@ -62,7 +62,7 @@ PassRefPtr<SharedBuffer> SharedBuffer::createWithContentsOfFile(const String& fi
 
 exit:
     fclose(fileDescriptor);
-    return result.release();\r
-}\r
-\r
-}; // namespace WebCore\r
+    return result.release();
+}
+
+}; // namespace WebCore
index 96c620e..be0ac8c 100644 (file)
-/*\r
- * Copyright (C) 2007 Apple Inc. All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * 1.  Redistributions of source code must retain the above copyright\r
- *     notice, this list of conditions and the following disclaimer.\r
- * 2.  Redistributions in binary form must reproduce the above copyright\r
- *     notice, this list of conditions and the following disclaimer in the\r
- *     documentation and/or other materials provided with the distribution.\r
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of\r
- *     its contributors may be used to endorse or promote products derived\r
- *     from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-\r
-#ifndef COMEnumVariant_h\r
-#define COMEnumVariant_h\r
-\r
-#define NOMINMAX\r
-#include <unknwn.h>\r
-\r
-#include <WebCore/BString.h>\r
-#include <wtf/Assertions.h>\r
-#include <wtf/Noncopyable.h>\r
-\r
-namespace WebCore {\r
-    class String;\r
-}\r
-\r
-template<typename T> struct COMVariantSetter {};\r
-\r
-template<> struct COMVariantSetter<WebCore::String>\r
-{\r
-    static void setVariant(VARIANT* variant, const WebCore::String& value)\r
-    {\r
-        ASSERT(V_VT(variant) == VT_EMPTY);\r
-\r
-        V_VT(variant) = VT_BSTR;\r
-        V_BSTR(variant) = WebCore::BString(value).release();\r
-    }\r
-};\r
-\r
-template<> struct COMVariantSetter<unsigned long long>\r
-{\r
-    static void setVariant(VARIANT* variant, unsigned long long value)\r
-    {\r
-        ASSERT(V_VT(variant) == VT_EMPTY);\r
-\r
-        V_VT(variant) = VT_UI8;\r
-        V_UI8(variant) = value;\r
-    }\r
-};\r
-\r
-template<typename COMType, typename UnderlyingType>\r
-struct COMIUnknownVariantSetter\r
-{\r
-    static void setVariant(VARIANT* variant, const UnderlyingType& value)\r
-    {\r
-        ASSERT(V_VT(variant) == VT_EMPTY);\r
-\r
-        V_VT(variant) = VT_UNKNOWN;\r
-        V_UNKNOWN(variant) = COMType::createInstance(value);\r
-    }\r
-};\r
-\r
-template<typename ContainerType>\r
-class COMEnumVariant : public IEnumVARIANT, Noncopyable {\r
-public:\r
-    static COMEnumVariant* adopt(ContainerType&);\r
-    static COMEnumVariant* createInstance(const ContainerType&);\r
-\r
-    // IUnknown\r
-    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);\r
-    virtual ULONG STDMETHODCALLTYPE AddRef();\r
-    virtual ULONG STDMETHODCALLTYPE Release();\r
-\r
-    // IEnumVARIANT\r
-    virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, VARIANT* rgVar, ULONG* pCeltFetched);\r
-    virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);\r
-    virtual HRESULT STDMETHODCALLTYPE Reset();\r
-    virtual HRESULT STDMETHODCALLTYPE Clone(IEnumVARIANT** ppEnum);\r
-\r
-private:\r
-    COMEnumVariant()\r
-        : m_refCount(0)\r
-    {\r
-    }\r
-\r
-    COMEnumVariant(const ContainerType& container)\r
-        : m_refCount(0)\r
-        , m_container(container)       \r
-        , m_currentPos(m_container.begin())\r
-    {\r
-    }\r
-\r
-    ~COMEnumVariant() {}\r
-\r
-    ULONG m_refCount;\r
-\r
-    ContainerType m_container;\r
-    typename ContainerType::const_iterator m_currentPos;\r
-};\r
-\r
-// COMEnumVariant ------------------------------------------------------------------\r
-template<typename ContainerType>\r
-COMEnumVariant<typename ContainerType>* COMEnumVariant<ContainerType>::adopt(ContainerType& container) \r
-{\r
-    COMEnumVariant* instance = new COMEnumVariant;\r
-    instance->m_container.swap(container);\r
-    instance->m_currentPos = instance->m_container.begin();\r
-    instance->AddRef();\r
-    return instance;\r
-}\r
-\r
-template<typename ContainerType>\r
-COMEnumVariant<typename ContainerType>* COMEnumVariant<ContainerType>::createInstance(const ContainerType& container)\r
-{\r
-    COMEnumVariant* instance = new COMEnumVariant(container);\r
-    instance->AddRef();\r
-    return instance;\r
-}\r
-\r
-// IUnknown ------------------------------------------------------------------------\r
-template<typename ContainerType>\r
-HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::QueryInterface(REFIID riid, void** ppvObject)\r
-{\r
-    *ppvObject = 0;\r
-    if (IsEqualGUID(riid, IID_IUnknown))\r
-        *ppvObject = static_cast<COMEnumVariant*>(this);\r
-    else if (IsEqualGUID(riid, IID_IEnumVARIANT))\r
-        *ppvObject = static_cast<COMEnumVariant*>(this);\r
-    else\r
-        return E_NOINTERFACE;\r
-\r
-    AddRef();\r
-    return S_OK;\r
-}\r
-\r
-template<typename ContainerType>\r
-ULONG STDMETHODCALLTYPE COMEnumVariant<ContainerType>::AddRef()\r
-{\r
-    return ++m_refCount;\r
-}\r
-\r
-template<typename ContainerType>\r
-ULONG STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Release()\r
-{\r
-    ULONG newRef = --m_refCount;\r
-    if (!newRef)\r
-        delete this;\r
-\r
-    return newRef;\r
-}\r
-\r
-// IEnumVARIANT --------------------------------------------------------------------\r
-template<typename ContainerType>\r
-HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Next(ULONG celt, VARIANT* rgVar, ULONG* pCeltFetched)\r
-{\r
-    if (pCeltFetched)\r
-        *pCeltFetched = 0;\r
-    if (!rgVar)\r
-        return E_POINTER;\r
-    for (unsigned i = 0 ; i < celt; i++)\r
-        VariantInit(&rgVar[i]);\r
-\r
-    for (unsigned i = 0; i < celt; i++) {\r
-        if (m_currentPos == m_container.end())\r
-            return S_FALSE;\r
-\r
-        COMVariantSetter<ContainerType::ValueType>::setVariant(&rgVar[i], *m_currentPos);\r
-        ++m_currentPos;\r
-        if (pCeltFetched)\r
-            (*pCeltFetched)++;\r
-    }\r
-\r
-    return S_OK;\r
-}\r
-\r
-template<typename ContainerType>\r
-HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Skip(ULONG celt) \r
-{\r
-    for (unsigned i = 0; i < celt; i++) {\r
-        if (m_currentPos == m_container.end())\r
-            return S_FALSE;\r
-\r
-        ++m_currentPos;\r
-    }\r
-    return S_OK;\r
-}\r
-    \r
-template<typename ContainerType>\r
-HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Reset() \r
-{\r
-    m_currentPos = m_container.begin();\r
-    return S_OK;\r
-}\r
-    \r
-template<typename ContainerType>\r
-HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Clone(IEnumVARIANT** ppEnum)\r
-{\r
-    if (!ppEnum)\r
-        return E_POINTER;\r
-\r
-    *ppEnum = 0;\r
-    return E_NOTIMPL;\r
-}\r
-\r
-#endif\r
+/*
+ * Copyright (C) 2007 Apple 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:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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 COMEnumVariant_h
+#define COMEnumVariant_h
+
+#define NOMINMAX
+#include <unknwn.h>
+
+#include <WebCore/BString.h>
+#include <wtf/Assertions.h>
+#include <wtf/Noncopyable.h>
+
+namespace WebCore {
+    class String;
+}
+
+template<typename T> struct COMVariantSetter {};
+
+template<> struct COMVariantSetter<WebCore::String>
+{
+    static void setVariant(VARIANT* variant, const WebCore::String& value)
+    {
+        ASSERT(V_VT(variant) == VT_EMPTY);
+
+        V_VT(variant) = VT_BSTR;
+        V_BSTR(variant) = WebCore::BString(value).release();
+    }
+};
+
+template<> struct COMVariantSetter<unsigned long long>
+{
+    static void setVariant(VARIANT* variant, unsigned long long value)
+    {
+        ASSERT(V_VT(variant) == VT_EMPTY);
+
+        V_VT(variant) = VT_UI8;
+        V_UI8(variant) = value;
+    }
+};
+
+template<typename COMType, typename UnderlyingType>
+struct COMIUnknownVariantSetter
+{
+    static void setVariant(VARIANT* variant, const UnderlyingType& value)
+    {
+        ASSERT(V_VT(variant) == VT_EMPTY);
+
+        V_VT(variant) = VT_UNKNOWN;
+        V_UNKNOWN(variant) = COMType::createInstance(value);
+    }
+};
+
+template<typename ContainerType>
+class COMEnumVariant : public IEnumVARIANT, Noncopyable {
+public:
+    static COMEnumVariant* adopt(ContainerType&);
+    static COMEnumVariant* createInstance(const ContainerType&);
+
+    // IUnknown
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
+    virtual ULONG STDMETHODCALLTYPE AddRef();
+    virtual ULONG STDMETHODCALLTYPE Release();
+
+    // IEnumVARIANT
+    virtual HRESULT STDMETHODCALLTYPE Next(ULONG celt, VARIANT* rgVar, ULONG* pCeltFetched);
+    virtual HRESULT STDMETHODCALLTYPE Skip(ULONG celt);
+    virtual HRESULT STDMETHODCALLTYPE Reset();
+    virtual HRESULT STDMETHODCALLTYPE Clone(IEnumVARIANT** ppEnum);
+
+private:
+    COMEnumVariant()
+        : m_refCount(0)
+    {
+    }
+
+    COMEnumVariant(const ContainerType& container)
+        : m_refCount(0)
+        , m_container(container)       
+        , m_currentPos(m_container.begin())
+    {
+    }
+
+    ~COMEnumVariant() {}
+
+    ULONG m_refCount;
+
+    ContainerType m_container;
+    typename ContainerType::const_iterator m_currentPos;
+};
+
+// COMEnumVariant ------------------------------------------------------------------
+template<typename ContainerType>
+COMEnumVariant<typename ContainerType>* COMEnumVariant<ContainerType>::adopt(ContainerType& container) 
+{
+    COMEnumVariant* instance = new COMEnumVariant;
+    instance->m_container.swap(container);
+    instance->m_currentPos = instance->m_container.begin();
+    instance->AddRef();
+    return instance;
+}
+
+template<typename ContainerType>
+COMEnumVariant<typename ContainerType>* COMEnumVariant<ContainerType>::createInstance(const ContainerType& container)
+{
+    COMEnumVariant* instance = new COMEnumVariant(container);
+    instance->AddRef();
+    return instance;
+}
+
+// IUnknown ------------------------------------------------------------------------
+template<typename ContainerType>
+HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::QueryInterface(REFIID riid, void** ppvObject)
+{
+    *ppvObject = 0;
+    if (IsEqualGUID(riid, IID_IUnknown))
+        *ppvObject = static_cast<COMEnumVariant*>(this);
+    else if (IsEqualGUID(riid, IID_IEnumVARIANT))
+        *ppvObject = static_cast<COMEnumVariant*>(this);
+    else
+        return E_NOINTERFACE;
+
+    AddRef();
+    return S_OK;
+}
+
+template<typename ContainerType>
+ULONG STDMETHODCALLTYPE COMEnumVariant<ContainerType>::AddRef()
+{
+    return ++m_refCount;
+}
+
+template<typename ContainerType>
+ULONG STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Release()
+{
+    ULONG newRef = --m_refCount;
+    if (!newRef)
+        delete this;
+
+    return newRef;
+}
+
+// IEnumVARIANT --------------------------------------------------------------------
+template<typename ContainerType>
+HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Next(ULONG celt, VARIANT* rgVar, ULONG* pCeltFetched)
+{
+    if (pCeltFetched)
+        *pCeltFetched = 0;
+    if (!rgVar)
+        return E_POINTER;
+    for (unsigned i = 0 ; i < celt; i++)
+        VariantInit(&rgVar[i]);
+
+    for (unsigned i = 0; i < celt; i++) {
+        if (m_currentPos == m_container.end())
+            return S_FALSE;
+
+        COMVariantSetter<ContainerType::ValueType>::setVariant(&rgVar[i], *m_currentPos);
+        ++m_currentPos;
+        if (pCeltFetched)
+            (*pCeltFetched)++;
+    }
+
+    return S_OK;
+}
+
+template<typename ContainerType>
+HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Skip(ULONG celt) 
+{
+    for (unsigned i = 0; i < celt; i++) {
+        if (m_currentPos == m_container.end())
+            return S_FALSE;
+
+        ++m_currentPos;
+    }
+    return S_OK;
+}
+    
+template<typename ContainerType>
+HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Reset() 
+{
+    m_currentPos = m_container.begin();
+    return S_OK;
+}
+    
+template<typename ContainerType>
+HRESULT STDMETHODCALLTYPE COMEnumVariant<ContainerType>::Clone(IEnumVARIANT** ppEnum)
+{
+    if (!ppEnum)
+        return E_POINTER;
+
+    *ppEnum = 0;
+    return E_NOTIMPL;
+}
+
+#endif
index e3a3127..dd18d04 100644 (file)
-/*\r
- * Copyright (C) 2007 Apple Inc. All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * 1.  Redistributions of source code must retain the above copyright\r
- *     notice, this list of conditions and the following disclaimer.\r
- * 2.  Redistributions in binary form must reproduce the above copyright\r
- *     notice, this list of conditions and the following disclaimer in the\r
- *     documentation and/or other materials provided with the distribution.\r
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of\r
- *     its contributors may be used to endorse or promote products derived\r
- *     from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-#include "config.h"\r
-#include "WebDatabaseManager.h"\r
-#include "WebKitDLL.h"\r
-\r
-#include "CFDictionaryPropertyBag.h"\r
-#include "COMEnumVariant.h"\r
-#include "MarshallingHelpers.h"\r
-#include "WebNotificationCenter.h"\r
-#include "WebSecurityOrigin.h"\r
-\r
-#include <WebCore/BString.h>\r
-#include <WebCore/COMPtr.h>\r
-#include <WebCore/DatabaseTracker.h>\r
-#include <WebCore/FileSystem.h>\r
-#include <WebCore/SecurityOrigin.h>\r
-\r
-using namespace WebCore;\r
-\r
-static inline bool isEqual(LPCWSTR s1, LPCWSTR s2)\r
-{\r
-    return !wcscmp(s1, s2);\r
-}\r
-\r
-class DatabaseDetailsPropertyBag : public IPropertyBag, Noncopyable {\r
-public:\r
-    static DatabaseDetailsPropertyBag* createInstance(const DatabaseDetails&);\r
-\r
-    // IUnknown\r
-    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);\r
-    virtual ULONG STDMETHODCALLTYPE AddRef();\r
-    virtual ULONG STDMETHODCALLTYPE Release();\r
-\r
-    // IPropertyBag\r
-    virtual HRESULT STDMETHODCALLTYPE Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog* pErrorLog);\r
-    virtual HRESULT STDMETHODCALLTYPE Write(LPCOLESTR pszPropName, VARIANT* pVar);\r
-private:\r
-    DatabaseDetailsPropertyBag(const DatabaseDetails& details) \r
-        : m_refCount(0)\r
-        , m_details(details) { }\r
-    ~DatabaseDetailsPropertyBag() { }\r
-\r
-    ULONG m_refCount;\r
-    DatabaseDetails m_details;\r
-};\r
-\r
-// DatabaseDetailsPropertyBag ------------------------------------------------------\r
-DatabaseDetailsPropertyBag* DatabaseDetailsPropertyBag::createInstance(const DatabaseDetails& details)\r
-{\r
-    DatabaseDetailsPropertyBag* instance = new DatabaseDetailsPropertyBag(details);\r
-    instance->AddRef();\r
-    return instance;\r
-}\r
-\r
-// IUnknown ------------------------------------------------------------------------\r
-ULONG STDMETHODCALLTYPE DatabaseDetailsPropertyBag::AddRef()\r
-{\r
-    return ++m_refCount;\r
-}\r
-\r
-ULONG STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Release()\r
-{\r
-    ULONG newRef = --m_refCount;\r
-    if (!newRef)\r
-        delete this;\r
-\r
-    return newRef;\r
-}\r
-\r
-HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::QueryInterface(REFIID riid, void** ppvObject)\r
-{\r
-    *ppvObject = 0;\r
-    if (IsEqualGUID(riid, IID_IUnknown))\r
-        *ppvObject = static_cast<DatabaseDetailsPropertyBag*>(this);\r
-    else if (IsEqualGUID(riid, IID_IPropertyBag))\r
-        *ppvObject = static_cast<DatabaseDetailsPropertyBag*>(this);\r
-    else\r
-        return E_NOINTERFACE;\r
-\r
-    AddRef();\r
-    return S_OK;\r
-}\r
-\r
-// IPropertyBag --------------------------------------------------------------------\r
-HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog*)\r
-{\r
-    if (!pszPropName || !pVar)\r
-        return E_POINTER;\r
-\r
-    VariantInit(pVar);\r
-\r
-    if (isEqual(pszPropName, WebDatabaseDisplayNameKey)) {\r
-        COMVariantSetter<String>::setVariant(pVar, m_details.displayName());\r
-        return S_OK;\r
-    } else if (isEqual(pszPropName, WebDatabaseExpectedSizeKey)) {\r
-        COMVariantSetter<unsigned long long>::setVariant(pVar, m_details.expectedUsage());\r
-        return S_OK;\r
-    } else if (isEqual(pszPropName, WebDatabaseUsageKey)) {\r
-        COMVariantSetter<unsigned long long>::setVariant(pVar, m_details.currentUsage());\r
-        return S_OK;\r
-    }\r
-\r
-    return E_INVALIDARG;\r
-}\r
-\r
-HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Write(LPCOLESTR pszPropName, VARIANT* pVar)\r
-{\r
-    if (!pszPropName || !pVar)\r
-        return E_POINTER;\r
-\r
-    return E_FAIL;\r
-}\r
-\r
-static COMPtr<WebDatabaseManager> s_sharedWebDatabaseManager;\r
-\r
-// WebDatabaseManager --------------------------------------------------------------\r
-WebDatabaseManager* WebDatabaseManager::createInstance()\r
-{\r
-    WebDatabaseManager* manager = new WebDatabaseManager();\r
-    manager->AddRef();\r
-    return manager;    \r
-}\r
-\r
-WebDatabaseManager::WebDatabaseManager()\r
-    : m_refCount(0)\r
-{\r
-    gClassCount++;\r
-}\r
-\r
-WebDatabaseManager::~WebDatabaseManager()\r
-{\r
-    gClassCount--;\r
-}\r
-\r
-// IUnknown ------------------------------------------------------------------------\r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::QueryInterface(REFIID riid, void** ppvObject)\r
-{\r
-    *ppvObject = 0;\r
-    if (IsEqualGUID(riid, IID_IUnknown))\r
-        *ppvObject = static_cast<WebDatabaseManager*>(this);\r
-    else if (IsEqualGUID(riid, IID_IWebDatabaseManager))\r
-        *ppvObject = static_cast<WebDatabaseManager*>(this);\r
-    else\r
-        return E_NOINTERFACE;\r
-\r
-    AddRef();\r
-    return S_OK;\r
-}\r
-\r
-ULONG STDMETHODCALLTYPE WebDatabaseManager::AddRef()\r
-{\r
-    return ++m_refCount;\r
-}\r
-\r
-ULONG STDMETHODCALLTYPE WebDatabaseManager::Release()\r
-{\r
-    ULONG newRef = --m_refCount;\r
-    if (!newRef)\r
-        delete this;\r
-\r
-    return newRef;\r
-}\r
-\r
-template<> struct COMVariantSetter<RefPtr<SecurityOrigin> > : COMIUnknownVariantSetter<WebSecurityOrigin, RefPtr<SecurityOrigin> > {};\r
-\r
-// IWebDatabaseManager -------------------------------------------------------------\r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::sharedWebDatabaseManager( \r
-    /* [retval][out] */ IWebDatabaseManager** result)\r
-{\r
-    if (!s_sharedWebDatabaseManager) {\r
-        s_sharedWebDatabaseManager.adoptRef(WebDatabaseManager::createInstance());\r
-        DatabaseTracker::tracker().setClient(s_sharedWebDatabaseManager.get());\r
-    }\r
-\r
-    return s_sharedWebDatabaseManager.copyRefTo(result);\r
-}\r
-\r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::origins( \r
-    /* [retval][out] */ IEnumVARIANT** result)\r
-{\r
-    if (!result)\r
-        return E_POINTER;\r
-\r
-    *result = 0;\r
-\r
-    if (this != s_sharedWebDatabaseManager)\r
-        return E_FAIL;\r
-\r
-    Vector<RefPtr<SecurityOrigin> > origins;\r
-    DatabaseTracker::tracker().origins(origins);\r
-        COMPtr<COMEnumVariant<Vector<RefPtr<SecurityOrigin> > > > enumVariant(AdoptCOM, COMEnumVariant<Vector<RefPtr<SecurityOrigin> > >::adopt(origins));\r
-\r
-    *result = enumVariant.releaseRef();\r
-    return S_OK;\r
-}\r
-    \r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::databasesWithOrigin( \r
-    /* [in] */ IWebSecurityOrigin* origin,\r
-    /* [retval][out] */ IEnumVARIANT** result)\r
-{\r
-    if (!origin || !result)\r
-        return E_POINTER;\r
-\r
-    *result = 0;\r
-\r
-    if (this != s_sharedWebDatabaseManager)\r
-        return E_FAIL;\r
-\r
-    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);\r
-    if (!webSecurityOrigin)\r
-        return E_FAIL;\r
-\r
-    Vector<String> databaseNames;\r
-    DatabaseTracker::tracker().databaseNamesForOrigin(webSecurityOrigin->securityOrigin(), databaseNames);\r
-\r
-    COMPtr<COMEnumVariant<Vector<String> > > enumVariant(AdoptCOM, COMEnumVariant<Vector<String> >::adopt(databaseNames));\r
-\r
-    *result = enumVariant.releaseRef();\r
-    return S_OK;\r
-}\r
-\r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::detailsForDatabaseWithOrigin( \r
-    /* [in] */ BSTR databaseName,\r
-    /* [in] */ IWebSecurityOrigin* origin,\r
-    /* [retval][out] */ IPropertyBag** result)\r
-{\r
-    if (!origin || !result)\r
-        return E_POINTER;\r
-\r
-    *result = 0;\r
-\r
-    if (this != s_sharedWebDatabaseManager)\r
-        return E_FAIL;\r
-\r
-    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);\r
-    if (!webSecurityOrigin)\r
-        return E_FAIL;\r
-\r
-    DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(String(databaseName, SysStringLen(databaseName)),\r
-        webSecurityOrigin->securityOrigin());\r
-\r
-    if (!details.isValid())\r
-        return E_INVALIDARG;\r
-\r
-    *result = DatabaseDetailsPropertyBag::createInstance(details);\r
-    return S_OK;\r
-}\r
-    \r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteAllDatabases()\r
-{\r
-    if (this != s_sharedWebDatabaseManager)\r
-        return E_FAIL;\r
-\r
-    DatabaseTracker::tracker().deleteAllDatabases();\r
-\r
-    return S_OK;\r
-}\r
-   \r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteDatabasesWithOrigin( \r
-    /* [in] */ IWebSecurityOrigin* origin)\r
-{\r
-    if (!origin)\r
-        return E_POINTER;\r
-\r
-    if (this != s_sharedWebDatabaseManager)\r
-        return E_FAIL;\r
-\r
-    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);\r
-    if (!webSecurityOrigin)\r
-        return E_FAIL;\r
-\r
-    DatabaseTracker::tracker().deleteDatabasesWithOrigin(webSecurityOrigin->securityOrigin());\r
-\r
-    return S_OK;\r
-}\r
-    \r
-HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteDatabaseWithOrigin( \r
-    /* [in] */ BSTR databaseName,\r
-    /* [in] */ IWebSecurityOrigin* origin)\r
-{\r
-    if (!origin)\r
-        return E_POINTER;\r
-\r
-    if (!databaseName)\r
-        return E_INVALIDARG;\r
-\r
-    if (this != s_sharedWebDatabaseManager)\r
-        return E_FAIL;\r
-\r
-    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);\r
-    if (!webSecurityOrigin)\r
-        return E_FAIL;\r
-\r
-    DatabaseTracker::tracker().deleteDatabase(webSecurityOrigin->securityOrigin(), String(databaseName, SysStringLen(databaseName)));\r
-\r
-    return S_OK;\r
-}\r
-\r
+/*
+ * Copyright (C) 2007 Apple 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:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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 "WebDatabaseManager.h"
+#include "WebKitDLL.h"
+
+#include "CFDictionaryPropertyBag.h"
+#include "COMEnumVariant.h"
+#include "MarshallingHelpers.h"
+#include "WebNotificationCenter.h"
+#include "WebSecurityOrigin.h"
+
+#include <WebCore/BString.h>
+#include <WebCore/COMPtr.h>
+#include <WebCore/DatabaseTracker.h>
+#include <WebCore/FileSystem.h>
+#include <WebCore/SecurityOrigin.h>
+
+using namespace WebCore;
+
+static inline bool isEqual(LPCWSTR s1, LPCWSTR s2)
+{
+    return !wcscmp(s1, s2);
+}
+
+class DatabaseDetailsPropertyBag : public IPropertyBag, Noncopyable {
+public:
+    static DatabaseDetailsPropertyBag* createInstance(const DatabaseDetails&);
+
+    // IUnknown
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
+    virtual ULONG STDMETHODCALLTYPE AddRef();
+    virtual ULONG STDMETHODCALLTYPE Release();
+
+    // IPropertyBag
+    virtual HRESULT STDMETHODCALLTYPE Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog* pErrorLog);
+    virtual HRESULT STDMETHODCALLTYPE Write(LPCOLESTR pszPropName, VARIANT* pVar);
+private:
+    DatabaseDetailsPropertyBag(const DatabaseDetails& details) 
+        : m_refCount(0)
+        , m_details(details) { }
+    ~DatabaseDetailsPropertyBag() { }
+
+    ULONG m_refCount;
+    DatabaseDetails m_details;
+};
+
+// DatabaseDetailsPropertyBag ------------------------------------------------------
+DatabaseDetailsPropertyBag* DatabaseDetailsPropertyBag::createInstance(const DatabaseDetails& details)
+{
+    DatabaseDetailsPropertyBag* instance = new DatabaseDetailsPropertyBag(details);
+    instance->AddRef();
+    return instance;
+}
+
+// IUnknown ------------------------------------------------------------------------
+ULONG STDMETHODCALLTYPE DatabaseDetailsPropertyBag::AddRef()
+{
+    return ++m_refCount;
+}
+
+ULONG STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Release()
+{
+    ULONG newRef = --m_refCount;
+    if (!newRef)
+        delete this;
+
+    return newRef;
+}
+
+HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::QueryInterface(REFIID riid, void** ppvObject)
+{
+    *ppvObject = 0;
+    if (IsEqualGUID(riid, IID_IUnknown))
+        *ppvObject = static_cast<DatabaseDetailsPropertyBag*>(this);
+    else if (IsEqualGUID(riid, IID_IPropertyBag))
+        *ppvObject = static_cast<DatabaseDetailsPropertyBag*>(this);
+    else
+        return E_NOINTERFACE;
+
+    AddRef();
+    return S_OK;
+}
+
+// IPropertyBag --------------------------------------------------------------------
+HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Read(LPCOLESTR pszPropName, VARIANT* pVar, IErrorLog*)
+{
+    if (!pszPropName || !pVar)
+        return E_POINTER;
+
+    VariantInit(pVar);
+
+    if (isEqual(pszPropName, WebDatabaseDisplayNameKey)) {
+        COMVariantSetter<String>::setVariant(pVar, m_details.displayName());
+        return S_OK;
+    } else if (isEqual(pszPropName, WebDatabaseExpectedSizeKey)) {
+        COMVariantSetter<unsigned long long>::setVariant(pVar, m_details.expectedUsage());
+        return S_OK;
+    } else if (isEqual(pszPropName, WebDatabaseUsageKey)) {
+        COMVariantSetter<unsigned long long>::setVariant(pVar, m_details.currentUsage());
+        return S_OK;
+    }
+
+    return E_INVALIDARG;
+}
+
+HRESULT STDMETHODCALLTYPE DatabaseDetailsPropertyBag::Write(LPCOLESTR pszPropName, VARIANT* pVar)
+{
+    if (!pszPropName || !pVar)
+        return E_POINTER;
+
+    return E_FAIL;
+}
+
+static COMPtr<WebDatabaseManager> s_sharedWebDatabaseManager;
+
+// WebDatabaseManager --------------------------------------------------------------
+WebDatabaseManager* WebDatabaseManager::createInstance()
+{
+    WebDatabaseManager* manager = new WebDatabaseManager();
+    manager->AddRef();
+    return manager;    
+}
+
+WebDatabaseManager::WebDatabaseManager()
+    : m_refCount(0)
+{
+    gClassCount++;
+}
+
+WebDatabaseManager::~WebDatabaseManager()
+{
+    gClassCount--;
+}
+
+// IUnknown ------------------------------------------------------------------------
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::QueryInterface(REFIID riid, void** ppvObject)
+{
+    *ppvObject = 0;
+    if (IsEqualGUID(riid, IID_IUnknown))
+        *ppvObject = static_cast<WebDatabaseManager*>(this);
+    else if (IsEqualGUID(riid, IID_IWebDatabaseManager))
+        *ppvObject = static_cast<WebDatabaseManager*>(this);
+    else
+        return E_NOINTERFACE;
+
+    AddRef();
+    return S_OK;
+}
+
+ULONG STDMETHODCALLTYPE WebDatabaseManager::AddRef()
+{
+    return ++m_refCount;
+}
+
+ULONG STDMETHODCALLTYPE WebDatabaseManager::Release()
+{
+    ULONG newRef = --m_refCount;
+    if (!newRef)
+        delete this;
+
+    return newRef;
+}
+
+template<> struct COMVariantSetter<RefPtr<SecurityOrigin> > : COMIUnknownVariantSetter<WebSecurityOrigin, RefPtr<SecurityOrigin> > {};
+
+// IWebDatabaseManager -------------------------------------------------------------
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::sharedWebDatabaseManager( 
+    /* [retval][out] */ IWebDatabaseManager** result)
+{
+    if (!s_sharedWebDatabaseManager) {
+        s_sharedWebDatabaseManager.adoptRef(WebDatabaseManager::createInstance());
+        DatabaseTracker::tracker().setClient(s_sharedWebDatabaseManager.get());
+    }
+
+    return s_sharedWebDatabaseManager.copyRefTo(result);
+}
+
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::origins( 
+    /* [retval][out] */ IEnumVARIANT** result)
+{
+    if (!result)
+        return E_POINTER;
+
+    *result = 0;
+
+    if (this != s_sharedWebDatabaseManager)
+        return E_FAIL;
+
+    Vector<RefPtr<SecurityOrigin> > origins;
+    DatabaseTracker::tracker().origins(origins);
+        COMPtr<COMEnumVariant<Vector<RefPtr<SecurityOrigin> > > > enumVariant(AdoptCOM, COMEnumVariant<Vector<RefPtr<SecurityOrigin> > >::adopt(origins));
+
+    *result = enumVariant.releaseRef();
+    return S_OK;
+}
+    
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::databasesWithOrigin( 
+    /* [in] */ IWebSecurityOrigin* origin,
+    /* [retval][out] */ IEnumVARIANT** result)
+{
+    if (!origin || !result)
+        return E_POINTER;
+
+    *result = 0;
+
+    if (this != s_sharedWebDatabaseManager)
+        return E_FAIL;
+
+    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);
+    if (!webSecurityOrigin)
+        return E_FAIL;
+
+    Vector<String> databaseNames;
+    DatabaseTracker::tracker().databaseNamesForOrigin(webSecurityOrigin->securityOrigin(), databaseNames);
+
+    COMPtr<COMEnumVariant<Vector<String> > > enumVariant(AdoptCOM, COMEnumVariant<Vector<String> >::adopt(databaseNames));
+
+    *result = enumVariant.releaseRef();
+    return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::detailsForDatabaseWithOrigin( 
+    /* [in] */ BSTR databaseName,
+    /* [in] */ IWebSecurityOrigin* origin,
+    /* [retval][out] */ IPropertyBag** result)
+{
+    if (!origin || !result)
+        return E_POINTER;
+
+    *result = 0;
+
+    if (this != s_sharedWebDatabaseManager)
+        return E_FAIL;
+
+    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);
+    if (!webSecurityOrigin)
+        return E_FAIL;
+
+    DatabaseDetails details = DatabaseTracker::tracker().detailsForNameAndOrigin(String(databaseName, SysStringLen(databaseName)),
+        webSecurityOrigin->securityOrigin());
+
+    if (!details.isValid())
+        return E_INVALIDARG;
+
+    *result = DatabaseDetailsPropertyBag::createInstance(details);
+    return S_OK;
+}
+    
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteAllDatabases()
+{
+    if (this != s_sharedWebDatabaseManager)
+        return E_FAIL;
+
+    DatabaseTracker::tracker().deleteAllDatabases();
+
+    return S_OK;
+}
+   
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteDatabasesWithOrigin( 
+    /* [in] */ IWebSecurityOrigin* origin)
+{
+    if (!origin)
+        return E_POINTER;
+
+    if (this != s_sharedWebDatabaseManager)
+        return E_FAIL;
+
+    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);
+    if (!webSecurityOrigin)
+        return E_FAIL;
+
+    DatabaseTracker::tracker().deleteDatabasesWithOrigin(webSecurityOrigin->securityOrigin());
+
+    return S_OK;
+}
+    
+HRESULT STDMETHODCALLTYPE WebDatabaseManager::deleteDatabaseWithOrigin( 
+    /* [in] */ BSTR databaseName,
+    /* [in] */ IWebSecurityOrigin* origin)
+{
+    if (!origin)
+        return E_POINTER;
+
+    if (!databaseName)
+        return E_INVALIDARG;
+
+    if (this != s_sharedWebDatabaseManager)
+        return E_FAIL;
+
+    COMPtr<WebSecurityOrigin> webSecurityOrigin(Query, origin);
+    if (!webSecurityOrigin)
+        return E_FAIL;
+
+    DatabaseTracker::tracker().deleteDatabase(webSecurityOrigin->securityOrigin(), String(databaseName, SysStringLen(databaseName)));
+
+    return S_OK;
+}
+
 void WebDatabaseManager::dispatchDidModifyOrigin(SecurityOrigin* origin)
 {
     static BSTR databaseDidModifyOriginName = SysAllocString(WebDatabaseDidModifyOriginNotification);
@@ -349,16 +349,16 @@ void WebDatabaseManager::dispatchDidModifyDatabase(SecurityOrigin* origin, const
 
     notifyCenter->postNotificationName(databaseDidModifyOriginName, securityOrigin.get(), userInfoBag.get());
 }
-\r
-void WebKitSetWebDatabasesPathIfNecessary()\r
-{\r
-    static bool pathSet = false;\r
-    if (pathSet)\r
-        return;\r
-\r
-    WebCore::String databasesDirectory = WebCore::pathByAppendingComponent(WebCore::localUserSpecificStorageDirectory(), "Databases");\r
-    WebCore::DatabaseTracker::tracker().setDatabasePath(databasesDirectory);\r
-\r
-    pathSet = true;\r
-}\r
-\r
+
+void WebKitSetWebDatabasesPathIfNecessary()
+{
+    static bool pathSet = false;
+    if (pathSet)
+        return;
+
+    WebCore::String databasesDirectory = WebCore::pathByAppendingComponent(WebCore::localUserSpecificStorageDirectory(), "Databases");
+    WebCore::DatabaseTracker::tracker().setDatabasePath(databasesDirectory);
+
+    pathSet = true;
+}
+
index 60a3654..8e1869d 100644 (file)
@@ -1,86 +1,86 @@
-/*\r
- * Copyright (C) 2007 Apple Inc. All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * 1.  Redistributions of source code must retain the above copyright\r
- *     notice, this list of conditions and the following disclaimer.\r
- * 2.  Redistributions in binary form must reproduce the above copyright\r
- *     notice, this list of conditions and the following disclaimer in the\r
- *     documentation and/or other materials provided with the distribution.\r
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of\r
- *     its contributors may be used to endorse or promote products derived\r
- *     from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-#ifndef WebDatabaseManager_h\r
-#define WebDatabaseManager_h\r
-\r
-#include <WebCore/DatabaseTrackerClient.h>\r
-\r
-#include "IWebDatabaseManager.h"\r
-\r
-class WebDatabaseManager : public IWebDatabaseManager, private WebCore::DatabaseTrackerClient {\r
-public:\r
-    static WebDatabaseManager* createInstance();\r
-\r
-    // IUnknown\r
-    virtual HRESULT STDMETHODCALLTYPE QueryInterface( \r
-        /* [in] */ REFIID riid,\r
-        /* [iid_is][out] */ void** ppvObject);\r
-\r
-    virtual ULONG STDMETHODCALLTYPE AddRef();\r
-\r
-    virtual ULONG STDMETHODCALLTYPE Release();\r
-\r
-    // IWebDatabaseManager\r
-    virtual HRESULT STDMETHODCALLTYPE sharedWebDatabaseManager( \r
-        /* [retval][out] */ IWebDatabaseManager** result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE origins( \r
-        /* [retval][out] */ IEnumVARIANT** result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE databasesWithOrigin( \r
-        /* [in] */ IWebSecurityOrigin* origin,\r
-        /* [retval][out] */ IEnumVARIANT** result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE detailsForDatabaseWithOrigin( \r
-        /* [in] */ BSTR databaseName,\r
-        /* [in] */ IWebSecurityOrigin* origin,\r
-        /* [retval][out] */ IPropertyBag** result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE deleteAllDatabases();\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE deleteDatabasesWithOrigin( \r
-        /* [in] */ IWebSecurityOrigin* origin);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE deleteDatabaseWithOrigin( \r
-        /* [in] */ BSTR databaseName,\r
-        /* [in] */ IWebSecurityOrigin* origin);\r
-\r
-    // DatabaseTrackerClient\r
+/*
+ * Copyright (C) 2007 Apple 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:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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 WebDatabaseManager_h
+#define WebDatabaseManager_h
+
+#include <WebCore/DatabaseTrackerClient.h>
+
+#include "IWebDatabaseManager.h"
+
+class WebDatabaseManager : public IWebDatabaseManager, private WebCore::DatabaseTrackerClient {
+public:
+    static WebDatabaseManager* createInstance();
+
+    // IUnknown
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface( 
+        /* [in] */ REFIID riid,
+        /* [iid_is][out] */ void** ppvObject);
+
+    virtual ULONG STDMETHODCALLTYPE AddRef();
+
+    virtual ULONG STDMETHODCALLTYPE Release();
+
+    // IWebDatabaseManager
+    virtual HRESULT STDMETHODCALLTYPE sharedWebDatabaseManager( 
+        /* [retval][out] */ IWebDatabaseManager** result);
+        
+    virtual HRESULT STDMETHODCALLTYPE origins( 
+        /* [retval][out] */ IEnumVARIANT** result);
+        
+    virtual HRESULT STDMETHODCALLTYPE databasesWithOrigin( 
+        /* [in] */ IWebSecurityOrigin* origin,
+        /* [retval][out] */ IEnumVARIANT** result);
+        
+    virtual HRESULT STDMETHODCALLTYPE detailsForDatabaseWithOrigin( 
+        /* [in] */ BSTR databaseName,
+        /* [in] */ IWebSecurityOrigin* origin,
+        /* [retval][out] */ IPropertyBag** result);
+        
+    virtual HRESULT STDMETHODCALLTYPE deleteAllDatabases();
+        
+    virtual HRESULT STDMETHODCALLTYPE deleteDatabasesWithOrigin( 
+        /* [in] */ IWebSecurityOrigin* origin);
+        
+    virtual HRESULT STDMETHODCALLTYPE deleteDatabaseWithOrigin( 
+        /* [in] */ BSTR databaseName,
+        /* [in] */ IWebSecurityOrigin* origin);
+
+    // DatabaseTrackerClient
     virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
     virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WebCore::String& databaseName);
-\r
-private:\r
-    WebDatabaseManager();\r
-    ~WebDatabaseManager();\r
-\r
-    ULONG m_refCount;\r
-};\r
-\r
-void WebKitSetWebDatabasesPathIfNecessary();\r
-\r
-#endif\r
+
+private:
+    WebDatabaseManager();
+    ~WebDatabaseManager();
+
+    ULONG m_refCount;
+};
+
+void WebKitSetWebDatabasesPathIfNecessary();
+
+#endif
index 5245e42..29802a7 100755 (executable)
@@ -1,18 +1,18 @@
-!IF !defined(BUILDSTYLE)\r
-BUILDSTYLE=Release\r
-!ELSEIF "$(BUILDSTYLE)"=="DEBUG"\r
-BUILDSTYLE=Debug_Internal\r
-!ENDIF\r
-\r
-install:\r
-       set WebKitLibrariesDir=$(SRCROOT)\AppleInternal\r
-       set WebKitOutputDir=$(OBJROOT)\r
-       set PRODUCTION=1\r
-       xcopy "$(SRCROOT)\AppleInternal\obj\WebKit\DOMInterfaces\*" "$(OBJROOT)\obj\WebKit\DOMInterfaces" /e/v/i/h/y\r
-       devenv "WebKit.submit.sln" /rebuild $(BUILDSTYLE)\r
-       -xcopy "$(OBJROOT)\bin\*.exe" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y\r
-       xcopy "$(OBJROOT)\bin\*.pdb" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y\r
-       xcopy "$(OBJROOT)\bin\*.dll" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y\r
-       xcopy "$(OBJROOT)\include\*" "$(DSTROOT)\AppleInternal\include\" /e/v/i/h/y     \r
-       xcopy "$(OBJROOT)\lib\*" "$(DSTROOT)\AppleInternal\lib\" /e/v/i/h/y\r
-       xcopy "$(OBJROOT)\bin\WebKit.resources\*" "$(DSTROOT)\AppleInternal\bin\WebKit.resources" /e/v/i/h/y\r
+!IF !defined(BUILDSTYLE)
+BUILDSTYLE=Release
+!ELSEIF "$(BUILDSTYLE)"=="DEBUG"
+BUILDSTYLE=Debug_Internal
+!ENDIF
+
+install:
+       set WebKitLibrariesDir=$(SRCROOT)\AppleInternal
+       set WebKitOutputDir=$(OBJROOT)
+       set PRODUCTION=1
+       xcopy "$(SRCROOT)\AppleInternal\obj\WebKit\DOMInterfaces\*" "$(OBJROOT)\obj\WebKit\DOMInterfaces" /e/v/i/h/y
+       devenv "WebKit.submit.sln" /rebuild $(BUILDSTYLE)
+       -xcopy "$(OBJROOT)\bin\*.exe" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y
+       xcopy "$(OBJROOT)\bin\*.pdb" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y
+       xcopy "$(OBJROOT)\bin\*.dll" "$(DSTROOT)\AppleInternal\bin\" /e/v/i/h/y
+       xcopy "$(OBJROOT)\include\*" "$(DSTROOT)\AppleInternal\include\" /e/v/i/h/y     
+       xcopy "$(OBJROOT)\lib\*" "$(DSTROOT)\AppleInternal\lib\" /e/v/i/h/y
+       xcopy "$(OBJROOT)\bin\WebKit.resources\*" "$(DSTROOT)\AppleInternal\bin\WebKit.resources" /e/v/i/h/y
index bb9267d..33a3a3a 100644 (file)
-/*\r
- * Copyright (C) 2007 Apple Inc. All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * 1.  Redistributions of source code must retain the above copyright\r
- *     notice, this list of conditions and the following disclaimer.\r
- * 2.  Redistributions in binary form must reproduce the above copyright\r
- *     notice, this list of conditions and the following disclaimer in the\r
- *     documentation and/or other materials provided with the distribution.\r
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of\r
- *     its contributors may be used to endorse or promote products derived\r
- *     from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-\r
-#include "config.h"\r
-#include "WebSecurityOrigin.h"\r
-#include "WebKitDLL.h"\r
-\r
-#include <WebCore/BString.h>\r
-#include <WebCore/DatabaseTracker.h>\r
-\r
-using namespace WebCore;\r
-\r
-// WebSecurityOrigin ---------------------------------------------------------------\r
-WebSecurityOrigin* WebSecurityOrigin::createInstance(SecurityOrigin* securityOrigin)\r
-{\r
-    WebSecurityOrigin* origin = new WebSecurityOrigin(securityOrigin);\r
-    origin->AddRef();\r
-    return origin;\r
-}\r
-\r
-WebSecurityOrigin::WebSecurityOrigin(SecurityOrigin* securityOrigin)\r
-    : m_refCount(0)\r
-    , m_securityOrigin(securityOrigin)\r
-{\r
-    gClassCount++;\r
-}\r
-\r
-WebSecurityOrigin::~WebSecurityOrigin()\r
-{\r
-    gClassCount--;\r
-}\r
-\r
-// IUnknown ------------------------------------------------------------------------\r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::QueryInterface(REFIID riid, void** ppvObject)\r
-{\r
-    *ppvObject = 0;\r
-    if (IsEqualGUID(riid, IID_IUnknown))\r
-        *ppvObject = static_cast<IWebSecurityOrigin*>(this);\r
-    else if (IsEqualGUID(riid, IID_IWebSecurityOrigin))\r
-        *ppvObject = static_cast<IWebSecurityOrigin*>(this);\r
-    else if (IsEqualGUID(riid, __uuidof(this)))\r
-        *ppvObject = this;\r
-    else\r
-        return E_NOINTERFACE;\r
-\r
-    AddRef();\r
-    return S_OK;\r
-}\r
-\r
-ULONG STDMETHODCALLTYPE WebSecurityOrigin::AddRef()\r
-{\r
-    return ++m_refCount;\r
-}\r
-\r
-ULONG STDMETHODCALLTYPE WebSecurityOrigin::Release()\r
-{\r
-    ULONG newRef = --m_refCount;\r
-    if (!newRef)\r
-        delete this;\r
-\r
-    return newRef;\r
-}\r
-\r
-// IWebSecurityOrigin --------------------------------------------------------------\r
-\r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::protocol( \r
-    /* [retval][out] */ BSTR* result)\r
-{\r
-    if (!result)\r
-        return E_POINTER;\r
-\r
-    *result = BString(m_securityOrigin->protocol()).release();\r
-\r
-    return S_OK;\r
-}\r
-        \r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::domain( \r
-    /* [retval][out] */ BSTR* result)\r
-{\r
-    if (!result)\r
-        return E_POINTER;\r
-\r
-    *result = BString(m_securityOrigin->host()).release();\r
-\r
-    return S_OK;\r
-}\r
-      \r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::port( \r
-    /* [retval][out] */ unsigned short* result)\r
-{\r
-    if (!result)\r
-        return E_POINTER;\r
-\r
-    *result = m_securityOrigin->port();\r
-\r
-    return S_OK;\r
-}\r
-        \r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::usage( \r
-    /* [retval][out] */ unsigned long long* result)\r
-{\r
-    if (!result)\r
-        return E_POINTER;\r
-\r
-    *result = DatabaseTracker::tracker().usageForOrigin(m_securityOrigin.get());\r
-\r
-    return S_OK;\r
-}\r
-        \r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::quota( \r
-    /* [retval][out] */ unsigned long long* result)\r
-{\r
-    if (!result)\r
-        return E_POINTER;\r
-\r
-    *result = DatabaseTracker::tracker().quotaForOrigin(m_securityOrigin.get());\r
-    return S_OK;\r
-}\r
-        \r
-HRESULT STDMETHODCALLTYPE WebSecurityOrigin::setQuota( \r
-    /* [in] */ unsigned long long quota) \r
-{\r
-    DatabaseTracker::tracker().setQuota(m_securityOrigin.get(), quota);\r
-\r
-    return S_OK;\r
-}\r
+/*
+ * Copyright (C) 2007 Apple 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:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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 "WebSecurityOrigin.h"
+#include "WebKitDLL.h"
+
+#include <WebCore/BString.h>
+#include <WebCore/DatabaseTracker.h>
+
+using namespace WebCore;
+
+// WebSecurityOrigin ---------------------------------------------------------------
+WebSecurityOrigin* WebSecurityOrigin::createInstance(SecurityOrigin* securityOrigin)
+{
+    WebSecurityOrigin* origin = new WebSecurityOrigin(securityOrigin);
+    origin->AddRef();
+    return origin;
+}
+
+WebSecurityOrigin::WebSecurityOrigin(SecurityOrigin* securityOrigin)
+    : m_refCount(0)
+    , m_securityOrigin(securityOrigin)
+{
+    gClassCount++;
+}
+
+WebSecurityOrigin::~WebSecurityOrigin()
+{
+    gClassCount--;
+}
+
+// IUnknown ------------------------------------------------------------------------
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::QueryInterface(REFIID riid, void** ppvObject)
+{
+    *ppvObject = 0;
+    if (IsEqualGUID(riid, IID_IUnknown))
+        *ppvObject = static_cast<IWebSecurityOrigin*>(this);
+    else if (IsEqualGUID(riid, IID_IWebSecurityOrigin))
+        *ppvObject = static_cast<IWebSecurityOrigin*>(this);
+    else if (IsEqualGUID(riid, __uuidof(this)))
+        *ppvObject = this;
+    else
+        return E_NOINTERFACE;
+
+    AddRef();
+    return S_OK;
+}
+
+ULONG STDMETHODCALLTYPE WebSecurityOrigin::AddRef()
+{
+    return ++m_refCount;
+}
+
+ULONG STDMETHODCALLTYPE WebSecurityOrigin::Release()
+{
+    ULONG newRef = --m_refCount;
+    if (!newRef)
+        delete this;
+
+    return newRef;
+}
+
+// IWebSecurityOrigin --------------------------------------------------------------
+
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::protocol( 
+    /* [retval][out] */ BSTR* result)
+{
+    if (!result)
+        return E_POINTER;
+
+    *result = BString(m_securityOrigin->protocol()).release();
+
+    return S_OK;
+}
+        
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::domain( 
+    /* [retval][out] */ BSTR* result)
+{
+    if (!result)
+        return E_POINTER;
+
+    *result = BString(m_securityOrigin->host()).release();
+
+    return S_OK;
+}
+      
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::port( 
+    /* [retval][out] */ unsigned short* result)
+{
+    if (!result)
+        return E_POINTER;
+
+    *result = m_securityOrigin->port();
+
+    return S_OK;
+}
+        
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::usage( 
+    /* [retval][out] */ unsigned long long* result)
+{
+    if (!result)
+        return E_POINTER;
+
+    *result = DatabaseTracker::tracker().usageForOrigin(m_securityOrigin.get());
+
+    return S_OK;
+}
+        
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::quota( 
+    /* [retval][out] */ unsigned long long* result)
+{
+    if (!result)
+        return E_POINTER;
+
+    *result = DatabaseTracker::tracker().quotaForOrigin(m_securityOrigin.get());
+    return S_OK;
+}
+        
+HRESULT STDMETHODCALLTYPE WebSecurityOrigin::setQuota( 
+    /* [in] */ unsigned long long quota) 
+{
+    DatabaseTracker::tracker().setQuota(m_securityOrigin.get(), quota);
+
+    return S_OK;
+}
index c8b8601..1946a39 100644 (file)
@@ -1,77 +1,77 @@
-/*\r
- * Copyright (C) 2007 Apple Inc. All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- *\r
- * 1.  Redistributions of source code must retain the above copyright\r
- *     notice, this list of conditions and the following disclaimer.\r
- * 2.  Redistributions in binary form must reproduce the above copyright\r
- *     notice, this list of conditions and the following disclaimer in the\r
- *     documentation and/or other materials provided with the distribution.\r
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of\r
- *     its contributors may be used to endorse or promote products derived\r
- *     from this software without specific prior written permission.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY\r
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY\r
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-\r
-#ifndef WebSecurityOrigin_h\r
-#define WebSecurityOrigin_h\r
-\r
-#include "IWebSecurityOrigin.h"\r
-#include <WebCore/SecurityOrigin.h>\r
-\r
-class DECLSPEC_UUID("6EB8D98F-2723-4472-88D3-5936F9D6E631") WebSecurityOrigin : public IWebSecurityOrigin {\r
-public:\r
-    // WebSecurityOrigin\r
-    static WebSecurityOrigin* createInstance(WebCore::SecurityOrigin* origin);\r
-    static WebSecurityOrigin* createInstance(RefPtr<WebCore::SecurityOrigin> origin) { return createInstance(origin.get()); }\r
-    WebCore::SecurityOrigin* securityOrigin() const { return m_securityOrigin.get(); }\r
-\r
-    // IUnknown\r
-    virtual HRESULT STDMETHODCALLTYPE QueryInterface( \r
-        /* [in] */ REFIID riid,\r
-        /* [iid_is][out] */ void** ppvObject);\r
-\r
-    virtual ULONG STDMETHODCALLTYPE AddRef();\r
-\r
-    virtual ULONG STDMETHODCALLTYPE Release();\r
-\r
-    // IWebSecurityOrigin\r
-    virtual HRESULT STDMETHODCALLTYPE protocol( \r
-        /* [retval][out] */ BSTR* result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE domain( \r
-        /* [retval][out] */ BSTR* result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE port( \r
-        /* [retval][out] */ unsigned short* result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE usage( \r
-        /* [retval][out] */ unsigned long long* result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE quota( \r
-        /* [retval][out] */ unsigned long long* result);\r
-        \r
-    virtual HRESULT STDMETHODCALLTYPE setQuota( \r
-        /* [in] */ unsigned long long quota);\r
-private:\r
-    WebSecurityOrigin(WebCore::SecurityOrigin*);\r
-    ~WebSecurityOrigin();\r
-\r
-    ULONG m_refCount;\r
-    RefPtr<WebCore::SecurityOrigin> m_securityOrigin;\r
-};\r
-\r
-#endif // WebSecurityOrigin_h\r
+/*
+ * Copyright (C) 2007 Apple 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:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  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.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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 WebSecurityOrigin_h
+#define WebSecurityOrigin_h
+
+#include "IWebSecurityOrigin.h"
+#include <WebCore/SecurityOrigin.h>
+
+class DECLSPEC_UUID("6EB8D98F-2723-4472-88D3-5936F9D6E631") WebSecurityOrigin : public IWebSecurityOrigin {
+public:
+    // WebSecurityOrigin
+    static WebSecurityOrigin* createInstance(WebCore::SecurityOrigin* origin);
+    static WebSecurityOrigin* createInstance(RefPtr<WebCore::SecurityOrigin> origin) { return createInstance(origin.get()); }
+    WebCore::SecurityOrigin* securityOrigin() const { return m_securityOrigin.get(); }
+
+    // IUnknown
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface( 
+        /* [in] */ REFIID riid,
+        /* [iid_is][out] */ void** ppvObject);
+
+    virtual ULONG STDMETHODCALLTYPE AddRef();
+
+    virtual ULONG STDMETHODCALLTYPE Release();
+
+    // IWebSecurityOrigin
+    virtual HRESULT STDMETHODCALLTYPE protocol( 
+        /* [retval][out] */ BSTR* result);
+        
+    virtual HRESULT STDMETHODCALLTYPE domain( 
+        /* [retval][out] */ BSTR* result);
+        
+    virtual HRESULT STDMETHODCALLTYPE port( 
+        /* [retval][out] */ unsigned short* result);
+        
+    virtual HRESULT STDMETHODCALLTYPE usage( 
+        /* [retval][out] */ unsigned long long* result);
+        
+    virtual HRESULT STDMETHODCALLTYPE quota( 
+        /* [retval][out] */ unsigned long long* result);
+        
+    virtual HRESULT STDMETHODCALLTYPE setQuota( 
+        /* [in] */ unsigned long long quota);
+private:
+    WebSecurityOrigin(WebCore::SecurityOrigin*);
+    ~WebSecurityOrigin();
+
+    ULONG m_refCount;
+    RefPtr<WebCore::SecurityOrigin> m_securityOrigin;
+};
+
+#endif // WebSecurityOrigin_h
index a4c9f2c..c487e01 100755 (executable)
@@ -1,3 +1,3 @@
-install:\r
-    xcopy "$(SRCROOT)\vsprops\*.vsprops" "$(DSTROOT)\AppleInternal\tools\vsprops" /e/v/i/h/y\r
-    xcopy "$(SRCROOT)\scripts\*" "$(DSTROOT)\AppleInternal\tools\scripts" /e/v/i/h/y\r
+install:
+    xcopy "$(SRCROOT)\vsprops\*.vsprops" "$(DSTROOT)\AppleInternal\tools\vsprops" /e/v/i/h/y
+    xcopy "$(SRCROOT)\scripts\*" "$(DSTROOT)\AppleInternal\tools\scripts" /e/v/i/h/y
index 702bc80..326e21d 100644 (file)
 
 typedef unsigned long ULONG;
 
-struct MD5_CTX {\r
-    ULONG i[2];\r
-    ULONG buf[4];\r
-    unsigned char in[64];\r
-    unsigned char digest[16];\r
+struct MD5_CTX {
+    ULONG i[2];
+    ULONG buf[4];
+    unsigned char in[64];
+    unsigned char digest[16];
 };
 
 void MD5_Init(MD5_CTX*);
index a58ae89..b0ce340 100644 (file)
@@ -1,14 +1,14 @@
-//{{NO_DEPENDENCIES}}\r
-// Microsoft Visual C++ generated include file.\r
-// Used by TestNetscapePlugin.rc\r
-\r
-// Next default values for new objects\r
-// \r
-#ifdef APSTUDIO_INVOKED\r
-#ifndef APSTUDIO_READONLY_SYMBOLS\r
-#define _APS_NEXT_RESOURCE_VALUE        101\r
-#define _APS_NEXT_COMMAND_VALUE         40001\r
-#define _APS_NEXT_CONTROL_VALUE         1001\r
-#define _APS_NEXT_SYMED_VALUE           101\r
-#endif\r
-#endif\r
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by TestNetscapePlugin.rc
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        101
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1001
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif