Title: [160001] trunk/Source/WebCore
Revision
160001
Author
[email protected]
Date
2013-12-03 06:24:50 -0800 (Tue, 03 Dec 2013)

Log Message

Nix Upstream: Adding missing nix new files to WebCore
https://bugs.webkit.org/show_bug.cgi?id=124987

Patch by Thiago de Barros Lacerda <[email protected]> on 2013-12-03
Reviewed by Benjamin Poulain.

No new tests needed.

* PlatformNix.cmake:
* platform/nix/ErrorsNix.cpp: Added.
* platform/nix/ErrorsNix.h: Added.
* platform/nix/FileSystemNix.cpp: Added.
* platform/nix/MIMETypeRegistryNix.cpp: Added.
* platform/nix/SharedTimerNix.cpp: Added.
* platform/nix/TemporaryLinkStubs.cpp: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (160000 => 160001)


--- trunk/Source/WebCore/ChangeLog	2013-12-03 12:44:27 UTC (rev 160000)
+++ trunk/Source/WebCore/ChangeLog	2013-12-03 14:24:50 UTC (rev 160001)
@@ -1,3 +1,20 @@
+2013-12-03  Thiago de Barros Lacerda  <[email protected]>
+
+        Nix Upstream: Adding missing nix new files to WebCore
+        https://bugs.webkit.org/show_bug.cgi?id=124987
+
+        Reviewed by Benjamin Poulain.
+
+        No new tests needed.
+
+        * PlatformNix.cmake:
+        * platform/nix/ErrorsNix.cpp: Added.
+        * platform/nix/ErrorsNix.h: Added.
+        * platform/nix/FileSystemNix.cpp: Added.
+        * platform/nix/MIMETypeRegistryNix.cpp: Added.
+        * platform/nix/SharedTimerNix.cpp: Added.
+        * platform/nix/TemporaryLinkStubs.cpp: Added.
+
 2013-12-03  Tamas Gergely  <[email protected]>
 
         Correct broken build on efl port with --no-netscape-plugin-api

Modified: trunk/Source/WebCore/PlatformNix.cmake (160000 => 160001)


--- trunk/Source/WebCore/PlatformNix.cmake	2013-12-03 12:44:27 UTC (rev 160000)
+++ trunk/Source/WebCore/PlatformNix.cmake	2013-12-03 14:24:50 UTC (rev 160001)
@@ -116,16 +116,21 @@
     platform/nix/CursorNix.cpp
     platform/nix/DragDataNix.cpp
     platform/nix/DragImageNix.cpp
+    platform/nix/ErrorsNix.cpp
+    platform/nix/FileSystemNix.cpp
     platform/nix/GamepadsNix.cpp
     platform/nix/LanguageNix.cpp
     platform/nix/LocalizedStringsNix.cpp
+    platform/nix/MIMETypeRegistryNix.cpp
     platform/nix/NixKeyboardUtilities.cpp
     platform/nix/PasteboardNix.cpp
     platform/nix/PlatformKeyboardEventNix.cpp
     platform/nix/PlatformScreenNix.cpp
     platform/nix/RenderThemeNix.cpp
     platform/nix/ScrollbarThemeNix.cpp
+    platform/nix/SharedTimerNix.cpp
     platform/nix/SoundNix.cpp
+    platform/nix/TemporaryLinkStubs.cpp
     platform/nix/WidgetNix.cpp
 
     platform/nix/support/MultiChannelPCMData.cpp

Added: trunk/Source/WebCore/platform/nix/ErrorsNix.cpp (0 => 160001)


