зеркало из https://github.com/mozilla/gecko-dev.git
Bug 694637 - [birch] Add basic DOMTitleChanged and DOMLinkAdded support r=bnicholson
This commit is contained in:
Родитель
a6d04b926d
Коммит
8bd5538b73
|
@ -89,6 +89,7 @@ abstract public class GeckoApp
|
|||
private IntentFilter mConnectivityFilter;
|
||||
private BroadcastReceiver mConnectivityReceiver;
|
||||
public static Button mAwesomeBar;
|
||||
public static ImageButton mFavicon;
|
||||
public static ProgressBar mProgressBar;
|
||||
private SessionHistory mSessionHistory;
|
||||
|
||||
|
@ -470,6 +471,8 @@ abstract public class GeckoApp
|
|||
}
|
||||
});
|
||||
|
||||
mFavicon = (ImageButton) findViewById(R.id.favimage);
|
||||
|
||||
ImageButton reload = (ImageButton) findViewById(R.id.reload);
|
||||
reload.setOnClickListener(new ImageButton.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
|
|
|
@ -45,6 +45,8 @@ import java.text.*;
|
|||
import java.util.*;
|
||||
import java.util.zip.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import android.os.*;
|
||||
import android.app.*;
|
||||
|
@ -1614,6 +1616,35 @@ public class GeckoAppShell
|
|||
}
|
||||
});
|
||||
Log.i("GeckoShell", "URI - " + uri + ", title - " + title);
|
||||
} else if (type.equals("DOMTitleChanged")) {
|
||||
final String title = geckoObject.getString("title");
|
||||
final CharSequence titleText = title;
|
||||
getMainHandler().post(new Runnable() {
|
||||
public void run() {
|
||||
GeckoApp.mAwesomeBar.setText(titleText);
|
||||
}
|
||||
});
|
||||
Log.i("GeckoShell", "title - " + title);
|
||||
} else if (type.equals("DOMLinkAdded")) {
|
||||
final String rel = geckoObject.getString("rel");
|
||||
final String href = geckoObject.getString("href");
|
||||
Log.i("GeckoShell", "link rel - " + rel + ", href - " + href);
|
||||
if (rel.indexOf("icon") != -1) {
|
||||
getMainHandler().post(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
URL url = new URL(href);
|
||||
InputStream is = (InputStream) url.getContent();
|
||||
Drawable image = Drawable.createFromStream(is, "src");
|
||||
GeckoApp.mFavicon.setImageDrawable(image);
|
||||
} catch (MalformedURLException e) {
|
||||
Log.d("GeckoShell", "Error loading favicon: " + e);
|
||||
} catch (IOException e) {
|
||||
Log.d("GeckoShell", "Error loading favicon: " + e);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if (type.equals("log")) {
|
||||
// generic log listener
|
||||
final String msg = geckoObject.getString("msg");
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<LinearLayout android:id="@+android:id/addressBar"
|
||||
style="@style/AddressBar">
|
||||
|
||||
<ImageButton android:id="@+android:id/favicon"
|
||||
<ImageButton android:id="@+android:id/favimage"
|
||||
style="@style/AddressBar.ImageButton.Left"
|
||||
android:src="@drawable/favicon"/>
|
||||
|
||||
|
|
|
@ -226,19 +226,19 @@ Tab.prototype = {
|
|||
},
|
||||
|
||||
onLocationChange: function(aWebProgress, aRequest, aLocationURI) {
|
||||
let browser = BrowserApp.getBrowserForWindow(aWebProgress.DOMWindow);
|
||||
let uri = browser.currentURI.spec;
|
||||
let windowID = aWebProgress.DOMWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID;
|
||||
|
||||
let message = {
|
||||
gecko: {
|
||||
type: "onLocationChange",
|
||||
windowID: windowID,
|
||||
uri: uri
|
||||
}
|
||||
};
|
||||
let browser = BrowserApp.getBrowserForWindow(aWebProgress.DOMWindow);
|
||||
let uri = browser.currentURI.spec;
|
||||
let windowID = aWebProgress.DOMWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID;
|
||||
|
||||
sendMessageToJava(message);
|
||||
let message = {
|
||||
gecko: {
|
||||
type: "onLocationChange",
|
||||
windowID: windowID,
|
||||
uri: uri
|
||||
}
|
||||
};
|
||||
|
||||
sendMessageToJava(message);
|
||||
},
|
||||
|
||||
onSecurityChange: function(aBrowser, aWebProgress, aRequest, aState) {
|
||||
|
@ -279,6 +279,8 @@ var BrowserEventHandler = {
|
|||
BrowserApp.deck.addEventListener("MozMagnifyGestureStart", this, true);
|
||||
BrowserApp.deck.addEventListener("MozMagnifyGestureUpdate", this, true);
|
||||
BrowserApp.deck.addEventListener("DOMContentLoaded", this, true);
|
||||
BrowserApp.deck.addEventListener("DOMLinkAdded", this, true);
|
||||
BrowserApp.deck.addEventListener("DOMTitleChanged", this, true);
|
||||
},
|
||||
|
||||
handleEvent: function(aEvent) {
|
||||
|
@ -300,6 +302,37 @@ var BrowserEventHandler = {
|
|||
});
|
||||
break;
|
||||
}
|
||||
|
||||
case "DOMLinkAdded":
|
||||
let target = aEvent.originalTarget;
|
||||
if (!target.href || target.disabled)
|
||||
return;
|
||||
|
||||
let json = {
|
||||
type: "DOMLinkAdded",
|
||||
windowId: target.ownerDocument.defaultView.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils).currentInnerWindowID,
|
||||
href: target.href,
|
||||
charset: target.ownerDocument.characterSet,
|
||||
title: target.title,
|
||||
rel: target.rel
|
||||
};
|
||||
|
||||
// rel=icon can also have a sizes attribute
|
||||
if (target.hasAttribute("sizes"))
|
||||
json.sizes = target.getAttribute("sizes");
|
||||
|
||||
sendMessageToJava({ gecko: json });
|
||||
break;
|
||||
|
||||
case "DOMTitleChanged":
|
||||
sendMessageToJava({
|
||||
gecko: {
|
||||
type: "DOMTitleChanged",
|
||||
title: aEvent.target.title
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case "click":
|
||||
if (this.blockClick) {
|
||||
aEvent.stopPropagation();
|
||||
|
@ -307,6 +340,7 @@ var BrowserEventHandler = {
|
|||
}
|
||||
|
||||
break;
|
||||
|
||||
case "mousedown":
|
||||
this.startX = aEvent.clientX;
|
||||
this.startY = aEvent.clientY;
|
||||
|
@ -322,6 +356,7 @@ var BrowserEventHandler = {
|
|||
aEvent.stopPropagation();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
|
||||
case "mousemove":
|
||||
let dx = aEvent.clientX - this.lastX;
|
||||
let dy = aEvent.clientY - this.lastY;
|
||||
|
@ -332,6 +367,7 @@ var BrowserEventHandler = {
|
|||
aEvent.stopPropagation();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
|
||||
case "mouseup":
|
||||
this.panning = false;
|
||||
let isDrag = (Math.abs(aEvent.clientX - this.startX) > 10 ||
|
||||
|
@ -432,9 +468,11 @@ var BrowserEventHandler = {
|
|||
aEvent.stopPropagation();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
|
||||
case "MozMagnifyGestureStart":
|
||||
this._pinchDelta = 0;
|
||||
break;
|
||||
|
||||
case "MozMagnifyGestureUpdate":
|
||||
if (!aEvent.delta)
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче