OSDN Git Service

Hook chromium logging up in WebKit
authorKristian Monsen <kristianm@google.com>
Wed, 3 Nov 2010 10:21:33 +0000 (10:21 +0000)
committerKristian Monsen <kristianm@google.com>
Thu, 4 Nov 2010 13:34:10 +0000 (13:34 +0000)
Change-Id: Ide08371e0bc8f74ef80fe25d416623bd03ac6038

WebKit/Android.mk
WebKit/android/WebCoreSupport/ChromiumLogging.cpp [new file with mode: 0644]
WebKit/android/WebCoreSupport/ChromiumLogging.h [new file with mode: 0644]
WebKit/android/WebCoreSupport/WebRequestContext.cpp
WebKit/android/jni/WebCoreFrameBridge.cpp

index 7906da3..038e3dc 100644 (file)
@@ -32,6 +32,7 @@ LOCAL_SRC_FILES := \
 
 ifeq ($(HTTP_STACK),chrome)
 LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
+       android/WebCoreSupport/ChromiumLogging.cpp \
        android/WebCoreSupport/WebCache.cpp \
        android/WebCoreSupport/WebUrlLoader.cpp \
        android/WebCoreSupport/WebUrlLoaderClient.cpp \
diff --git a/WebKit/android/WebCoreSupport/ChromiumLogging.cpp b/WebKit/android/WebCoreSupport/ChromiumLogging.cpp
new file mode 100644 (file)
index 0000000..07fbeb8
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * 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 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 "ChromiumLogging.h"
+
+#include "ChromiumIncludes.h"
+
+#include <cutils/log.h>
+#include <string>
+
+namespace android {
+
+bool logMessageHandler(int severity, const std::string& str) {
+    int androidSeverity = ANDROID_LOG_VERBOSE;
+    switch(severity) {
+    case logging::LOG_FATAL:
+        androidSeverity = ANDROID_LOG_FATAL;
+        break;
+    case logging::LOG_ERROR_REPORT:
+    case logging::LOG_ERROR:
+        androidSeverity = ANDROID_LOG_ERROR;
+        break;
+    case logging::LOG_WARNING:
+        androidSeverity = ANDROID_LOG_WARN;
+        break;
+    default:
+        androidSeverity = ANDROID_LOG_VERBOSE;
+        break;
+    }
+    android_printLog(androidSeverity, "chromium", "%s", str.c_str());
+    return false;
+}
+
+void initChromiumLogging()
+{
+    static Lock loggingLock;
+    AutoLock aLock(loggingLock);
+    static bool loggingStarted = false;
+    if (!loggingStarted) {
+        logging::SetLogMessageHandler(logMessageHandler);
+        loggingStarted = true;
+    }
+}
+
+} // namespace android
diff --git a/WebKit/android/WebCoreSupport/ChromiumLogging.h b/WebKit/android/WebCoreSupport/ChromiumLogging.h
new file mode 100644 (file)
index 0000000..74b71b4
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2010, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * 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 OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ChromiumLogging_h
+#define ChromiumLogging_h
+
+namespace android {
+
+// Sends chromium logs to logcat
+//
+// This only calls into chromium once, but can be called multiple times.
+// It should be called before any other calls into external/chromium.
+void initChromiumLogging();
+}
+
+#endif
index d7fa6b8..4b29f10 100644 (file)
@@ -27,6 +27,7 @@
 #include "WebRequestContext.h"
 
 #include "ChromiumIncludes.h"
+#include "ChromiumLogging.h"
 #include "JNIUtility.h"
 #include "WebCoreJni.h"
 #include "WebUrlLoaderClient.h"
@@ -193,6 +194,9 @@ WebRequestContext* WebRequestContext::getPrivateBrowsingContext()
 
 WebRequestContext* WebRequestContext::get(bool isPrivateBrowsing)
 {
+    // Initialize chromium logging, needs to be done before any chromium code is called
+    initChromiumLogging();
+
     return isPrivateBrowsing ? getPrivateBrowsingContext() : getRegularContext();
 }
 
index c4d07a4..04db4a9 100644 (file)
@@ -33,6 +33,7 @@
 #include "Cache.h"
 #include "Chrome.h"
 #include "ChromeClientAndroid.h"
+#include "ChromiumLogging.h"
 #include "ContextMenuClientAndroid.h"
 #include "DeviceMotionClientAndroid.h"
 #include "DeviceOrientationClientAndroid.h"
@@ -960,6 +961,11 @@ static void CreateFrame(JNIEnv* env, jobject obj, jobject javaview, jobject jAss
 {
     ScriptController::initializeThreading();
 
+#if USE(CHROME_NETWORK_STACK)
+    // Initialize chromium logging, needs to be done before any chromium code is called
+    initChromiumLogging();
+#endif
+
 #ifdef ANDROID_INSTRUMENT
 #if USE(V8)
     V8Counters::initCounters();