--- trunk/Source/WebCore/platform/nix/ErrorsNix.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/nix/ErrorsNix.cpp	2013-12-03 14:24:50 UTC (rev 160001)
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ * Copyright (C) 2012, 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * 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 INC. 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 INC. 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 "ErrorsNix.h"
+
+#include "DocumentLoader.h"
+#include "Frame.h"
+#include "PrintContext.h"
+#include "ResourceError.h"
+#include "ResourceRequest.h"
+#include "ResourceResponse.h"
+
+namespace WebCore {
+
+ResourceError cancelledError(const ResourceRequest& request)
+{
+    return ResourceError(errorDomainNetwork, NetworkErrorCancelled, request.url().string(), ASCIILiteral("Load request cancelled"));
+}
+
+ResourceError blockedError(const ResourceRequest& request)
+{
+    return ResourceError(errorDomainPolicy, PolicyErrorCannotUseRestrictedPort, request.url().string(), ASCIILiteral("Not allowed to use restricted network port"));
+}
+
+ResourceError cannotShowURLError(const ResourceRequest& request)
+{
+    return ResourceError(errorDomainPolicy, PolicyErrorCannotShowURL, request.url().string(), ASCIILiteral("URL cannot be shown"));
+}
+
+ResourceError interruptedForPolicyChangeError(const ResourceRequest& request)
+{
+    return ResourceError(errorDomainPolicy, PolicyErrorFrameLoadInterruptedByPolicyChange, request.url().string(), ASCIILiteral("Frame load was interrupted"));
+}
+
+ResourceError cannotShowMIMETypeError(const ResourceResponse& response)
+{
+    return ResourceError(errorDomainPolicy, PolicyErrorCannotShowMimeType, response.url().string(), ASCIILiteral("Content with the specified MIME type cannot be shown"));
+}
+
+ResourceError fileDoesNotExistError(const ResourceResponse& response)
+{
+    return ResourceError(errorDomainNetwork, NetworkErrorFileDoesNotExist, response.url().string(), ASCIILiteral("File does not exist"));
+}
+
+ResourceError pluginWillHandleLoadError(const ResourceResponse& response)
+{
+    return ResourceError(errorDomainPlugin, PluginErrorWillHandleLoad, response.url().string(), ASCIILiteral("Plugin will handle load"));
+}
+
+ResourceError downloadNetworkError(const ResourceError& networkError)
+{
+    return ResourceError(errorDomainDownload, DownloadErrorNetwork, networkError.failingURL(), networkError.localizedDescription());
+}
+
+ResourceError downloadCancelledByUserError(const ResourceResponse& response)
+{
+    return ResourceError(errorDomainDownload, DownloadErrorCancelledByUser, response.url().string(), ASCIILiteral("User cancelled the download"));
+}
+
+ResourceError downloadDestinationError(const ResourceResponse& response, const String& errorMessage)
+{
+    return ResourceError(errorDomainDownload, DownloadErrorDestination, response.url().string(), errorMessage);
+}
+
+ResourceError printError(const PrintContext* printContext, const String& errorMessage)
+{
+    DocumentLoader* documentLoader = printContext->frame()->loader().documentLoader();
+
+    return ResourceError(errorDomainPrint, PrintErrorGeneral, documentLoader ? documentLoader->url() : URL(), errorMessage);
+}
+
+ResourceError printerNotFoundError(const PrintContext* printContext)
+{
+    DocumentLoader* documentLoader = printContext->frame()->loader().documentLoader();
+
+    return ResourceError(errorDomainPrint, PrintErrorPrinterNotFound, documentLoader ? documentLoader->url() : URL(), ASCIILiteral("Printer not found"));
+}
+
+ResourceError invalidPageRangeToPrint(const PrintContext* printContext)
+{
+    DocumentLoader* documentLoader = printContext->frame()->loader().documentLoader();
+
+    return ResourceError(errorDomainPrint, PrintErrorInvalidPageRange, documentLoader ? documentLoader->url() : URL(), ASCIILiteral("Invalid page range"));
+}
+
+} // namespace WebCore
+

Added: trunk/Source/WebCore/platform/nix/ErrorsNix.h (0 => 160001)


