summaryrefslogtreecommitdiff
path: root/Source/WebKit2
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-10-18 18:14:17 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-21 23:56:18 +0200
commitd4a6abc1b18d65a2bd665cdda10cedd97a98c249 (patch)
tree1809712a95418c814a615d647f6f2b8211c912dc /Source/WebKit2
parent2761751ecaf61064c3742c639a37f110120e8292 (diff)
downloadqtwebkit-d4a6abc1b18d65a2bd665cdda10cedd97a98c249.tar.gz
Fix build for boot2qt eAndroid
Reverts the removal of Android support in WTF, and brings the support up to date. Merged change to MacroAssemblerARM.cpp from QtScript. Replaces use of statvfs with statfs in one place. Replaces shm-based shared memory with ashmem-based in WebKit2. Change-Id: I440b1fbd94bb4148f7ba764d77de65230d13ed90 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2')
-rw-r--r--Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp40
-rw-r--r--Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp2
-rw-r--r--Source/WebKit2/WebKit2.pri2
3 files changed, 42 insertions, 2 deletions
diff --git a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
index 760a8ab1c..6a4d52792 100644
--- a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
+++ b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp
@@ -44,6 +44,10 @@
#include <wtf/UniStdExtras.h>
#include <wtf/text/CString.h>
+#if OS(ANDROID)
+#include <linux/ashmem.h>
+#endif
+
namespace WebKit {
SharedMemory::Handle::Handle()
@@ -97,6 +101,41 @@ void SharedMemory::Handle::adoptFromAttachment(int fileDescriptor, size_t size)
m_size = size;
}
+#if OS(ANDROID)
+PassRefPtr<SharedMemory> SharedMemory::create(size_t size)
+{
+ int fileDescriptor = open("/dev/ashmem", O_RDWR);
+ if (fileDescriptor < 0) {
+ WTFLogAlways("Failed to open ashmem device");
+ return 0;
+ }
+
+ String name = String("/WK2SharedMemory.") + String::number(static_cast<unsigned>(WTF::randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0)));
+ char buf[ASHMEM_NAME_LEN];
+ strlcpy(buf,name.utf8().data(), sizeof(buf));
+ // Ashmem names does not need to be unique.
+ ioctl(fileDescriptor, ASHMEM_SET_NAME, buf);
+
+ int ret = ioctl(fileDescriptor, ASHMEM_SET_SIZE, size);
+ if (ret < 0) {
+ closeWithRetry(fileDescriptor);
+ WTFLogAlways("Failed to create shared memory of size %d", size);
+ return 0;
+ }
+
+ void* data = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0);
+ if (data == MAP_FAILED) {
+ closeWithRetry(fileDescriptor);
+ return 0;
+ }
+
+ RefPtr<SharedMemory> instance = adoptRef(new SharedMemory());
+ instance->m_data = data;
+ instance->m_fileDescriptor = fileDescriptor;
+ instance->m_size = size;
+ return instance.release();
+}
+#else
PassRefPtr<SharedMemory> SharedMemory::create(size_t size)
{
CString tempName;
@@ -138,6 +177,7 @@ PassRefPtr<SharedMemory> SharedMemory::create(size_t size)
instance->m_size = size;
return instance.release();
}
+#endif
static inline int accessModeMMap(SharedMemory::Protection protection)
{
diff --git a/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp b/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp
index 128379f26..01ea5e6bd 100644
--- a/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp
+++ b/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp
@@ -250,7 +250,7 @@ void PopupMenuItemModel::buildItems(const Vector<WebPopupItem>& webPopupItems)
{
QString currentGroup;
m_items.reserveInitialCapacity(webPopupItems.size());
- for (int i = 0; i < webPopupItems.size(); i++) {
+ for (size_t i = 0; i < webPopupItems.size(); i++) {
const WebPopupItem& webPopupItem = webPopupItems[i];
if (webPopupItem.m_isLabel) {
currentGroup = webPopupItem.m_text;
diff --git a/Source/WebKit2/WebKit2.pri b/Source/WebKit2/WebKit2.pri
index cf154cc19..e8d4b80d0 100644
--- a/Source/WebKit2/WebKit2.pri
+++ b/Source/WebKit2/WebKit2.pri
@@ -75,7 +75,7 @@ INCLUDEPATH += $${ROOT_WEBKIT_DIR}/Source/WTF/wtf/qt
INCLUDEPATH += $$WEBKIT2_GENERATED_SOURCES_DIR
-linux-*: {
+linux-*:!android {
# -lrt is required for shm_open and shm_unlink.
LIBS += -lrt
}