зеркало из https://github.com/mozilla/pjs.git
Merge last green changeset of m-c to m-i
This commit is contained in:
Коммит
614e8bdc51
|
@ -713,7 +713,6 @@ let UI = {
|
||||||
if (data == "enter" || data == "exit") {
|
if (data == "enter" || data == "exit") {
|
||||||
hideSearch();
|
hideSearch();
|
||||||
self._privateBrowsing.transitionMode = data;
|
self._privateBrowsing.transitionMode = data;
|
||||||
self.storageBusy();
|
|
||||||
}
|
}
|
||||||
} else if (topic == "private-browsing-transition-complete") {
|
} else if (topic == "private-browsing-transition-complete") {
|
||||||
// We use .transitionMode here, as aData is empty.
|
// We use .transitionMode here, as aData is empty.
|
||||||
|
@ -722,7 +721,6 @@ let UI = {
|
||||||
self.showTabView(false);
|
self.showTabView(false);
|
||||||
|
|
||||||
self._privateBrowsing.transitionMode = "";
|
self._privateBrowsing.transitionMode = "";
|
||||||
self.storageReady();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -869,8 +867,12 @@ let UI = {
|
||||||
this._currentTab = tab;
|
this._currentTab = tab;
|
||||||
|
|
||||||
if (this.isTabViewVisible()) {
|
if (this.isTabViewVisible()) {
|
||||||
if (!this.restoredClosedTab && this._lastOpenedTab == tab &&
|
// We want to zoom in if:
|
||||||
tab._tabViewTabItem) {
|
// 1) we didn't just restore a tab via Ctrl+Shift+T
|
||||||
|
// 2) we're not in the middle of switching from/to private browsing
|
||||||
|
// 3) the currently selected tab is the last created tab and has a tabItem
|
||||||
|
if (!this.restoredClosedTab && !this._privateBrowsing.transitionMode &&
|
||||||
|
this._lastOpenedTab == tab && tab._tabViewTabItem) {
|
||||||
tab._tabViewTabItem.zoomIn(true);
|
tab._tabViewTabItem.zoomIn(true);
|
||||||
this._lastOpenedTab = null;
|
this._lastOpenedTab = null;
|
||||||
return;
|
return;
|
||||||
|
@ -1130,18 +1132,26 @@ let UI = {
|
||||||
function getClosestTabBy(norm) {
|
function getClosestTabBy(norm) {
|
||||||
if (!self.getActiveTab())
|
if (!self.getActiveTab())
|
||||||
return null;
|
return null;
|
||||||
let centers =
|
|
||||||
[[item.bounds.center(), item]
|
let activeTab = self.getActiveTab();
|
||||||
for each(item in TabItems.getItems()) if (!item.parent || !item.parent.hidden)];
|
let activeTabGroup = activeTab.parent;
|
||||||
let myCenter = self.getActiveTab().bounds.center();
|
let myCenter = activeTab.bounds.center();
|
||||||
let matches = centers
|
let match;
|
||||||
.filter(function(item){return norm(item[0], myCenter)})
|
|
||||||
.sort(function(a,b){
|
TabItems.getItems().forEach(function (item) {
|
||||||
return myCenter.distance(a[0]) - myCenter.distance(b[0]);
|
if (!item.parent.hidden &&
|
||||||
});
|
(!activeTabGroup.expanded || activeTabGroup.id == item.parent.id)) {
|
||||||
if (matches.length > 0)
|
let itemCenter = item.bounds.center();
|
||||||
return matches[0][1];
|
|
||||||
return null;
|
if (norm(itemCenter, myCenter)) {
|
||||||
|
let itemDist = myCenter.distance(itemCenter);
|
||||||
|
if (!match || match[0] > itemDist)
|
||||||
|
match = [itemDist, item];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return match && match[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
let preventDefault = true;
|
let preventDefault = true;
|
||||||
|
@ -1613,11 +1623,15 @@ let UI = {
|
||||||
getFavIconUrlForTab: function UI_getFavIconUrlForTab(tab) {
|
getFavIconUrlForTab: function UI_getFavIconUrlForTab(tab) {
|
||||||
let url;
|
let url;
|
||||||
|
|
||||||
// use the tab image if it doesn't start with http e.g. data:image/png, chrome://
|
if (tab.image) {
|
||||||
if (tab.image && !(/^https?:/.test(tab.image)))
|
// if starts with http/https, fetch icon from favicon service via the moz-anno protocal
|
||||||
url = tab.image;
|
if (/^https?:/.test(tab.image))
|
||||||
else
|
url = gFavIconService.getFaviconLinkForIcon(gWindow.makeURI(tab.image)).spec;
|
||||||
|
else
|
||||||
|
url = tab.image;
|
||||||
|
} else {
|
||||||
url = gFavIconService.getFaviconImageForPage(tab.linkedBrowser.currentURI).spec;
|
url = gFavIconService.getFaviconImageForPage(tab.linkedBrowser.currentURI).spec;
|
||||||
|
}
|
||||||
|
|
||||||
return url;
|
return url;
|
||||||
},
|
},
|
||||||
|
|
|
@ -120,6 +120,7 @@ _BROWSER_FILES = \
|
||||||
browser_tabview_bug628061.js \
|
browser_tabview_bug628061.js \
|
||||||
browser_tabview_bug628165.js \
|
browser_tabview_bug628165.js \
|
||||||
browser_tabview_bug628270.js \
|
browser_tabview_bug628270.js \
|
||||||
|
browser_tabview_bug628887.js \
|
||||||
browser_tabview_bug629189.js \
|
browser_tabview_bug629189.js \
|
||||||
browser_tabview_bug629195.js \
|
browser_tabview_bug629195.js \
|
||||||
browser_tabview_bug630102.js \
|
browser_tabview_bug630102.js \
|
||||||
|
@ -154,6 +155,7 @@ _BROWSER_FILES = \
|
||||||
browser_tabview_bug669694.js \
|
browser_tabview_bug669694.js \
|
||||||
browser_tabview_bug673196.js \
|
browser_tabview_bug673196.js \
|
||||||
browser_tabview_bug673729.js \
|
browser_tabview_bug673729.js \
|
||||||
|
browser_tabview_bug679853.js \
|
||||||
browser_tabview_bug681599.js \
|
browser_tabview_bug681599.js \
|
||||||
browser_tabview_click_group.js \
|
browser_tabview_click_group.js \
|
||||||
browser_tabview_dragdrop.js \
|
browser_tabview_dragdrop.js \
|
||||||
|
|
|
@ -40,8 +40,18 @@ function onTabViewWindowLoaded() {
|
||||||
// fired, a delay is used here to avoid the test code run before the browser
|
// fired, a delay is used here to avoid the test code run before the browser
|
||||||
// code.
|
// code.
|
||||||
executeSoon(function() {
|
executeSoon(function() {
|
||||||
is($icon.attr("src"), fi.defaultFavicon.spec,
|
let iconSrc = $icon.attr("src");
|
||||||
"The icon is showing the default fav icon");
|
let hasData = true;
|
||||||
|
try {
|
||||||
|
fi.getFaviconDataAsDataURL(iconSrc);
|
||||||
|
} catch(e) {
|
||||||
|
hasData = false;
|
||||||
|
}
|
||||||
|
ok(!hasData, "The icon src doesn't return any data");
|
||||||
|
// with moz-anno:favicon automatically redirects to the default favIcon
|
||||||
|
// if the given url is invalid
|
||||||
|
ok(/^moz-anno:favicon:/.test(iconSrc),
|
||||||
|
"The icon url starts with moz-anno:favicon so the default fav icon would be displayed");
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
gBrowser.removeTab(newTab);
|
gBrowser.removeTab(newTab);
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/* Any copyright is dedicated to the Public Domain.
|
||||||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||||
|
|
||||||
|
function test() {
|
||||||
|
waitForExplicitFinish();
|
||||||
|
|
||||||
|
newWindowWithTabView(function(win) {
|
||||||
|
registerCleanupFunction(function() win.close());
|
||||||
|
|
||||||
|
let cw = win.TabView.getContentWindow();
|
||||||
|
let groupItemOne = cw.GroupItems.groupItems[0];
|
||||||
|
|
||||||
|
let groupItemTwo = createGroupItemWithBlankTabs(win, 100, 100, 40, 2);
|
||||||
|
ok(groupItemTwo.isStacked(), "groupItem is now stacked");
|
||||||
|
|
||||||
|
is(win.gBrowser.tabs.length, 3, "There are three tabs");
|
||||||
|
|
||||||
|
// the focus should remain within the group after it's expanded
|
||||||
|
groupItemTwo.addSubscriber("expanded", function onExpanded() {
|
||||||
|
groupItemTwo.removeSubscriber("expanded", onExpanded);
|
||||||
|
|
||||||
|
ok(groupItemTwo.expanded, "groupItemTwo is expanded");
|
||||||
|
is(cw.UI.getActiveTab(), groupItemTwo.getChild(0),
|
||||||
|
"The first tab item in group item two is active in expanded mode");
|
||||||
|
|
||||||
|
EventUtils.synthesizeKey("VK_DOWN", {}, cw);
|
||||||
|
is(cw.UI.getActiveTab(), groupItemTwo.getChild(0),
|
||||||
|
"The first tab item is still active after pressing down key");
|
||||||
|
|
||||||
|
// the focus should goes to other group if the down arrow is pressed
|
||||||
|
groupItemTwo.addSubscriber("collapsed", function onExpanded() {
|
||||||
|
groupItemTwo.removeSubscriber("collapsed", onExpanded);
|
||||||
|
|
||||||
|
ok(!groupItemTwo.expanded, "groupItemTwo is not expanded");
|
||||||
|
is(cw.UI.getActiveTab(), groupItemTwo.getChild(0),
|
||||||
|
"The first tab item is active in group item two in collapsed mode");
|
||||||
|
|
||||||
|
EventUtils.synthesizeKey("VK_DOWN", {}, cw);
|
||||||
|
is(cw.UI.getActiveTab(), groupItemOne.getChild(0),
|
||||||
|
"The first tab item in group item one is active after pressing down key");
|
||||||
|
|
||||||
|
finish();
|
||||||
|
});
|
||||||
|
|
||||||
|
groupItemTwo.collapse();
|
||||||
|
});
|
||||||
|
|
||||||
|
groupItemTwo.expand();
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* Any copyright is dedicated to the Public Domain.
|
||||||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||||
|
|
||||||
|
function test() {
|
||||||
|
waitForExplicitFinish();
|
||||||
|
|
||||||
|
// clean up after ourselves
|
||||||
|
registerCleanupFunction(function () {
|
||||||
|
while (gBrowser.tabs.length > 1)
|
||||||
|
gBrowser.removeTab(gBrowser.tabs[1]);
|
||||||
|
|
||||||
|
hideTabView();
|
||||||
|
});
|
||||||
|
|
||||||
|
// select the new tab
|
||||||
|
gBrowser.selectedTab = gBrowser.addTab();
|
||||||
|
|
||||||
|
showTabView(function () {
|
||||||
|
// enter private browsing mode
|
||||||
|
togglePrivateBrowsing(function () {
|
||||||
|
ok(!TabView.isVisible(), "tabview is hidden");
|
||||||
|
|
||||||
|
showTabView(function () {
|
||||||
|
// leave private browsing mode
|
||||||
|
togglePrivateBrowsing(function () {
|
||||||
|
ok(TabView.isVisible(), "tabview is visible");
|
||||||
|
hideTabView(finish);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
10
configure.in
10
configure.in
|
@ -4797,9 +4797,7 @@ MOZ_ARG_ENABLE_STRING(application,
|
||||||
xulrunner
|
xulrunner
|
||||||
content/xslt (Standalone Transformiix XSLT)
|
content/xslt (Standalone Transformiix XSLT)
|
||||||
netwerk (Standalone Necko)
|
netwerk (Standalone Necko)
|
||||||
tools/update-packaging (AUS-related packaging tools)
|
tools/update-packaging (AUS-related packaging tools)],
|
||||||
standalone (use this for standalone
|
|
||||||
xpcom/xpconnect or to manually drive a build)],
|
|
||||||
[ MOZ_BUILD_APP=$enableval ] )
|
[ MOZ_BUILD_APP=$enableval ] )
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(xulrunner-stub-name,
|
MOZ_ARG_WITH_STRING(xulrunner-stub-name,
|
||||||
|
@ -4877,12 +4875,6 @@ content/xslt)
|
||||||
AC_DEFINE(TX_EXE)
|
AC_DEFINE(TX_EXE)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
standalone)
|
|
||||||
MOZ_APP_NAME=mozilla
|
|
||||||
MOZ_APP_DISPLAYNAME=Mozilla
|
|
||||||
MOZ_APP_VERSION=$MOZILLA_VERSION
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
AC_SUBST(MOZ_BUILD_APP)
|
AC_SUBST(MOZ_BUILD_APP)
|
||||||
|
|
|
@ -1230,23 +1230,20 @@ nsXMLHttpRequest::GetResponseHeader(const nsACString& header,
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
already_AddRefed<nsILoadGroup>
|
||||||
nsXMLHttpRequest::GetLoadGroup(nsILoadGroup **aLoadGroup)
|
nsXMLHttpRequest::GetLoadGroup() const
|
||||||
{
|
{
|
||||||
NS_ENSURE_ARG_POINTER(aLoadGroup);
|
|
||||||
*aLoadGroup = nsnull;
|
|
||||||
|
|
||||||
if (mState & XML_HTTP_REQUEST_BACKGROUND) {
|
if (mState & XML_HTTP_REQUEST_BACKGROUND) {
|
||||||
return NS_OK;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsCOMPtr<nsIDocument> doc =
|
nsCOMPtr<nsIDocument> doc =
|
||||||
nsContentUtils::GetDocumentFromScriptContext(mScriptContext);
|
nsContentUtils::GetDocumentFromScriptContext(mScriptContext);
|
||||||
if (doc) {
|
if (doc) {
|
||||||
*aLoadGroup = doc->GetDocumentLoadGroup().get(); // already_AddRefed
|
return doc->GetDocumentLoadGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
return NS_OK;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
@ -1493,8 +1490,7 @@ nsXMLHttpRequest::Open(const nsACString& method, const nsACString& url,
|
||||||
// When we are called from JS we can find the load group for the page,
|
// When we are called from JS we can find the load group for the page,
|
||||||
// and add ourselves to it. This way any pending requests
|
// and add ourselves to it. This way any pending requests
|
||||||
// will be automatically aborted if the user leaves the page.
|
// will be automatically aborted if the user leaves the page.
|
||||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
nsCOMPtr<nsILoadGroup> loadGroup = GetLoadGroup();
|
||||||
GetLoadGroup(getter_AddRefs(loadGroup));
|
|
||||||
|
|
||||||
// get Content Security Policy from principal to pass into channel
|
// get Content Security Policy from principal to pass into channel
|
||||||
nsCOMPtr<nsIChannelPolicy> channelPolicy;
|
nsCOMPtr<nsIChannelPolicy> channelPolicy;
|
||||||
|
@ -1728,6 +1724,7 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
|
||||||
mResponseBody.Truncate();
|
mResponseBody.Truncate();
|
||||||
mResponseBodyUnicode.SetIsVoid(PR_TRUE);
|
mResponseBodyUnicode.SetIsVoid(PR_TRUE);
|
||||||
mResponseBlob = nsnull;
|
mResponseBlob = nsnull;
|
||||||
|
mResultArrayBuffer = nsnull;
|
||||||
|
|
||||||
// Set up responseXML
|
// Set up responseXML
|
||||||
PRBool parseBody = mResponseType == XML_HTTP_RESPONSE_TYPE_DEFAULT ||
|
PRBool parseBody = mResponseType == XML_HTTP_RESPONSE_TYPE_DEFAULT ||
|
||||||
|
@ -2075,7 +2072,7 @@ GetRequestBody(nsIVariant* aBody, nsIInputStream** aResult,
|
||||||
// nsIInputStream?
|
// nsIInputStream?
|
||||||
nsCOMPtr<nsIInputStream> stream = do_QueryInterface(supports);
|
nsCOMPtr<nsIInputStream> stream = do_QueryInterface(supports);
|
||||||
if (stream) {
|
if (stream) {
|
||||||
*aResult = stream.forget().get();
|
stream.forget(aResult);
|
||||||
aCharset.Truncate();
|
aCharset.Truncate();
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
|
|
@ -214,7 +214,7 @@ protected:
|
||||||
// Change the state of the object with this. The broadcast argument
|
// Change the state of the object with this. The broadcast argument
|
||||||
// determines if the onreadystatechange listener should be called.
|
// determines if the onreadystatechange listener should be called.
|
||||||
nsresult ChangeState(PRUint32 aState, PRBool aBroadcast = PR_TRUE);
|
nsresult ChangeState(PRUint32 aState, PRBool aBroadcast = PR_TRUE);
|
||||||
nsresult GetLoadGroup(nsILoadGroup **aLoadGroup);
|
already_AddRefed<nsILoadGroup> GetLoadGroup() const;
|
||||||
nsIURI *GetBaseURI();
|
nsIURI *GetBaseURI();
|
||||||
|
|
||||||
nsresult RemoveAddEventListener(const nsAString& aType,
|
nsresult RemoveAddEventListener(const nsAString& aType,
|
||||||
|
|
|
@ -121,6 +121,17 @@ ab = xhr.response;
|
||||||
ok(ab != null, "should have a non-null arraybuffer");
|
ok(ab != null, "should have a non-null arraybuffer");
|
||||||
arraybuffer_equals_to(ab, "hello pass\n");
|
arraybuffer_equals_to(ab, "hello pass\n");
|
||||||
|
|
||||||
|
// test reusing the same XHR (Bug 680816)
|
||||||
|
xhr.open("GET", 'file_XHR_binary1.bin', false);
|
||||||
|
xhr.responseType = 'arraybuffer';
|
||||||
|
xhr.send(null);
|
||||||
|
is(xhr.status, 200, "wrong status");
|
||||||
|
ab2 = xhr.response;
|
||||||
|
ok(ab2 != null, "should have a non-null arraybuffer");
|
||||||
|
ok(ab2 != ab, "arraybuffer on XHR reuse should be distinct");
|
||||||
|
arraybuffer_equals_to(ab, "hello pass\n");
|
||||||
|
arraybuffer_equals_to(ab2, "\xaa\xee\0\x03\xff\xff\xff\xff\xbb\xbb\xbb\xbb");
|
||||||
|
|
||||||
// with a binary file
|
// with a binary file
|
||||||
xhr = new XMLHttpRequest();
|
xhr = new XMLHttpRequest();
|
||||||
xhr.open("GET", 'file_XHR_binary1.bin', false);
|
xhr.open("GET", 'file_XHR_binary1.bin', false);
|
||||||
|
|
|
@ -197,8 +197,6 @@ _TEST_FILES = \
|
||||||
test_bug573969.html \
|
test_bug573969.html \
|
||||||
test_bug549475.html \
|
test_bug549475.html \
|
||||||
test_bug585508.html \
|
test_bug585508.html \
|
||||||
test_bug345624-1.html \
|
|
||||||
test_bug345624-2.html \
|
|
||||||
test_bug561640.html \
|
test_bug561640.html \
|
||||||
test_bug566064.html \
|
test_bug566064.html \
|
||||||
test_bug582412-1.html \
|
test_bug582412-1.html \
|
||||||
|
@ -213,7 +211,6 @@ _TEST_FILES = \
|
||||||
test_bug590353-1.html \
|
test_bug590353-1.html \
|
||||||
test_bug590353-2.html \
|
test_bug590353-2.html \
|
||||||
test_bug593689.html \
|
test_bug593689.html \
|
||||||
test_bug555840.html \
|
|
||||||
test_bug561636.html \
|
test_bug561636.html \
|
||||||
test_bug590363.html \
|
test_bug590363.html \
|
||||||
test_bug557628.html \
|
test_bug557628.html \
|
||||||
|
@ -221,7 +218,6 @@ _TEST_FILES = \
|
||||||
test_bug595429.html \
|
test_bug595429.html \
|
||||||
test_bug595447.html \
|
test_bug595447.html \
|
||||||
test_bug595449.html \
|
test_bug595449.html \
|
||||||
test_bug595457.html \
|
|
||||||
test_bug557087-1.html \
|
test_bug557087-1.html \
|
||||||
test_bug557087-2.html \
|
test_bug557087-2.html \
|
||||||
test_bug557087-3.html \
|
test_bug557087-3.html \
|
||||||
|
@ -234,7 +230,6 @@ _TEST_FILES = \
|
||||||
test_bug596350.html \
|
test_bug596350.html \
|
||||||
test_bug598833-1.html \
|
test_bug598833-1.html \
|
||||||
test_bug600155.html \
|
test_bug600155.html \
|
||||||
test_bug556007.html \
|
|
||||||
test_bug606817.html \
|
test_bug606817.html \
|
||||||
test_bug297761.html \
|
test_bug297761.html \
|
||||||
file_bug297761.html \
|
file_bug297761.html \
|
||||||
|
|
|
@ -48,6 +48,7 @@ _TEST_FILES = \
|
||||||
test_save_restore_radio_groups.html \
|
test_save_restore_radio_groups.html \
|
||||||
test_mozistextfield.html \
|
test_mozistextfield.html \
|
||||||
test_input_attributes_reflection.html \
|
test_input_attributes_reflection.html \
|
||||||
|
test_input_list_attribute.html \
|
||||||
test_input_email.html \
|
test_input_email.html \
|
||||||
test_input_url.html \
|
test_input_url.html \
|
||||||
test_pattern_attribute.html \
|
test_pattern_attribute.html \
|
||||||
|
@ -59,6 +60,9 @@ _TEST_FILES = \
|
||||||
test_output_element.html \
|
test_output_element.html \
|
||||||
test_button_attributes_reflection.html \
|
test_button_attributes_reflection.html \
|
||||||
test_textarea_attributes_reflection.html \
|
test_textarea_attributes_reflection.html \
|
||||||
|
test_validation.html \
|
||||||
|
test_maxlength_attribute.html \
|
||||||
|
test_datalist_element.html \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
libs:: $(_TEST_FILES)
|
libs:: $(_TEST_FILES)
|
||||||
|
|
|
@ -1,15 +1,11 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE HTML>
|
||||||
<html>
|
<html>
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=555840
|
|
||||||
-->
|
|
||||||
<head>
|
<head>
|
||||||
<title>Test for Bug 555840</title>
|
<title>Test for the datalist element</title>
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=555840">Mozilla Bug 555840</a>
|
|
||||||
<p id="display"></p>
|
<p id="display"></p>
|
||||||
<div id="content" style="display: none">
|
<div id="content" style="display: none">
|
||||||
<datalist>
|
<datalist>
|
||||||
|
@ -55,26 +51,62 @@ function checkOptions()
|
||||||
[['option', 'option'], function(d) { d.childNodes[0].value = 'value'; }, 2],
|
[['option', 'option'], function(d) { d.childNodes[0].value = 'value'; }, 2],
|
||||||
[['option', 'option'], function(d) { d.childNodes[0].label = 'label'; }, 2],
|
[['option', 'option'], function(d) { d.childNodes[0].label = 'label'; }, 2],
|
||||||
[['option', 'option'], function(d) { d.childNodes[0].value = 'value'; d.childNodes[0].label = 'label'; }, 2],
|
[['option', 'option'], function(d) { d.childNodes[0].value = 'value'; d.childNodes[0].label = 'label'; }, 2],
|
||||||
|
[['select'],
|
||||||
|
function(d) {
|
||||||
|
var s = d.childNodes[0];
|
||||||
|
s.appendChild(new Option("foo"));
|
||||||
|
s.appendChild(new Option("bar"));
|
||||||
|
},
|
||||||
|
2],
|
||||||
|
[['select'],
|
||||||
|
function(d) {
|
||||||
|
var s = d.childNodes[0];
|
||||||
|
s.appendChild(new Option("foo"));
|
||||||
|
s.appendChild(new Option("bar"));
|
||||||
|
var label = document.createElement("label");
|
||||||
|
d.appendChild(label);
|
||||||
|
label.appendChild(new Option("foobar"));
|
||||||
|
},
|
||||||
|
3],
|
||||||
|
[['select'],
|
||||||
|
function(d) {
|
||||||
|
var s = d.childNodes[0];
|
||||||
|
s.appendChild(new Option("foo"));
|
||||||
|
s.appendChild(new Option("bar"));
|
||||||
|
var label = document.createElement("label");
|
||||||
|
d.appendChild(label);
|
||||||
|
label.appendChild(new Option("foobar"));
|
||||||
|
s.appendChild(new Option())
|
||||||
|
},
|
||||||
|
4],
|
||||||
|
[[], function(d) { d.appendChild(document.createElementNS("foo", "option")); }, 0]
|
||||||
];
|
];
|
||||||
|
|
||||||
var d = document.getElementsByTagName('datalist')[0];
|
var d = document.getElementsByTagName('datalist')[0];
|
||||||
|
var cachedOptions = d.options;
|
||||||
|
|
||||||
for each (data in testData) {
|
testData.forEach(function(data) {
|
||||||
for each (e in data[0]) {
|
data[0].forEach(function(e) {
|
||||||
d.appendChild(document.createElement(e));
|
d.appendChild(document.createElement(e));
|
||||||
}
|
})
|
||||||
|
|
||||||
/* Modify children. */
|
/* Modify children. */
|
||||||
if (data[1]) {
|
if (data[1]) {
|
||||||
data[1](d);
|
data[1](d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is(d.options, cachedOptions, "Should get the same object")
|
||||||
is(d.options.length, data[2],
|
is(d.options.length, data[2],
|
||||||
"The number of recognized options should be " + data[2])
|
"The number of recognized options should be " + data[2])
|
||||||
|
|
||||||
|
for (var i = 0; i < d.options.length; ++i) {
|
||||||
|
is(d.options[i].localName, "option",
|
||||||
|
"Should get an option for d.options[" + i + "]")
|
||||||
|
}
|
||||||
|
|
||||||
/* Cleaning-up. */
|
/* Cleaning-up. */
|
||||||
for (; d.firstChild; d.removeChild(d.firstChild));
|
d.textContent = "";
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
checkClassesAndAttributes();
|
checkClassesAndAttributes();
|
|
@ -61,9 +61,9 @@ function checkTooLongValidity(element)
|
||||||
todo(!element.validity.valid,
|
todo(!element.validity.valid,
|
||||||
"Element should not be valid when it is too long");
|
"Element should not be valid when it is too long");
|
||||||
|
|
||||||
todo(element.validationMessage,
|
todo_is(element.validationMessage,
|
||||||
"Please shorten this text to 2 characters or less (you are currently using 3 characters).",
|
"Please shorten this text to 2 characters or less (you are currently using 3 characters).",
|
||||||
"The validation message text is not correct");
|
"The validation message text is not correct");
|
||||||
todo(!element.checkValidity(), "The element should not be valid");
|
todo(!element.checkValidity(), "The element should not be valid");
|
||||||
element.setCustomValidity("custom message");
|
element.setCustomValidity("custom message");
|
||||||
is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
|
is(window.getComputedStyle(element, null).getPropertyValue('background-color'),
|
|
@ -1,60 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<!--
|
|
||||||
https://bugzilla.mozilla.org/show_bug.cgi?id=595457
|
|
||||||
-->
|
|
||||||
<head>
|
|
||||||
<title>Test for Bug 595457</title>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=595457">Mozilla Bug 595457</a>
|
|
||||||
<p id="display"></p>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript">
|
|
||||||
|
|
||||||
/** Test for Bug 595457 **/
|
|
||||||
|
|
||||||
function checkDatalistOptions(aDatalist, aOptions)
|
|
||||||
{
|
|
||||||
var datalistOptions = datalist.options;
|
|
||||||
var length = datalistOptions.length;
|
|
||||||
|
|
||||||
is(length, options.length, "datalist should have " + options.length + " options");
|
|
||||||
|
|
||||||
for (var i=0; i<length; ++i) {
|
|
||||||
is(datalistOptions[i], options[i], options[i] +
|
|
||||||
"should be in the datalist options");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var datalist = document.createElement("datalist");
|
|
||||||
var select = document.createElement("select");
|
|
||||||
var options = [ new Option("foo"), new Option("bar") ];
|
|
||||||
|
|
||||||
datalist.appendChild(select);
|
|
||||||
|
|
||||||
for each(option in options) {
|
|
||||||
select.appendChild(option);
|
|
||||||
}
|
|
||||||
|
|
||||||
checkDatalistOptions(datalist, options);
|
|
||||||
|
|
||||||
var label = document.createElement("label");
|
|
||||||
datalist.appendChild(label);
|
|
||||||
|
|
||||||
options[2] = new Option("foobar");
|
|
||||||
label.appendChild(options[2]);
|
|
||||||
|
|
||||||
checkDatalistOptions(datalist, options);
|
|
||||||
|
|
||||||
options[3] = new Option();
|
|
||||||
datalist.appendChild(options[3]);
|
|
||||||
|
|
||||||
checkDatalistOptions(datalist, options);
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -46,6 +46,7 @@
|
||||||
#include "gfxPlatform.h"
|
#include "gfxPlatform.h"
|
||||||
#include "ReadbackLayer.h"
|
#include "ReadbackLayer.h"
|
||||||
#include "gfxUtils.h"
|
#include "gfxUtils.h"
|
||||||
|
#include "nsPrintfCString.h"
|
||||||
#include "mozilla/Util.h"
|
#include "mozilla/Util.h"
|
||||||
|
|
||||||
using namespace mozilla::layers;
|
using namespace mozilla::layers;
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
|
|
||||||
#include "ReadbackLayer.h"
|
#include "ReadbackLayer.h"
|
||||||
#include "ThebesLayerBuffer.h"
|
#include "ThebesLayerBuffer.h"
|
||||||
|
#include "nsTArray.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace layers {
|
namespace layers {
|
||||||
|
|
|
@ -84,6 +84,7 @@
|
||||||
#include "nsCOMPtr.h"
|
#include "nsCOMPtr.h"
|
||||||
#include "nsIConsoleService.h"
|
#include "nsIConsoleService.h"
|
||||||
#include "nsServiceManagerUtils.h"
|
#include "nsServiceManagerUtils.h"
|
||||||
|
#include "nsStringGlue.h"
|
||||||
|
|
||||||
using mozilla::CheckedInt;
|
using mozilla::CheckedInt;
|
||||||
|
|
||||||
|
|
|
@ -38,10 +38,6 @@
|
||||||
#ifndef GFX_COLOR_H
|
#ifndef GFX_COLOR_H
|
||||||
#define GFX_COLOR_H
|
#define GFX_COLOR_H
|
||||||
|
|
||||||
#ifdef MOZILLA_INTERNAL_API
|
|
||||||
#include "nsPrintfCString.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gfxTypes.h"
|
#include "gfxTypes.h"
|
||||||
|
|
||||||
#include "prbit.h" // for PR_ROTATE_(LEFT,RIGHT)32
|
#include "prbit.h" // for PR_ROTATE_(LEFT,RIGHT)32
|
||||||
|
@ -173,7 +169,6 @@ struct THEBES_API gfxRGBA {
|
||||||
PACKED_ARGB,
|
PACKED_ARGB,
|
||||||
PACKED_ARGB_PREMULTIPLIED,
|
PACKED_ARGB_PREMULTIPLIED,
|
||||||
|
|
||||||
PACKED_XBGR,
|
|
||||||
PACKED_XRGB
|
PACKED_XRGB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -193,7 +188,6 @@ struct THEBES_API gfxRGBA {
|
||||||
*/
|
*/
|
||||||
gfxRGBA(PRUint32 c, PackedColorType colorType = PACKED_ABGR) {
|
gfxRGBA(PRUint32 c, PackedColorType colorType = PACKED_ABGR) {
|
||||||
if (colorType == PACKED_ABGR ||
|
if (colorType == PACKED_ABGR ||
|
||||||
colorType == PACKED_XBGR ||
|
|
||||||
colorType == PACKED_ABGR_PREMULTIPLIED)
|
colorType == PACKED_ABGR_PREMULTIPLIED)
|
||||||
{
|
{
|
||||||
r = ((c >> 0) & 0xff) * (1.0 / 255.0);
|
r = ((c >> 0) & 0xff) * (1.0 / 255.0);
|
||||||
|
@ -218,26 +212,11 @@ struct THEBES_API gfxRGBA {
|
||||||
g /= a;
|
g /= a;
|
||||||
b /= a;
|
b /= a;
|
||||||
}
|
}
|
||||||
} else if (colorType == PACKED_XBGR ||
|
} else if (colorType == PACKED_XRGB) {
|
||||||
colorType == PACKED_XRGB)
|
|
||||||
{
|
|
||||||
a = 1.0;
|
a = 1.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize this color by parsing the given string.
|
|
||||||
* XXX implement me!
|
|
||||||
*/
|
|
||||||
#if 0
|
|
||||||
gfxRGBA(const char* str) {
|
|
||||||
a = 1.0;
|
|
||||||
// if aString[0] is a #, parse it as hex
|
|
||||||
// if aString[0] is a letter, parse it as a color name
|
|
||||||
// if aString[0] is a number, parse it loosely as hex
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool operator==(const gfxRGBA& other) const
|
bool operator==(const gfxRGBA& other) const
|
||||||
{
|
{
|
||||||
return r == other.r && g == other.g && b == other.b && a == other.a;
|
return r == other.r && g == other.g && b == other.b && a == other.a;
|
||||||
|
@ -261,28 +240,30 @@ struct THEBES_API gfxRGBA {
|
||||||
gfxFloat bb = (b * 255.0);
|
gfxFloat bb = (b * 255.0);
|
||||||
gfxFloat ab = (a * 255.0);
|
gfxFloat ab = (a * 255.0);
|
||||||
|
|
||||||
if (colorType == PACKED_ABGR || colorType == PACKED_XBGR) {
|
if (colorType == PACKED_ABGR) {
|
||||||
return (PRUint8(ab) << 24) |
|
return (PRUint8(ab) << 24) |
|
||||||
(PRUint8(bb) << 16) |
|
(PRUint8(bb) << 16) |
|
||||||
(PRUint8(gb) << 8) |
|
(PRUint8(gb) << 8) |
|
||||||
(PRUint8(rb) << 0);
|
(PRUint8(rb) << 0);
|
||||||
} else if (colorType == PACKED_ARGB || colorType == PACKED_XRGB) {
|
}
|
||||||
|
if (colorType == PACKED_ARGB || colorType == PACKED_XRGB) {
|
||||||
return (PRUint8(ab) << 24) |
|
return (PRUint8(ab) << 24) |
|
||||||
(PRUint8(rb) << 16) |
|
(PRUint8(rb) << 16) |
|
||||||
(PRUint8(gb) << 8) |
|
(PRUint8(gb) << 8) |
|
||||||
(PRUint8(bb) << 0);
|
(PRUint8(bb) << 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
rb = (r*a) * 255.0;
|
rb *= a;
|
||||||
gb = (g*a) * 255.0;
|
gb *= a;
|
||||||
bb = (b*a) * 255.0;
|
bb *= a;
|
||||||
|
|
||||||
if (colorType == PACKED_ABGR_PREMULTIPLIED) {
|
if (colorType == PACKED_ABGR_PREMULTIPLIED) {
|
||||||
return (((PRUint8)(ab) << 24) |
|
return (((PRUint8)(ab) << 24) |
|
||||||
((PRUint8)(bb) << 16) |
|
((PRUint8)(bb) << 16) |
|
||||||
((PRUint8)(gb) << 8) |
|
((PRUint8)(gb) << 8) |
|
||||||
((PRUint8)(rb) << 0));
|
((PRUint8)(rb) << 0));
|
||||||
} else if (colorType == PACKED_ARGB_PREMULTIPLIED) {
|
}
|
||||||
|
if (colorType == PACKED_ARGB_PREMULTIPLIED) {
|
||||||
return (((PRUint8)(ab) << 24) |
|
return (((PRUint8)(ab) << 24) |
|
||||||
((PRUint8)(rb) << 16) |
|
((PRUint8)(rb) << 16) |
|
||||||
((PRUint8)(gb) << 8) |
|
((PRUint8)(gb) << 8) |
|
||||||
|
@ -291,20 +272,6 @@ struct THEBES_API gfxRGBA {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MOZILLA_INTERNAL_API
|
|
||||||
/**
|
|
||||||
* Convert this color to a hex value. For example, for rgb(255,0,0),
|
|
||||||
* this will return FF0000.
|
|
||||||
*/
|
|
||||||
// XXX I'd really prefer to just have this return an nsACString
|
|
||||||
// Does this function even make sense, since we're just ignoring the alpha value?
|
|
||||||
void Hex(nsACString& result) const {
|
|
||||||
nsPrintfCString hex(8, "%02x%02x%02x", PRUint8(r*255.0), PRUint8(g*255.0), PRUint8(b*255.0));
|
|
||||||
result.Assign(hex);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* _GFX_COLOR_H */
|
#endif /* _GFX_COLOR_H */
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#include "prtypes.h"
|
#include "prtypes.h"
|
||||||
#include "prlog.h"
|
#include "prlog.h"
|
||||||
#include "nsTArray.h"
|
#include "nsTArray.h"
|
||||||
|
#include "nsString.h"
|
||||||
#include "nsIObserver.h"
|
#include "nsIObserver.h"
|
||||||
|
|
||||||
#include "gfxTypes.h"
|
#include "gfxTypes.h"
|
||||||
|
@ -50,6 +50,10 @@
|
||||||
#include "gfxColor.h"
|
#include "gfxColor.h"
|
||||||
|
|
||||||
#include "qcms.h"
|
#include "qcms.h"
|
||||||
|
|
||||||
|
#include "gfx2DGlue.h"
|
||||||
|
#include "mozilla/RefPtr.h"
|
||||||
|
|
||||||
#ifdef XP_OS2
|
#ifdef XP_OS2
|
||||||
#undef OS2EMX_PLAIN_CHAR
|
#undef OS2EMX_PLAIN_CHAR
|
||||||
#endif
|
#endif
|
||||||
|
@ -66,9 +70,6 @@ class gfxTextRun;
|
||||||
class nsIURI;
|
class nsIURI;
|
||||||
class nsIAtom;
|
class nsIAtom;
|
||||||
|
|
||||||
#include "gfx2DGlue.h"
|
|
||||||
#include "mozilla/RefPtr.h"
|
|
||||||
|
|
||||||
extern cairo_user_data_key_t kDrawTarget;
|
extern cairo_user_data_key_t kDrawTarget;
|
||||||
|
|
||||||
// pref lang id's for font prefs
|
// pref lang id's for font prefs
|
||||||
|
|
|
@ -35,8 +35,6 @@
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
#if !defined(XPCONNECT_STANDALONE)
|
|
||||||
|
|
||||||
#include "nsAutoPtr.h"
|
#include "nsAutoPtr.h"
|
||||||
#include "nsScriptLoader.h"
|
#include "nsScriptLoader.h"
|
||||||
|
|
||||||
|
@ -191,5 +189,3 @@ WriteCachedScript(StartupCache* cache, nsACString &uri, JSContext *cx, JSObject
|
||||||
rv = cache->PutBuffer(PromiseFlatCString(uri).get(), buf, len);
|
rv = cache->PutBuffer(PromiseFlatCString(uri).get(), buf, len);
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* XPCONNECT_STANDALONE */
|
|
||||||
|
|
|
@ -106,6 +106,7 @@
|
||||||
#include "nsAutoPtr.h"
|
#include "nsAutoPtr.h"
|
||||||
|
|
||||||
#include "nsBidiUtils.h"
|
#include "nsBidiUtils.h"
|
||||||
|
#include "nsPrintfCString.h"
|
||||||
|
|
||||||
#include "gfxFont.h"
|
#include "gfxFont.h"
|
||||||
#include "gfxContext.h"
|
#include "gfxContext.h"
|
||||||
|
|
|
@ -76,6 +76,7 @@
|
||||||
#include "nsIConsoleService.h"
|
#include "nsIConsoleService.h"
|
||||||
|
|
||||||
#include "nsStyleSet.h"
|
#include "nsStyleSet.h"
|
||||||
|
#include "nsPrintfCString.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
|
|
||||||
#include "nsXULAppAPI.h"
|
#include "nsXULAppAPI.h"
|
||||||
#include "prenv.h"
|
#include "prenv.h"
|
||||||
|
#include "nsPrintfCString.h"
|
||||||
|
|
||||||
#if defined(DEBUG) || defined(ENABLE_TESTS)
|
#if defined(DEBUG) || defined(ENABLE_TESTS)
|
||||||
# define NECKO_ERRORS_ARE_FATAL_DEFAULT true
|
# define NECKO_ERRORS_ARE_FATAL_DEFAULT true
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
%define WINSTRIPE_AERO
|
||||||
|
%include selectAddons.css
|
||||||
|
%undef WINSTRIPE_AERO
|
|
@ -188,12 +188,21 @@
|
||||||
|
|
||||||
#footer {
|
#footer {
|
||||||
padding: 15px 12px;
|
padding: 15px 12px;
|
||||||
background-color: #f1f5fb;
|
|
||||||
box-shadow: 0px 1px 2px rgb(204,214,234) inset;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.progress-label,
|
.progress-label,
|
||||||
#footer-label {
|
#footer-label {
|
||||||
|
%ifdef WINSTRIPE_AERO
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
|
%endif
|
||||||
color: GrayText;
|
color: GrayText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%ifdef WINSTRIPE_AERO
|
||||||
|
@media all and (-moz-windows-default-theme) {
|
||||||
|
#footer {
|
||||||
|
background-color: #f1f5fb;
|
||||||
|
box-shadow: 0px 1px 2px rgb(204,214,234) inset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%endif
|
||||||
|
|
|
@ -86,7 +86,7 @@ toolkit.jar:
|
||||||
skin/classic/aero/mozapps/extensions/about.css (extensions/about.css)
|
skin/classic/aero/mozapps/extensions/about.css (extensions/about.css)
|
||||||
skin/classic/aero/mozapps/extensions/blocklist.css (extensions/blocklist.css)
|
skin/classic/aero/mozapps/extensions/blocklist.css (extensions/blocklist.css)
|
||||||
* skin/classic/aero/mozapps/extensions/extensions.css (extensions/extensions-aero.css)
|
* skin/classic/aero/mozapps/extensions/extensions.css (extensions/extensions-aero.css)
|
||||||
* skin/classic/aero/mozapps/extensions/selectAddons.css (extensions/selectAddons.css)
|
* skin/classic/aero/mozapps/extensions/selectAddons.css (extensions/selectAddons-aero.css)
|
||||||
skin/classic/aero/mozapps/extensions/update.css (extensions/update.css)
|
skin/classic/aero/mozapps/extensions/update.css (extensions/update.css)
|
||||||
skin/classic/aero/mozapps/extensions/extensions.svg (extensions/extensions.svg)
|
skin/classic/aero/mozapps/extensions/extensions.svg (extensions/extensions.svg)
|
||||||
skin/classic/aero/mozapps/extensions/themeGeneric.png (extensions/themeGeneric-aero.png)
|
skin/classic/aero/mozapps/extensions/themeGeneric.png (extensions/themeGeneric-aero.png)
|
||||||
|
|
|
@ -539,7 +539,7 @@ AndroidBridge::SetClipboardText(const nsAString& aText)
|
||||||
AutoLocalJNIFrame jniFrame;
|
AutoLocalJNIFrame jniFrame;
|
||||||
jstring jstr = mJNIEnv->NewString(nsPromiseFlatString(aText).get(),
|
jstring jstr = mJNIEnv->NewString(nsPromiseFlatString(aText).get(),
|
||||||
aText.Length());
|
aText.Length());
|
||||||
mJNIEnv->CallStaticObjectMethod(mGeckoAppShellClass, jSetClipboardText, jstr);
|
mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass, jSetClipboardText, jstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -560,7 +560,7 @@ void
|
||||||
AndroidBridge::EmptyClipboard()
|
AndroidBridge::EmptyClipboard()
|
||||||
{
|
{
|
||||||
ALOG_BRIDGE("AndroidBridge::EmptyClipboard");
|
ALOG_BRIDGE("AndroidBridge::EmptyClipboard");
|
||||||
mJNIEnv->CallStaticObjectMethod(mGeckoAppShellClass, jSetClipboardText, nsnull);
|
mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass, jSetClipboardText, nsnull);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "nsBidiUtils.h"
|
#include "nsBidiUtils.h"
|
||||||
#include "nsToolkit.h"
|
#include "nsToolkit.h"
|
||||||
#include "nsCocoaUtils.h"
|
#include "nsCocoaUtils.h"
|
||||||
|
#include "nsPrintfCString.h"
|
||||||
|
|
||||||
#ifdef __LP64__
|
#ifdef __LP64__
|
||||||
#include "ComplexTextInputPanel.h"
|
#include "ComplexTextInputPanel.h"
|
||||||
|
|
|
@ -973,11 +973,9 @@ nsresult GlobalPrinters::InitializeGlobalPrinters ()
|
||||||
}
|
}
|
||||||
|
|
||||||
mGlobalPrinterList = new nsTArray<nsString>();
|
mGlobalPrinterList = new nsTArray<nsString>();
|
||||||
if (!mGlobalPrinterList)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
nsPSPrinterList psMgr;
|
nsPSPrinterList psMgr;
|
||||||
if (NS_SUCCEEDED(psMgr.Init()) && psMgr.Enabled()) {
|
if (psMgr.Enabled()) {
|
||||||
/* Get the list of PostScript-module printers */
|
/* Get the list of PostScript-module printers */
|
||||||
// XXX: this function is the only user of GetPrinterList
|
// XXX: this function is the only user of GetPrinterList
|
||||||
// So it may be interesting to convert the nsCStrings
|
// So it may be interesting to convert the nsCStrings
|
||||||
|
|
|
@ -58,17 +58,13 @@ using namespace mozilla;
|
||||||
|
|
||||||
nsCUPSShim gCupsShim;
|
nsCUPSShim gCupsShim;
|
||||||
|
|
||||||
/* Initialize the printer manager object */
|
nsPSPrinterList::nsPSPrinterList()
|
||||||
nsresult
|
|
||||||
nsPSPrinterList::Init()
|
|
||||||
{
|
{
|
||||||
// Should we try cups?
|
// Should we try cups?
|
||||||
PRBool useCups =
|
if (Preferences::GetBool("print.postscript.cups.enabled", PR_TRUE) &&
|
||||||
Preferences::GetBool("print.postscript.cups.enabled", PR_TRUE);
|
!gCupsShim.IsInitialized()) {
|
||||||
if (useCups && !gCupsShim.IsInitialized()) {
|
|
||||||
gCupsShim.Init();
|
gCupsShim.Init();
|
||||||
}
|
}
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,12 +47,7 @@ class nsCUPSShim;
|
||||||
|
|
||||||
class nsPSPrinterList {
|
class nsPSPrinterList {
|
||||||
public:
|
public:
|
||||||
/**
|
nsPSPrinterList();
|
||||||
* Initialize a printer manager object.
|
|
||||||
* @return NS_ERROR_NOT_INITIALIZED if unable to access prefs
|
|
||||||
* NS_OK for successful initialization.
|
|
||||||
*/
|
|
||||||
nsresult Init();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the PostScript module enabled or disabled?
|
* Is the PostScript module enabled or disabled?
|
||||||
|
|
|
@ -156,6 +156,7 @@
|
||||||
#include "nsWindowGfx.h"
|
#include "nsWindowGfx.h"
|
||||||
#include "gfxWindowsPlatform.h"
|
#include "gfxWindowsPlatform.h"
|
||||||
#include "Layers.h"
|
#include "Layers.h"
|
||||||
|
#include "nsPrintfCString.h"
|
||||||
#include "mozilla/Preferences.h"
|
#include "mozilla/Preferences.h"
|
||||||
|
|
||||||
#ifdef MOZ_ENABLE_D3D9_LAYER
|
#ifdef MOZ_ENABLE_D3D9_LAYER
|
||||||
|
|
Загрузка…
Ссылка в новой задаче