--- trunk/Source/WebCore/platform/nix/ErrorsNix.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/nix/ErrorsNix.h	2013-12-03 14:24:50 UTC (rev 160001)
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2012 Intel Corporation. All rights reserved.
+ * Copyright (C) 2012, 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * 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 INC. 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 INC. 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 ErrorsNix_h
+#define ErrorsNix_h
+
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+class PrintContext;
+class ResourceError;
+class ResourceRequest;
+class ResourceResponse;
+
+static const char errorDomainNetwork[] = "WebKitNetworkError";
+static const char errorDomainPolicy[] = "WebKitPolicyError";
+static const char errorDomainPlugin[] = "WebKitPluginError";
+static const char errorDomainDownload[] = "WebKitDownloadError";
+static const char errorDomainPrint[] = "WebKitPrintError";
+
+enum NetworkError {
+    NetworkErrorFailed = 399,
+    NetworkErrorTransport = 300,
+    NetworkErrorUnknownProtocol = 301,
+    NetworkErrorCancelled = 302,
+    NetworkErrorFileDoesNotExist = 303
+};
+
+// Sync'd with Mac's WebKit Errors at:
+// Source/WebKit/mac/Misc/WebKitErrors[Private].h
+enum PolicyError {
+    PolicyErrorFailed = 199,
+    PolicyErrorCannotShowMimeType = 100,
+    PolicyErrorCannotShowURL = 101,
+    PolicyErrorFrameLoadInterruptedByPolicyChange = 102,
+    PolicyErrorCannotUseRestrictedPort = 103
+};
+
+enum PluginError {
+    PluginErrorFailed = 299,
+    PluginErrorCannotFindPlugin = 200,
+    PluginErrorCannotLoadPlugin = 201,
+    PluginErrorJavaUnavailable = 202,
+    PluginErrorConnectionCancelled = 203,
+    PluginErrorWillHandleLoad = 204
+};
+
+enum DownloadError {
+    DownloadErrorNetwork = 499,
+    DownloadErrorCancelledByUser = 400,
+    DownloadErrorDestination = 401
+};
+
+enum PrintError {
+    PrintErrorGeneral = 599,
+    PrintErrorPrinterNotFound = 500,
+    PrintErrorInvalidPageRange = 501
+};
+
+ResourceError cancelledError(const ResourceRequest&);
+ResourceError blockedError(const ResourceRequest&);
+ResourceError cannotShowURLError(const ResourceRequest&);
+ResourceError interruptedForPolicyChangeError(const ResourceRequest&);
+ResourceError cannotShowMIMETypeError(const ResourceResponse&);
+ResourceError fileDoesNotExistError(const ResourceResponse&);
+ResourceError pluginWillHandleLoadError(const ResourceResponse&);
+ResourceError downloadNetworkError(const ResourceError&);
+ResourceError downloadCancelledByUserError(const ResourceResponse&);
+ResourceError downloadDestinationError(const ResourceResponse&, const String& errorMessage);
+ResourceError printError(const PrintContext*, const String& errorMessage);
+ResourceError printerNotFoundError(const PrintContext*);
+ResourceError invalidPageRangeToPrint(const PrintContext*);
+
+} // namespace WebCore
+
+#endif // ErrorsNix_h
+

Added: trunk/Source/WebCore/platform/nix/FileSystemNix.cpp (0 => 160001)


