WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-124987-20131202202757.patch (text/plain), 30.54 KB, created by
Thiago de Barros Lacerda
on 2013-12-02 15:27:59 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Thiago de Barros Lacerda
Created:
2013-12-02 15:27:59 PST
Size:
30.54 KB
patch
obsolete
>Subversion Revision: 159973 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 85e992d42340320aa108ed35a97807739d57a34c..dcd065c2e7628743113f1682ce3c745eebb5c9eb 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,20 @@ >+2013-12-02 Thiago de Barros Lacerda <thiago.lacerda@openbossa.org> >+ >+ Nix Upstream: Adding missing nix new files to WebCore >+ https://bugs.webkit.org/show_bug.cgi?id=124987 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-02 Brady Eidson <beidson@apple.com> > > Add more CachedPage null checks >diff --git a/Source/WebCore/PlatformNix.cmake b/Source/WebCore/PlatformNix.cmake >index d1959112c544a1b501d85335ed882d97f37e7d6f..69997805e60e0355081751d88905bb7e9e74a50b 100644 >--- a/Source/WebCore/PlatformNix.cmake >+++ b/Source/WebCore/PlatformNix.cmake >@@ -116,16 +116,21 @@ list(APPEND WebCore_SOURCES > 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 >diff --git a/Source/WebCore/platform/nix/ErrorsNix.cpp b/Source/WebCore/platform/nix/ErrorsNix.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..4929be4ced9940c7bcb5e4518270192f4bf2b07a >--- /dev/null >+++ b/Source/WebCore/platform/nix/ErrorsNix.cpp >@@ -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 >+ >diff --git a/Source/WebCore/platform/nix/ErrorsNix.h b/Source/WebCore/platform/nix/ErrorsNix.h >new file mode 100644 >index 0000000000000000000000000000000000000000..c71b0ec939313c1bbbda22eda820c6e9c9d003cb >--- /dev/null >+++ b/Source/WebCore/platform/nix/ErrorsNix.h >@@ -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 >+ >diff --git a/Source/WebCore/platform/nix/FileSystemNix.cpp b/Source/WebCore/platform/nix/FileSystemNix.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..b8a934999f0a0f1ebd08466d408ab324f4baa50f >--- /dev/null >+++ b/Source/WebCore/platform/nix/FileSystemNix.cpp >@@ -0,0 +1,345 @@ >+/* >+ * 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 >+ >diff --git a/Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp b/Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..ed381fdcd5ffa0ee03754a0e51b0695ccd8a22b2 >--- /dev/null >+++ b/Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp >@@ -0,0 +1,98 @@ >+/* >+ * Copyright (C) 2006 Zack Rusin <zack@kde.org> >+ * 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 >+ >diff --git a/Source/WebCore/platform/nix/SharedTimerNix.cpp b/Source/WebCore/platform/nix/SharedTimerNix.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..5f1c0dd2d077db167b7e0724863505dbe184b28b >--- /dev/null >+++ b/Source/WebCore/platform/nix/SharedTimerNix.cpp >@@ -0,0 +1,75 @@ >+/* >+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. >+ * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com >+ * 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 >+ >diff --git a/Source/WebCore/platform/nix/TemporaryLinkStubs.cpp b/Source/WebCore/platform/nix/TemporaryLinkStubs.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..9ee7b6e2f0e95c0412e2344efd08a2e3395e44ab >--- /dev/null >+++ b/Source/WebCore/platform/nix/TemporaryLinkStubs.cpp >@@ -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 >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
benjamin
:
review+
benjamin
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 124987
:
218020
| 218226 |
218261