Commit da388f5c authored by Patrick Walton's avatar Patrick Walton
Browse files

Bug 703421 - Part 1: Implement the draw metadata provider interface in widget/android/. r=dougt

parent 1b0b7742
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1303,6 +1303,14 @@ AndroidBridge::HandleGeckoMessage(const nsAString &aMessage, nsAString &aRet)
    ALOG_BRIDGE("leaving %s", __PRETTY_FUNCTION__);
}

static nsCOMPtr<nsIAndroidDrawMetadataProvider> gDrawMetadataProvider = NULL;

nsCOMPtr<nsIAndroidDrawMetadataProvider>
AndroidBridge::GetDrawMetadataProvider()
{
    return gDrawMetadataProvider;
}

void
AndroidBridge::CheckURIVisited(const nsAString& aURI)
{
@@ -1455,3 +1463,11 @@ NS_IMETHODIMP nsAndroidBridge::HandleGeckoMessage(const nsAString & message, nsA
    AndroidBridge::Bridge()->HandleGeckoMessage(message, aRet);
    return NS_OK;
}

/* void SetDrawMetadataProvider (in nsIAndroidDrawMetadataProvider message); */
NS_IMETHODIMP nsAndroidBridge::SetDrawMetadataProvider(nsIAndroidDrawMetadataProvider *aProvider)
{
    gDrawMetadataProvider = aProvider;
    return NS_OK;
}
+2 −0
Original line number Diff line number Diff line
@@ -300,6 +300,8 @@ public:
    
    void HandleGeckoMessage(const nsAString& message, nsAString &aRet);

    nsCOMPtr<nsIAndroidDrawMetadataProvider> GetDrawMetadataProvider();

    void EmitGeckoAccessibilityEvent (PRInt32 eventType, const nsAString& role, const nsAString& text, const nsAString& description, bool enabled, bool checked, bool password);

    void CheckURIVisited(const nsAString& uri);
+4 −3
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ AndroidGeckoSoftwareLayerClient::InitGeckoSoftwareLayerClientClass(JNIEnv *jEnv)
    jLockBufferMethod = getMethod("lockBuffer", "()Ljava/nio/ByteBuffer;");
    jUnlockBufferMethod = getMethod("unlockBuffer", "()V");
    jBeginDrawingMethod = getMethod("beginDrawing", "()V");
    jEndDrawingMethod = getMethod("endDrawing", "(IIII)V");
    jEndDrawingMethod = getMethod("endDrawing", "(IIIILjava/lang/String;)V");
#endif
}

@@ -616,12 +616,13 @@ AndroidGeckoSoftwareLayerClient::BeginDrawing()
}

void
AndroidGeckoSoftwareLayerClient::EndDrawing(const nsIntRect &aRect)
AndroidGeckoSoftwareLayerClient::EndDrawing(const nsIntRect &aRect, const nsAString &aMetadata)
{
    NS_ASSERTION(!isNull(), "EndDrawing() called on null software layer client!");
    AndroidBridge::AutoLocalJNIFrame(1);
    jstring jMetadata = JNI()->NewString(nsPromiseFlatString(aMetadata).get(), aMetadata.Length());
    return JNI()->CallVoidMethod(wrapped_obj, jEndDrawingMethod, aRect.x, aRect.y, aRect.width,
                                 aRect.height);
                                 aRect.height, jMetadata);
}

jobject
+1 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ public:
    unsigned char *LockBufferBits();
    void UnlockBuffer();
    void BeginDrawing();
    void EndDrawing(const nsIntRect &aRect);
    void EndDrawing(const nsIntRect &aRect, const nsAString &aMetadata);

private:
    static jclass jGeckoSoftwareLayerClientClass;
+7 −1
Original line number Diff line number Diff line
#include "nsISupports.idl"

[scriptable, uuid(32c345d4-9f45-446a-8a93-8939f3453e87)]
[scriptable, function, uuid(9feed1e5-bb90-4663-b70a-e03cb27a9e8b)]
interface nsIAndroidDrawMetadataProvider : nsISupports {
  AString getDrawMetadata();
};

[scriptable, uuid(7dd8441a-4f38-49b2-bd90-da69d02a96cf)]
interface nsIAndroidBridge : nsISupports
{
  AString handleGeckoMessage(in AString message);
  void setDrawMetadataProvider(in nsIAndroidDrawMetadataProvider provider);
};
Loading