--- trunk/Source/WebCore/platform/nix/FileSystemNix.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/nix/FileSystemNix.cpp	2013-12-03 14:24:50 UTC (rev 160001)
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2007, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Collabora, Ltd.
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ * Portions Copyright (c) 2010 Motorola Mobility, Inc.  All rights reserved.
+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * 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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "FileSystem.h"
+
+#include "FileMetadata.h"
+#include "UUID.h"
+#include <gio/gio.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <wtf/gobject/GOwnPtr.h>
+#include <wtf/gobject/GRefPtr.h>
+#include <wtf/gobject/GlibUtilities.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+// On linux file names are just raw bytes, so also strings that cannot be encoded in any way
+// are valid file names. This mean that we cannot just store a file name as-is in a String
+// but we have to escape it.
+// On Windows the GLib file name encoding is always UTF-8 so we can optimize this case.
+String filenameToString(const char* filename)
+{
+    if (!filename)
+        return String();
+
+    GOwnPtr<gchar> escapedString(g_uri_escape_string(filename, "/:", false));
+    return escapedString.get();
+}
+
+CString fileSystemRepresentation(const String& path)
+{
+    GOwnPtr<gchar> filename(g_uri_unescape_string(path.utf8().data(), 0));
+    return filename.get();
+}
+
+// Converts a string to something suitable to be displayed to the user.
+String filenameForDisplay(const String& string)
+{
+    CString filename = fileSystemRepresentation(string);
+    GOwnPtr<gchar> display(g_filename_to_utf8(filename.data(), 0, 0, 0, 0));
+    if (!display)
+        return string;
+
+    return String::fromUTF8(display.get());
+}
+
+bool fileExists(const String& path)
+{
+    bool result = false;
+    CString filename = fileSystemRepresentation(path);
+
+    if (!filename.isNull())
+        result = g_file_test(filename.data(), G_FILE_TEST_EXISTS);
+
+    return result;
+}
+
+bool deleteFile(const String& path)
+{
+    bool result = false;
+    CString filename = fileSystemRepresentation(path);
+
+    if (!filename.isNull())
+        result = !g_remove(filename.data());
+
+    return result;
+}
+
+bool deleteEmptyDirectory(const String& path)
+{
+    bool result = false;
+    CString filename = fileSystemRepresentation(path);
+
+    if (!filename.isNull())
+        result = !g_rmdir(filename.data());
+
+    return result;
+}
+
+bool getFileSize(const String& path, long long& resultSize)
+{
+    CString filename = fileSystemRepresentation(path);
+    if (filename.isNull())
+        return false;
+
+    GStatBuf statResult;
+    gint result = g_stat(filename.data(), &statResult);
+    if (result)
+        return false;
+
+    resultSize = statResult.st_size;
+    return true;
+}
+
+bool getFileModificationTime(const String& path, time_t& modifiedTime)
+{
+    CString filename = fileSystemRepresentation(path);
+    if (filename.isNull())
+        return false;
+
+    GStatBuf statResult;
+    gint result = g_stat(filename.data(), &statResult);
+    if (result)
+        return false;
+
+    modifiedTime = statResult.st_mtime;
+    return true;
+}
+
+bool getFileMetadata(const String& path, FileMetadata& metadata)
+{
+    CString filename = fileSystemRepresentation(path);
+    if (filename.isNull())
+        return false;
+
+    struct stat statResult;
+    gint result = g_stat(filename.data(), &statResult);
+    if (result)
+        return false;
+
+    metadata.modificationTime = statResult.st_mtime;
+    metadata.length = statResult.st_size;
+    metadata.type = S_ISDIR(statResult.st_mode) ? FileMetadata::TypeDirectory : FileMetadata::TypeFile;
+    return true;
+}
+
+String pathByAppendingComponent(const String& path, const String& component)
+{
+    if (path.endsWith(G_DIR_SEPARATOR_S))
+        return path + component;
+    return path + G_DIR_SEPARATOR_S + component;
+}
+
+bool makeAllDirectories(const String& path)
+{
+    CString filename = fileSystemRepresentation(path);
+    if (filename.isNull())
+        return false;
+
+    gint result = g_mkdir_with_parents(filename.data(), S_IRWXU);
+
+    return !result;
+}
+
+String homeDirectoryPath()
+{
+    return filenameToString(g_get_home_dir());
+}
+
+String pathGetFileName(const String& pathName)
+{
+    if (pathName.isEmpty())
+        return pathName;
+
+    CString tmpFilename = fileSystemRepresentation(pathName);
+    GOwnPtr<gchar> baseName(g_path_get_basename(tmpFilename.data()));
+    return String::fromUTF8(baseName.get());
+}
+
+CString applicationDirectoryPath()
+{
+    CString path = getCurrentExecutablePath();
+    if (!path.isNull())
+        return path;
+
+    // If the above fails, check the PATH env variable.
+    GOwnPtr<char> currentExePath(g_find_program_in_path(g_get_prgname()));
+    if (!currentExePath.get())
+        return CString();
+
+    GOwnPtr<char> dirname(g_path_get_dirname(currentExePath.get()));
+    return dirname.get();
+}
+
+CString sharedResourcesPath()
+{
+    DEFINE_STATIC_LOCAL(CString, cachedPath, ());
+    if (!cachedPath.isNull())
+        return cachedPath;
+
+    GOwnPtr<gchar> dataPath(g_build_filename(DATA_DIR, "webkitnix", NULL));
+
+    cachedPath = dataPath.get();
+    return cachedPath;
+}
+
+uint64_t getVolumeFreeSizeForPath(const char* path)
+{
+    GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(path));
+    GRefPtr<GFileInfo> fileInfo = adoptGRef(g_file_query_filesystem_info(file.get(), G_FILE_ATTRIBUTE_FILESYSTEM_FREE, 0, 0));
+    if (!fileInfo)
+        return 0;
+
+    return g_file_info_get_attribute_uint64(fileInfo.get(), G_FILE_ATTRIBUTE_FILESYSTEM_FREE);
+}
+
+String directoryName(const String& path)
+{
+    GOwnPtr<char> dirname(g_path_get_dirname(fileSystemRepresentation(path).data()));
+    return String::fromUTF8(dirname.get());
+}
+
+Vector<String> listDirectory(const String& path, const String& filter)
+{
+    Vector<String> entries;
+
+    CString filename = fileSystemRepresentation(path);
+    GDir* dir = g_dir_open(filename.data(), 0, 0);
+    if (!dir)
+        return entries;
+
+    GPatternSpec* pspec = g_pattern_spec_new((filter.utf8()).data());
+    while (const char* name = g_dir_read_name(dir)) {
+        if (!g_pattern_match_string(pspec, name))
+            continue;
+
+        GOwnPtr<gchar> entry(g_build_filename(filename.data(), name, NULL));
+        entries.append(filenameToString(entry.get()));
+    }
+    g_pattern_spec_free(pspec);
+    g_dir_close(dir);
+
+    return entries;
+}
+
+String openTemporaryFile(const String& prefix, PlatformFileHandle& handle)
+{
+    GOwnPtr<gchar> filename(g_strdup_printf("%s%s", prefix.utf8().data(), createCanonicalUUIDString().utf8().data()));
+    GOwnPtr<gchar> tempPath(g_build_filename(g_get_tmp_dir(), filename.get(), NULL));
+    GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(tempPath.get()));
+
+    handle = g_file_create_readwrite(file.get(), G_FILE_CREATE_NONE, 0, 0);
+    if (!isHandleValid(handle))
+        return String();
+    return String::fromUTF8(tempPath.get());
+}
+
+PlatformFileHandle openFile(const String& path, FileOpenMode mode)
+{
+    CString fsRep = fileSystemRepresentation(path);
+    if (fsRep.isNull())
+        return invalidPlatformFileHandle;
+
+    GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(fsRep.data()));
+    GFileIOStream* ioStream = 0;
+    if (mode == OpenForRead)
+        ioStream = g_file_open_readwrite(file.get(), 0, 0);
+    else if (mode == OpenForWrite) {
+        if (g_file_test(fsRep.data(), static_cast<GFileTest>(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)))
+            ioStream = g_file_open_readwrite(file.get(), 0, 0);
+        else
+            ioStream = g_file_create_readwrite(file.get(), G_FILE_CREATE_NONE, 0, 0);
+    }
+
+    return ioStream;
+}
+
+void closeFile(PlatformFileHandle& handle)
+{
+    if (!isHandleValid(handle))
+        return;
+
+    g_io_stream_close(G_IO_STREAM(handle), 0, 0);
+    g_object_unref(handle);
+    handle = invalidPlatformFileHandle;
+}
+
+long long seekFile(PlatformFileHandle handle, long long offset, FileSeekOrigin origin)
+{
+    GSeekType seekType = G_SEEK_SET;
+    switch (origin) {
+    case SeekFromBeginning:
+        seekType = G_SEEK_SET;
+        break;
+    case SeekFromCurrent:
+        seekType = G_SEEK_CUR;
+        break;
+    case SeekFromEnd:
+        seekType = G_SEEK_END;
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    if (!g_seekable_seek(G_SEEKABLE(g_io_stream_get_input_stream(G_IO_STREAM(handle))), offset, seekType, 0, 0))
+        return -1;
+    return g_seekable_tell(G_SEEKABLE(g_io_stream_get_input_stream(G_IO_STREAM(handle))));
+}
+
+int writeToFile(PlatformFileHandle handle, const char* data, int length)
+{
+    gsize bytesWritten;
+    g_output_stream_write_all(g_io_stream_get_output_stream(G_IO_STREAM(handle)), data, length, &bytesWritten, 0, 0);
+    return bytesWritten;
+}
+
+int readFromFile(PlatformFileHandle handle, char* data, int length)
+{
+    GOwnPtr<GError> error;
+    do {
+        gssize bytesRead = g_input_stream_read(g_io_stream_get_input_stream(G_IO_STREAM(handle)), data, length, 0, &error.outPtr());
+        if (bytesRead >= 0)
+            return bytesRead;
+    } while (error && error->code == G_FILE_ERROR_INTR);
+    return -1;
+}
+
+bool unloadModule(PlatformModule module)
+{
+    return g_module_close(module);
+}
+
+} // namespace WebCore
+

