зеркало из https://github.com/mozilla/gecko-dev.git
Merge fx-team to m-c. a=merge
This commit is contained in:
Коммит
4558cd489f
|
@ -15,6 +15,14 @@
|
||||||
<div id="main"></div>
|
<div id="main"></div>
|
||||||
<script src="fake-mozLoop.js"></script>
|
<script src="fake-mozLoop.js"></script>
|
||||||
<script src="fake-l10n.js"></script>
|
<script src="fake-l10n.js"></script>
|
||||||
|
<script>
|
||||||
|
window.OTProperties = {
|
||||||
|
cdnURL: '../content/shared/libs/'
|
||||||
|
};
|
||||||
|
window.OTProperties.assetURL = window.OTProperties.cdnURL + 'sdk-content/';
|
||||||
|
window.OTProperties.configURL = window.OTProperties.assetURL + 'js/dynamic_config.min.js';
|
||||||
|
window.OTProperties.cssURL = window.OTProperties.assetURL + 'css/ot.css';
|
||||||
|
</script>
|
||||||
<script src="../content/shared/libs/sdk.js"></script>
|
<script src="../content/shared/libs/sdk.js"></script>
|
||||||
<script src="../content/shared/libs/react-0.11.1.js"></script>
|
<script src="../content/shared/libs/react-0.11.1.js"></script>
|
||||||
<script src="../content/shared/libs/jquery-2.1.0.js"></script>
|
<script src="../content/shared/libs/jquery-2.1.0.js"></script>
|
||||||
|
|
|
@ -23,7 +23,7 @@ browser.jar:
|
||||||
* skin/classic/browser/browser.css
|
* skin/classic/browser/browser.css
|
||||||
* skin/classic/browser/browser-lightweightTheme.css
|
* skin/classic/browser/browser-lightweightTheme.css
|
||||||
skin/classic/browser/click-to-play-warning-stripes.png
|
skin/classic/browser/click-to-play-warning-stripes.png
|
||||||
skin/classic/browser/content-contextmenu.svg
|
* skin/classic/browser/content-contextmenu.svg
|
||||||
* skin/classic/browser/engineManager.css
|
* skin/classic/browser/engineManager.css
|
||||||
skin/classic/browser/fullscreen-darknoise.png
|
skin/classic/browser/fullscreen-darknoise.png
|
||||||
skin/classic/browser/Geolocation-16.png
|
skin/classic/browser/Geolocation-16.png
|
||||||
|
|
|
@ -23,7 +23,7 @@ browser.jar:
|
||||||
* skin/classic/browser/browser.css (browser.css)
|
* skin/classic/browser/browser.css (browser.css)
|
||||||
* skin/classic/browser/browser-lightweightTheme.css
|
* skin/classic/browser/browser-lightweightTheme.css
|
||||||
skin/classic/browser/click-to-play-warning-stripes.png
|
skin/classic/browser/click-to-play-warning-stripes.png
|
||||||
skin/classic/browser/content-contextmenu.svg
|
* skin/classic/browser/content-contextmenu.svg
|
||||||
* skin/classic/browser/engineManager.css (engineManager.css)
|
* skin/classic/browser/engineManager.css (engineManager.css)
|
||||||
skin/classic/browser/fullscreen-darknoise.png
|
skin/classic/browser/fullscreen-darknoise.png
|
||||||
skin/classic/browser/Geolocation-16.png
|
skin/classic/browser/Geolocation-16.png
|
||||||
|
|
|
@ -25,7 +25,7 @@ browser.jar:
|
||||||
* skin/classic/browser/browser.css
|
* skin/classic/browser/browser.css
|
||||||
* skin/classic/browser/browser-lightweightTheme.css
|
* skin/classic/browser/browser-lightweightTheme.css
|
||||||
skin/classic/browser/click-to-play-warning-stripes.png
|
skin/classic/browser/click-to-play-warning-stripes.png
|
||||||
skin/classic/browser/content-contextmenu.svg
|
* skin/classic/browser/content-contextmenu.svg
|
||||||
* skin/classic/browser/engineManager.css
|
* skin/classic/browser/engineManager.css
|
||||||
skin/classic/browser/fullscreen-darknoise.png
|
skin/classic/browser/fullscreen-darknoise.png
|
||||||
skin/classic/browser/Geolocation-16.png
|
skin/classic/browser/Geolocation-16.png
|
||||||
|
@ -444,7 +444,7 @@ browser.jar:
|
||||||
* skin/classic/aero/browser/browser.css (browser-aero.css)
|
* skin/classic/aero/browser/browser.css (browser-aero.css)
|
||||||
* skin/classic/aero/browser/browser-lightweightTheme.css
|
* skin/classic/aero/browser/browser-lightweightTheme.css
|
||||||
skin/classic/aero/browser/click-to-play-warning-stripes.png
|
skin/classic/aero/browser/click-to-play-warning-stripes.png
|
||||||
skin/classic/aero/browser/content-contextmenu.svg
|
* skin/classic/aero/browser/content-contextmenu.svg
|
||||||
* skin/classic/aero/browser/engineManager.css
|
* skin/classic/aero/browser/engineManager.css
|
||||||
skin/classic/aero/browser/fullscreen-darknoise.png
|
skin/classic/aero/browser/fullscreen-darknoise.png
|
||||||
skin/classic/aero/browser/Geolocation-16.png
|
skin/classic/aero/browser/Geolocation-16.png
|
||||||
|
|
|
@ -701,3 +701,11 @@ if CONFIG['MOZ_CRASHREPORTER']:
|
||||||
if CONFIG['MOZ_ANDROID_MLS_STUMBLER']:
|
if CONFIG['MOZ_ANDROID_MLS_STUMBLER']:
|
||||||
main.included_projects += ['../FennecStumbler']
|
main.included_projects += ['../FennecStumbler']
|
||||||
main.referenced_projects += ['../FennecStumbler']
|
main.referenced_projects += ['../FennecStumbler']
|
||||||
|
|
||||||
|
if CONFIG['MOZ_ANDROID_SEARCH_ACTIVITY']:
|
||||||
|
searchactivity = add_android_eclipse_library_project('FennecResourcesSearch')
|
||||||
|
searchactivity.package_name = 'org.mozilla.fennec.resources.search'
|
||||||
|
searchactivity.res = SRCDIR + '/../search/res'
|
||||||
|
searchactivity.included_projects += ['../' + resources.name]
|
||||||
|
|
||||||
|
main.included_projects += ['../' + searchactivity.name]
|
||||||
|
|
|
@ -17,6 +17,9 @@
|
||||||
|
|
||||||
package org.mozilla.gecko.sqlite;
|
package org.mozilla.gecko.sqlite;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.mozilla.gecko.AppConstants;
|
import org.mozilla.gecko.AppConstants;
|
||||||
import org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI;
|
import org.mozilla.gecko.mozglue.generatorannotations.WrapElementForJNI;
|
||||||
|
|
||||||
|
@ -24,29 +27,26 @@ import android.database.AbstractCursor;
|
||||||
import android.database.CursorIndexOutOfBoundsException;
|
import android.database.CursorIndexOutOfBoundsException;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Android's AbstractCursor throws on getBlob()
|
|
||||||
* and MatrixCursor forgot to override it. This was fixed
|
|
||||||
* at some point but old devices are still SOL.
|
|
||||||
* Oh, and everything in MatrixCursor is private instead of
|
|
||||||
* protected, so we need to entirely duplicate it here,
|
|
||||||
* instad of just being able to add the missing method.
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* A mutable cursor implementation backed by an array of {@code Object}s. Use
|
* A mutable cursor implementation backed by an array of {@code Object}s. Use
|
||||||
* {@link #newRow()} to add rows. Automatically expands internal capacity
|
* {@link #newRow()} to add rows. Automatically expands internal capacity
|
||||||
* as needed.
|
* as needed.
|
||||||
|
*
|
||||||
|
* This class provides one missing feature from Android's MatrixCursor:
|
||||||
|
* the implementation of getBlob that was inadvertently omitted from API 9 (and
|
||||||
|
* perhaps later; it's present in 14).
|
||||||
|
*
|
||||||
|
* MatrixCursor is all private, so we entirely duplicate it here.
|
||||||
*/
|
*/
|
||||||
public class MatrixBlobCursor extends AbstractCursor {
|
public class MatrixBlobCursor extends AbstractCursor {
|
||||||
|
private static final String LOGTAG = "GeckoMatrixCursor";
|
||||||
|
|
||||||
private final String[] columnNames;
|
private final String[] columnNames;
|
||||||
private Object[] data;
|
|
||||||
private int rowCount;
|
|
||||||
private final int columnCount;
|
private final int columnCount;
|
||||||
private static final String LOGTAG = "MatrixBlobCursor";
|
|
||||||
|
private int rowCount;
|
||||||
|
|
||||||
|
/* inner-access */ Object[] data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new cursor with the given initial capacity.
|
* Constructs a new cursor with the given initial capacity.
|
||||||
|
@ -143,17 +143,18 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
*/
|
*/
|
||||||
@WrapElementForJNI
|
@WrapElementForJNI
|
||||||
public void addRow(Iterable<?> columnValues) {
|
public void addRow(Iterable<?> columnValues) {
|
||||||
int start = rowCount * columnCount;
|
final int start = rowCount * columnCount;
|
||||||
int end = start + columnCount;
|
|
||||||
ensureCapacity(end);
|
|
||||||
|
|
||||||
if (columnValues instanceof ArrayList<?>) {
|
if (columnValues instanceof ArrayList<?>) {
|
||||||
addRow((ArrayList<?>) columnValues, start);
|
addRow((ArrayList<?>) columnValues, start);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final int end = start + columnCount;
|
||||||
int current = start;
|
int current = start;
|
||||||
Object[] localData = data;
|
|
||||||
|
ensureCapacity(end);
|
||||||
|
final Object[] localData = data;
|
||||||
for (Object columnValue : columnValues) {
|
for (Object columnValue : columnValues) {
|
||||||
if (current == end) {
|
if (current == end) {
|
||||||
// TODO: null out row?
|
// TODO: null out row?
|
||||||
|
@ -176,39 +177,47 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
/** Optimization for {@link ArrayList}. */
|
/** Optimization for {@link ArrayList}. */
|
||||||
@WrapElementForJNI
|
@WrapElementForJNI
|
||||||
private void addRow(ArrayList<?> columnValues, int start) {
|
private void addRow(ArrayList<?> columnValues, int start) {
|
||||||
int size = columnValues.size();
|
final int size = columnValues.size();
|
||||||
if (size != columnCount) {
|
if (size != columnCount) {
|
||||||
throw new IllegalArgumentException("columnNames.length = "
|
throw new IllegalArgumentException("columnNames.length = "
|
||||||
+ columnCount + ", columnValues.size() = " + size);
|
+ columnCount + ", columnValues.size() = " + size);
|
||||||
}
|
}
|
||||||
|
|
||||||
rowCount++;
|
final int end = start + columnCount;
|
||||||
Object[] localData = data;
|
ensureCapacity(end);
|
||||||
|
|
||||||
|
// Take a reference just in case someone calls ensureCapacity
|
||||||
|
// and `data` gets replaced by a new array!
|
||||||
|
final Object[] localData = data;
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
localData[start + i] = columnValues.get(i);
|
localData[start + i] = columnValues.get(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rowCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Ensures that this cursor has enough capacity. */
|
/**
|
||||||
private void ensureCapacity(int size) {
|
* Ensures that this cursor has enough capacity. If it needs to allocate
|
||||||
if (size > data.length) {
|
* a new array, the existing capacity will be at least doubled.
|
||||||
Object[] oldData = this.data;
|
*/
|
||||||
int newSize = data.length * 2;
|
private void ensureCapacity(final int size) {
|
||||||
if (newSize < size) {
|
if (size <= data.length) {
|
||||||
newSize = size;
|
return;
|
||||||
}
|
|
||||||
this.data = new Object[newSize];
|
|
||||||
System.arraycopy(oldData, 0, this.data, 0, oldData.length);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Object[] oldData = this.data;
|
||||||
|
this.data = new Object[Math.max(size, data.length * 2)];
|
||||||
|
System.arraycopy(oldData, 0, this.data, 0, oldData.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a row, starting from the left-most column and adding one column
|
* Builds a row, starting from the left-most column and adding one column
|
||||||
* value at a time. Follows the same ordering as the column names specified
|
* value at a time. Follows the same ordering as the column names specified
|
||||||
* at cursor construction time.
|
* at cursor construction time.
|
||||||
|
*
|
||||||
|
* Not thread-safe.
|
||||||
*/
|
*/
|
||||||
public class RowBuilder {
|
public class RowBuilder {
|
||||||
|
|
||||||
private int index;
|
private int index;
|
||||||
private final int endIndex;
|
private final int endIndex;
|
||||||
|
|
||||||
|
@ -224,10 +233,9 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
* values
|
* values
|
||||||
* @return this builder to support chaining
|
* @return this builder to support chaining
|
||||||
*/
|
*/
|
||||||
public RowBuilder add(Object columnValue) {
|
public RowBuilder add(final Object columnValue) {
|
||||||
if (index == endIndex) {
|
if (index == endIndex) {
|
||||||
throw new CursorIndexOutOfBoundsException(
|
throw new CursorIndexOutOfBoundsException("No more columns left.");
|
||||||
"No more columns left.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data[index++] = columnValue;
|
data[index++] = columnValue;
|
||||||
|
@ -235,6 +243,9 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Not thread safe.
|
||||||
|
*/
|
||||||
public void set(int column, Object value) {
|
public void set(int column, Object value) {
|
||||||
if (column < 0 || column >= columnCount) {
|
if (column < 0 || column >= columnCount) {
|
||||||
throw new CursorIndexOutOfBoundsException("Requested column: "
|
throw new CursorIndexOutOfBoundsException("Requested column: "
|
||||||
|
@ -269,7 +280,7 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public short getShort(int column) {
|
public short getShort(int column) {
|
||||||
Object value = get(column);
|
final Object value = get(column);
|
||||||
if (value == null) return 0;
|
if (value == null) return 0;
|
||||||
if (value instanceof Number) return ((Number) value).shortValue();
|
if (value instanceof Number) return ((Number) value).shortValue();
|
||||||
return Short.parseShort(value.toString());
|
return Short.parseShort(value.toString());
|
||||||
|
@ -314,10 +325,11 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
if (value instanceof byte[]) {
|
if (value instanceof byte[]) {
|
||||||
return (byte[]) value;
|
return (byte[]) value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value instanceof ByteBuffer) {
|
if (value instanceof ByteBuffer) {
|
||||||
ByteBuffer data = (ByteBuffer)value;
|
final ByteBuffer bytes = (ByteBuffer) value;
|
||||||
byte[] byteArray = new byte[data.remaining()];
|
byte[] byteArray = new byte[bytes.remaining()];
|
||||||
data.get(byteArray);
|
bytes.get(byteArray);
|
||||||
return byteArray;
|
return byteArray;
|
||||||
}
|
}
|
||||||
throw new UnsupportedOperationException("BLOB Object not of known type");
|
throw new UnsupportedOperationException("BLOB Object not of known type");
|
||||||
|
@ -332,7 +344,7 @@ public class MatrixBlobCursor extends AbstractCursor {
|
||||||
protected void finalize() {
|
protected void finalize() {
|
||||||
if (AppConstants.DEBUG_BUILD) {
|
if (AppConstants.DEBUG_BUILD) {
|
||||||
if (!isClosed()) {
|
if (!isClosed()) {
|
||||||
Log.e(LOGTAG, "Cursor finalized without being closed");
|
Log.e(LOGTAG, "Cursor finalized without being closed", new RuntimeException("stack"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,10 @@ HelperAppLauncherDialog.prototype = {
|
||||||
// file to another application.
|
// file to another application.
|
||||||
let file = url.QueryInterface(Ci.nsIFileURL).file;
|
let file = url.QueryInterface(Ci.nsIFileURL).file;
|
||||||
|
|
||||||
|
// Normalize the nsILocalFile in-place. This will ensure that paths
|
||||||
|
// can be correctly compared via `contains`, below.
|
||||||
|
file.normalize();
|
||||||
|
|
||||||
// TODO: pref blacklist?
|
// TODO: pref blacklist?
|
||||||
|
|
||||||
let appRoot = FileUtils.getFile("XREExeF", []);
|
let appRoot = FileUtils.getFile("XREExeF", []);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче