Bug 1406168 - 5. Fix build; r?snorp
Removing the previous cpp files moved AndroidBridge.cpp to a different
compilation unit, and that caused some problems with other code that
depended on AndroidBridge being in or not in their compilation unit.
This patch fixes those (unwanted) dependencies.
MozReview-Commit-ID: DJsk3iENsx2
--- a/widget/android/AndroidBridge.cpp
+++ b/widget/android/AndroidBridge.cpp
@@ -51,17 +51,16 @@
#include "nsISupportsPrimitives.h"
#include "MediaPrefs.h"
#include "WidgetUtils.h"
#include "FennecJNIWrappers.h"
using namespace mozilla;
using namespace mozilla::gfx;
-using namespace mozilla::jni;
using namespace mozilla::java;
AndroidBridge* AndroidBridge::sBridge = nullptr;
static jobject sGlobalContext = nullptr;
nsDataHashtable<nsStringHashKey, nsString> AndroidBridge::sStoragePaths;
jmethodID AndroidBridge::GetMethodID(JNIEnv* env, jclass jClass,
const char* methodName, const char* methodType)
@@ -154,17 +153,17 @@ AndroidBridge::~AndroidBridge()
AndroidBridge::AndroidBridge()
{
ALOG_BRIDGE("AndroidBridge::Init");
JNIEnv* const jEnv = jni::GetGeckoThreadEnv();
AutoLocalJNIFrame jniFrame(jEnv);
mMessageQueue = java::GeckoThread::MsgQueue();
- auto msgQueueClass = Class::LocalRef::Adopt(
+ auto msgQueueClass = jni::Class::LocalRef::Adopt(
jEnv, jEnv->GetObjectClass(mMessageQueue.Get()));
// mMessageQueueNext must not be null
mMessageQueueNext = GetMethodID(
jEnv, msgQueueClass.Get(), "next", "()Landroid/os/Message;");
// mMessageQueueMessages may be null (e.g. due to proguard optimization)
mMessageQueueMessages = jEnv->GetFieldID(
msgQueueClass.Get(), "mMessages", "Landroid/os/Message;");
@@ -406,17 +405,17 @@ AndroidBridge::Vibrate(const nsTArray<ui
ALOG_BRIDGE(" invalid vibration duration < 0");
env->ReleaseLongArrayElements(array, elts, JNI_ABORT);
return;
}
elts[i + 1] = d;
}
env->ReleaseLongArrayElements(array, elts, 0);
- GeckoAppShell::Vibrate(LongArray::Ref::From(array), -1 /* don't repeat */);
+ GeckoAppShell::Vibrate(jni::LongArray::Ref::From(array), -1 /* don't repeat */);
}
void
AndroidBridge::GetSystemColors(AndroidSystemColors *aColors)
{
NS_ASSERTION(aColors != nullptr, "AndroidBridge::GetSystemColors: aColors is null!");
if (!aColors)
@@ -644,22 +643,19 @@ AndroidBridge::GetCurrentNetworkInformat
aNetworkInfo->isWifi() = info[1] == 1.0f;
aNetworkInfo->dhcpGateway() = info[2];
env->ReleaseDoubleArrayElements(arr.Get(), info, 0);
}
jobject
AndroidBridge::GetGlobalContextRef() {
- if (sGlobalContext) {
- return sGlobalContext;
- }
-
+ // The context object can change, so get a fresh copy every time.
auto context = GeckoAppShell::GetApplicationContext();
- sGlobalContext = Object::GlobalRef(context).Forget();
+ sGlobalContext = jni::Object::GlobalRef(context).Forget();
MOZ_ASSERT(sGlobalContext);
return sGlobalContext;
}
/* Implementation file */
NS_IMPL_ISUPPORTS(nsAndroidBridge,
nsIAndroidEventDispatcher,
nsIAndroidBridge,
@@ -830,29 +826,29 @@ AndroidBridge::GetProxyForURI(const nsAC
}
bool
AndroidBridge::PumpMessageLoop()
{
JNIEnv* const env = jni::GetGeckoThreadEnv();
if (mMessageQueueMessages) {
- auto msg = Object::LocalRef::Adopt(env,
+ auto msg = jni::Object::LocalRef::Adopt(env,
env->GetObjectField(mMessageQueue.Get(),
mMessageQueueMessages));
// if queue.mMessages is null, queue.next() will block, which we don't
// want. It turns out to be an order of magnitude more performant to do
// this extra check here and block less vs. one fewer checks here and
// more blocking.
if (!msg) {
return false;
}
}
- auto msg = Object::LocalRef::Adopt(
+ auto msg = jni::Object::LocalRef::Adopt(
env, env->CallObjectMethod(mMessageQueue.Get(), mMessageQueueNext));
if (!msg) {
return false;
}
return GeckoThread::PumpMessageLoop(msg);
}
@@ -905,40 +901,40 @@ AndroidBridge::IsContentDocumentDisplaye
{
auto layerClient = GetJavaLayerClient(aWindow);
if (!layerClient) {
return false;
}
return layerClient->IsContentDocumentDisplayed();
}
-Object::LocalRef AndroidBridge::ChannelCreate(Object::Param stream) {
- JNIEnv* const env = GetEnvForThread();
- auto rv = Object::LocalRef::Adopt(env, env->CallStaticObjectMethod(
+jni::Object::LocalRef AndroidBridge::ChannelCreate(jni::Object::Param stream) {
+ JNIEnv* const env = jni::GetEnvForThread();
+ auto rv = jni::Object::LocalRef::Adopt(env, env->CallStaticObjectMethod(
sBridge->jChannels, sBridge->jChannelCreate, stream.Get()));
MOZ_CATCH_JNI_EXCEPTION(env);
return rv;
}
-void AndroidBridge::InputStreamClose(Object::Param obj) {
- JNIEnv* const env = GetEnvForThread();
+void AndroidBridge::InputStreamClose(jni::Object::Param obj) {
+ JNIEnv* const env = jni::GetEnvForThread();
env->CallVoidMethod(obj.Get(), sBridge->jClose);
MOZ_CATCH_JNI_EXCEPTION(env);
}
-uint32_t AndroidBridge::InputStreamAvailable(Object::Param obj) {
- JNIEnv* const env = GetEnvForThread();
+uint32_t AndroidBridge::InputStreamAvailable(jni::Object::Param obj) {
+ JNIEnv* const env = jni::GetEnvForThread();
auto rv = env->CallIntMethod(obj.Get(), sBridge->jAvailable);
MOZ_CATCH_JNI_EXCEPTION(env);
return rv;
}
-nsresult AndroidBridge::InputStreamRead(Object::Param obj, char *aBuf, uint32_t aCount, uint32_t *aRead) {
- JNIEnv* const env = GetEnvForThread();
- auto arr = ByteBuffer::New(aBuf, aCount);
+nsresult AndroidBridge::InputStreamRead(jni::Object::Param obj, char *aBuf, uint32_t aCount, uint32_t *aRead) {
+ JNIEnv* const env = jni::GetEnvForThread();
+ auto arr = jni::ByteBuffer::New(aBuf, aCount);
jint read = env->CallIntMethod(obj.Get(), sBridge->jByteBufferRead, arr.Get());
if (env->ExceptionCheck()) {
env->ExceptionClear();
return NS_ERROR_FAILURE;
}
if (read <= 0) {
--- a/widget/android/AndroidColors.h
+++ b/widget/android/AndroidColors.h
@@ -6,18 +6,18 @@
#ifndef mozilla_widget_AndroidColors_h
#define mozilla_widget_AndroidColors_h
#include "mozilla/gfx/2D.h"
namespace mozilla {
namespace widget {
-static const Color sAndroidBackgroundColor(Color(1.0f, 1.0f, 1.0f));
-static const Color sAndroidBorderColor(Color(0.73f, 0.73f, 0.73f));
-static const Color sAndroidCheckColor(Color(0.19f, 0.21f, 0.23f));
-static const Color sAndroidDisabledColor(Color(0.88f, 0.88f, 0.88f));
-static const Color sAndroidActiveColor(Color(0.94f, 0.94f, 0.94f));
+static const gfx::Color sAndroidBackgroundColor(gfx::Color(1.0f, 1.0f, 1.0f));
+static const gfx::Color sAndroidBorderColor(gfx::Color(0.73f, 0.73f, 0.73f));
+static const gfx::Color sAndroidCheckColor(gfx::Color(0.19f, 0.21f, 0.23f));
+static const gfx::Color sAndroidDisabledColor(gfx::Color(0.88f, 0.88f, 0.88f));
+static const gfx::Color sAndroidActiveColor(gfx::Color(0.94f, 0.94f, 0.94f));
} // namespace widget
} // namespace mozilla
#endif // mozilla_widget_AndroidColors_h
--- a/widget/android/GeckoProcessManager.h
+++ b/widget/android/GeckoProcessManager.h
@@ -33,17 +33,17 @@ class GeckoProcessManager final
RefPtr<TabParent> tab = cpm->GetTopLevelTabParentByProcessAndTabId(
ContentParentId(aContentId), TabId(aTabId));
NS_ENSURE_TRUE(tab, nullptr);
nsCOMPtr<nsPIDOMWindowOuter> domWin = tab->GetParentWindowOuter();
NS_ENSURE_TRUE(domWin, nullptr);
- return WidgetUtils::DOMWindowToWidget(domWin);
+ return widget::WidgetUtils::DOMWindowToWidget(domWin);
}
public:
static jni::Object::LocalRef
GetEditableParent(int64_t aContentId, int64_t aTabId)
{
// On binder thread.
jni::Object::GlobalRef ret;
--- a/widget/android/nsAppShell.cpp
+++ b/widget/android/nsAppShell.cpp
@@ -368,17 +368,17 @@ public:
static void NotifyAlertListener(jni::String::Param aName,
jni::String::Param aTopic,
jni::String::Param aCookie)
{
if (!aName || !aTopic || !aCookie) {
return;
}
- AndroidAlerts::NotifyListener(
+ widget::AndroidAlerts::NotifyListener(
aName->ToString(), aTopic->ToCString().get(),
aCookie->ToString().get());
}
};
nsAppShell::nsAppShell()
: mSyncRunFinished(*(sAppShellLock = new Mutex("nsAppShell")),
"nsAppShell.SyncRun")
@@ -585,17 +585,17 @@ nsAppShell::Observe(nsISupports* aSubjec
removeObserver = true;
} else if (!strcmp(aTopic, "chrome-document-loaded")) {
// Set the global ready state and enable the window event dispatcher
// for this particular GeckoView.
nsCOMPtr<nsIDocument> doc = do_QueryInterface(aSubject);
MOZ_ASSERT(doc);
nsCOMPtr<nsIWidget> widget =
- WidgetUtils::DOMWindowToWidget(doc->GetWindow());
+ widget::WidgetUtils::DOMWindowToWidget(doc->GetWindow());
// `widget` may be one of several different types in the parent
// process, including the Android nsWindow, PuppetWidget, etc. To
// ensure that we only accept the Android nsWindow, we check that the
// widget is a top-level window and that its NS_NATIVE_WIDGET value is
// non-null, which is not the case for non-native widgets like
// PuppetWidget.
if (widget &&
@@ -660,18 +660,18 @@ nsAppShell::Observe(nsISupports* aSubjec
auto editableParent = java::GeckoServiceChildProcess::GetEditableParent(
contentId, tabId);
NS_ENSURE_TRUE(editableParent, NS_OK);
RefPtr<widget::PuppetWidget> widget(tabChild->WebWidget());
auto editableChild = java::GeckoEditableChild::New(editableParent);
NS_ENSURE_TRUE(widget && editableChild, NS_OK);
- RefPtr<GeckoEditableSupport> editableSupport =
- new GeckoEditableSupport(editableChild);
+ RefPtr<widget::GeckoEditableSupport> editableSupport =
+ new widget::GeckoEditableSupport(editableChild);
// Tell PuppetWidget to use our listener for IME operations.
widget->SetNativeTextEventDispatcherListener(editableSupport);
}
if (removeObserver) {
nsCOMPtr<nsIObserverService> obsServ =
mozilla::services::GetObserverService();
--- a/widget/android/nsNativeThemeAndroid.cpp
+++ b/widget/android/nsNativeThemeAndroid.cpp
@@ -8,16 +8,17 @@
#include "nsIFrame.h"
#include "nsThemeConstants.h"
#include "AndroidColors.h"
#include "nsCSSRendering.h"
#include "PathHelpers.h"
NS_IMPL_ISUPPORTS_INHERITED(nsNativeThemeAndroid, nsNativeTheme, nsITheme)
+using namespace mozilla;
using namespace mozilla::gfx;
static void
ClampRectAndMoveToCenter(nsRect& aRect)
{
if (aRect.width < aRect.height) {
aRect.y += (aRect.height - aRect.width) / 2;
aRect.height = aRect.width;