Added: trunk/Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp (0 => 160001)


--- trunk/Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp	2013-12-03 14:24:50 UTC (rev 160001)
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2006 Zack Rusin <[email protected]>
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2008 Torch Mobile Inc.  http://www.torchmobile.com/
+ * Copyright (C) 2009-2010 ProFUSION embedded systems
+ * Copyright (C) 2009-2010 Samsung Electronics
+ * Copyright (C) 2012, 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * 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"
+#include "MIMETypeRegistry.h"
+
+#include <wtf/Assertions.h>
+#include <wtf/MainThread.h>
+
+namespace WebCore {
+
+struct ExtensionMap {
+    const char* extension;
+    const char* mimeType;
+};
+
+static const ExtensionMap extensionMap[] = {
+    { "bmp", "image/bmp" },
+    { "css", "text/css" },
+    { "gif", "image/gif" },
+    { "html", "text/html" },
+    { "htm", "text/html" },
+    { "ico", "image/x-icon" },
+    { "jpeg", "image/jpeg" },
+    { "jpg", "image/jpeg" },
+    { "js", "application/x-_javascript_" },
+    { "mng", "video/x-mng" },
+    { "pbm", "image/x-portable-bitmap" },
+    { "pgm", "image/x-portable-graymap" },
+    { "pdf", "application/pdf" },
+    { "png", "image/png" },
+    { "ppm", "image/x-portable-pixmap" },
+    { "rss", "application/rss+xml" },
+    { "svg", "image/svg+xml" },
+    { "text", "text/plain" },
+    { "tif", "image/tiff" },
+    { "tiff", "image/tiff" },
+    { "txt", "text/plain" },
+    { "xbm", "image/x-xbitmap" },
+    { "xml", "text/xml" },
+    { "xpm", "image/x-xpm" },
+    { "xsl", "text/xsl" },
+    { "xhtml", "application/xhtml+xml" },
+    { "wml", "text/vnd.wap.wml" },
+    { "wmlc", "application/vnd.wap.wmlc" },
+    { 0, 0 }
+};
+
+String MIMETypeRegistry::getMIMETypeForExtension(const String &ext)
+{
+    ASSERT(isMainThread());
+
+    String lowerCaseExt = ext.lower();
+    const ExtensionMap* extMap = extensionMap;
+    while (extMap->extension) {
+        if (lowerCaseExt == extMap->extension)
+            return extMap->mimeType;
+        ++extMap;
+    }
+
+    return String();
+}
+
+bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&)
+{
+    return false;
+}
+
+} // namespace WebCore
+

Added: trunk/Source/WebCore/platform/nix/SharedTimerNix.cpp (0 => 160001)


--- trunk/Source/WebCore/platform/nix/SharedTimerNix.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/nix/SharedTimerNix.cpp	2013-12-03 14:24:50 UTC (rev 160001)
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006 Michael Emmel [email protected]
+ * All rights reserved.
+ * Copyright (C) 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * 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"
+#include "SharedTimer.h"
+
+#define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
+#include <glib.h>
+#include <wtf/Assertions.h>
+#include <wtf/CurrentTime.h>
+
+namespace WebCore {
+
+static guint sharedTimer;
+static void (*sharedTimerFiredFunction)();
+
+void setSharedTimerFiredFunction(void (*firedFunction)())
+{
+    sharedTimerFiredFunction = firedFunction;
+}
+
+static gboolean timeoutCallback(gpointer)
+{
+    if (sharedTimerFiredFunction)
+        sharedTimerFiredFunction();
+    return FALSE;
+}
+
+void setSharedTimerFireInterval(double interval)
+{
+    ASSERT(sharedTimerFiredFunction);
+
+    guint intervalInMS = static_cast<guint>(interval * 1000);
+
+    stopSharedTimer();
+    sharedTimer = g_timeout_add_full(GDK_PRIORITY_REDRAW, intervalInMS, timeoutCallback, 0, 0);
+}
+
+void stopSharedTimer()
+{
+    if (!sharedTimer)
+        return;
+
+    gboolean removedSource = g_source_remove(sharedTimer);
+    ASSERT_UNUSED(removedSource, removedSource);
+    sharedTimer = 0;
+}
+
+} // namespace WebCore
+

Added: trunk/Source/WebCore/platform/nix/TemporaryLinkStubs.cpp (0 => 160001)


--- trunk/Source/WebCore/platform/nix/TemporaryLinkStubs.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/nix/TemporaryLinkStubs.cpp	2013-12-03 14:24:50 UTC (rev 160001)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2012, 2013 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * 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 THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "NotImplemented.h"
+#include "SSLKeyGenerator.h"
+#include "URL.h"
+
+namespace WebCore {
+
+void getSupportedKeySizes(Vector<String>&)
+{
+    notImplemented();
+}
+
+String signedPublicKeyAndChallengeString(unsigned, const String&, const URL&)
+{
+    return String();
+}
+
+} // namespace WebCore
+
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to