Merge m-c to inbound

This commit is contained in:
Wes Kocher 2013-10-21 20:47:53 -04:00
commit 7fa368925b
43 changed files with 465 additions and 909 deletions

View File

@ -1,4 +1,4 @@
{
"revision": "723401621af1bfabb671ec53ac7cafd62b700cb9",
"revision": "175b7a89aa5f39aa2b2263029ab086ac1833a636",
"repo_path": "/integration/gaia-central"
}

View File

@ -675,8 +675,6 @@ pref("plugins.update.notifyUser", false);
pref("plugins.click_to_play", true);
pref("plugins.clickToActivateInfo.url", "https://support.mozilla.org/1/firefox/%VERSION%/%OS%/%LOCALE%/clicktoplay");
// let all plugins except Flash default to click-to-play
pref("plugin.default.state", 1);
pref("plugin.state.flash", 2);

View File

@ -705,7 +705,7 @@ var gPluginHandler = {
url = Services.blocklist.getPluginBlocklistURL(pluginInfo.pluginTag);
}
else {
url = Services.urlFormatter.formatURLPref("plugins.clickToActivateInfo.url");
url = Services.urlFormatter.formatURLPref("app.support.baseURL") + "clicktoplay";
}
pluginInfo.detailsLink = url;

View File

@ -26,6 +26,33 @@ const LAYOUT_CHANGE_TIMER = 250;
* The inspector controls the highlighter, the breadcrumbs,
* the markup view, and the sidebar (computed view, rule view
* and layout view).
*
* Events:
* - ready
* Fired when the inspector panel is opened for the first time and ready to
* use
* - new-root
* Fired after a new root (navigation to a new page) event was fired by
* the walker, and taken into account by the inspector (after the markup
* view has been reloaded)
* - markuploaded
* Fired when the markup-view frame has loaded
* - layout-change
* Fired when the layout of the inspector changes
* - breadcrumbs-updated
* Fired when the breadcrumb widget updates to a new node
* - layoutview-updated
* Fired when the layoutview (box model) updates to a new node
* - markupmutation
* Fired after markup mutations have been processed by the markup-view
* - computed-view-refreshed
* Fired when the computed rules view updates to a new node
* - computed-view-property-expanded
* Fired when a property is expanded in the computed rules view
* - computed-view-property-collapsed
* Fired when a property is collapsed in the computed rules view
* - rule-view-refreshed
* Fired when the rule view updates to a new node
*/
function InspectorPanel(iframeWindow, toolbox) {
this._toolbox = toolbox;
@ -320,6 +347,7 @@ InspectorPanel.prototype = {
this.once("markuploaded", () => {
this.markup.expandNode(this.selection.nodeFront);
this.setupSearchBox();
this.emit("new-root");
});
});
},

View File

@ -10,19 +10,29 @@ function test() {
const URL_1 = "data:text/html;charset=UTF-8,<div id='one' style='color:red;'>ONE</div>";
const URL_2 = "data:text/html;charset=UTF-8,<div id='two' style='color:green;'>TWO</div>";
let inspector;
let toolbox, inspector;
// open tab, load URL_1, and wait for load to finish
let tab = gBrowser.selectedTab = gBrowser.addTab();
let target = TargetFactory.forTab(gBrowser.selectedTab);
let deferred = promise.defer();
let browser = gBrowser.getBrowserForTab(tab);
function onPageOneLoad() {
browser.removeEventListener("load", onPageOneLoad, true);
function onTabLoad() {
browser.removeEventListener("load", onTabLoad, true);
deferred.resolve(null);
}
browser.addEventListener("load", onTabLoad, true);
browser.loadURI(URL_1);
gDevTools.showToolbox(target).then(aToolbox => {
return aToolbox.selectTool("inspector");
}).then(i => {
// open devtools panel
deferred.promise.then(() => {
return gDevTools.showToolbox(target, null, Toolbox.HostType.BOTTOM);
}).then(aToolbox => {
toolbox = aToolbox;
}).then(() => {
// select the inspector
return toolbox.selectTool("inspector").then(i => {
inspector = i;
// Verify we are on page one
@ -30,32 +40,41 @@ function test() {
ok(testNode, "We have the test node on page 1");
assertMarkupViewIsLoaded();
});
}).then(() => {
// navigate to URL_2
let deferred = promise.defer();
// Listen to will-navigate to check if the view is empty
target.on("will-navigate", () => {
info("Navigation to page 2 has started, the inspector should be empty");
assertMarkupViewIsEmpty();
// Listen to will-navigate to check if the view is empty
target.on("will-navigate", () => {
info("Navigation to page 2 has started, the inspector should be empty");
assertMarkupViewIsEmpty();
});
inspector.once("new-root", () => {
info("Navigation to page 2 was done, the inspector should be back up");
// Verify we are on page one
let testNode = content.document.querySelector("#two");
ok(testNode, "We have the test node on page 2");
// On page 2 load, verify we have the right content
assertMarkupViewIsLoaded();
inspector.selection.setNode(content.document.querySelector("#two"));
inspector.once("inspector-updated", () => {
deferred.resolve();
});
inspector.once("markuploaded", () => {
info("Navigation to page 2 was done, the inspector should be back up");
});
// Verify we are on page one
let testNode = content.document.querySelector("#two");
ok(testNode, "We have the test node on page 2");
// On page 2 load, verify we have the right content
assertMarkupViewIsLoaded();
endTests();
});
// Navigate to page 2
inspector.selection.setNode(content.document.querySelector("#one"));
inspector.once("inspector-updated", () => {
browser.loadURI(URL_2);
});
}
// Navigate to page 1
browser.addEventListener("load", onPageOneLoad, true);
browser.loadURI(URL_1);
return deferred.promise;
}).then(() => {
endTests();
});
function assertMarkupViewIsLoaded() {
let markupViewBox = inspector.panelDoc.getElementById("markup-box");

View File

@ -194,8 +194,14 @@
<handler event="click" phase="capturing">
<![CDATA[
if (event.mozInputSource == Ci.nsIDOMMouseEvent.MOZ_SOURCE_TOUCH) {
SelectionHelperUI.attachEditSession(ChromeSelectionHandler,
event.clientX, event.clientY);
if (typeof SelectionHelperUI != 'undefined') {
SelectionHelperUI.attachEditSession(ChromeSelectionHandler,
event.clientX, event.clientY);
} else {
// If we don't have access to SelectionHelperUI then we are using this
// binding for browser content (e.g. about:config)
Services.obs.notifyObservers(event, "attach_edit_session_to_content", "");
}
}
]]>
</handler>
@ -287,8 +293,14 @@
<handler event="click" phase="capturing">
<![CDATA[
if (event.mozInputSource == Ci.nsIDOMMouseEvent.MOZ_SOURCE_TOUCH) {
SelectionHelperUI.attachEditSession(ChromeSelectionHandler,
event.clientX, event.clientY);
if (typeof SelectionHelperUI != 'undefined') {
SelectionHelperUI.attachEditSession(ChromeSelectionHandler,
event.clientX, event.clientY);
} else {
// If we don't have access to SelectionHelperUI then we are using this
// binding for browser content (e.g. about:config)
Services.obs.notifyObservers(event, "attach_edit_session_to_content", "");
}
}
]]>
</handler>

View File

@ -112,6 +112,7 @@ var BrowserUI = {
NewTabUtils.init();
SettingsCharm.init();
NavButtonSlider.init();
SelectionHelperUI.init();
// We can delay some initialization until after startup. We wait until
// the first page is shown, then dispatch a UIReadyDelayed event.

View File

@ -7,6 +7,11 @@ let Ci = Components.interfaces;
Components.utils.import("resource://gre/modules/Services.jsm");
var ViewConfig = {
get _main() {
delete this._main;
return this._main = document.getElementById("main-container");
},
get _container() {
delete this._container;
return this._container = document.getElementById("prefs-container");
@ -18,6 +23,7 @@ var ViewConfig = {
},
init: function init() {
this._main.addEventListener("click", this, false);
window.addEventListener("resize", this, false);
window.addEventListener("prefchange", this, false);
window.addEventListener("prefnew", this, false);
@ -29,6 +35,7 @@ var ViewConfig = {
},
uninit: function uninit() {
this._main.removeEventListener("click", this, false);
window.removeEventListener("resize", this, false);
window.removeEventListener("prefchange", this, false);
window.removeEventListener("prefnew", this, false);
@ -168,6 +175,10 @@ var ViewConfig = {
case "prefnew":
this._handlePrefChange(aEvent.detail, aEvent.type == "prefnew");
break;
case "click":
this._onClick();
break;
}
},
@ -179,6 +190,12 @@ var ViewConfig = {
mainBox.setAttribute("height", height);
},
_onClick: function () {
// Blur the search box when tapping anywhere else in the content
// in order to close the soft keyboard.
document.getElementById("textbox").blur();
},
_handlePrefChange: function _handlePrefChange(aIndex, aNew) {
let isEditing = !this._editor.hidden;
let shouldUpdateEditor = false;

View File

@ -184,6 +184,12 @@ let Content = {
break;
case "click":
// Workaround for bug 925457: we sometimes don't recognize the
// correct tap target or are unable to identify if it's editable.
// Instead always save tap co-ordinates for the keyboard to look for
// when it is up.
SelectionHandler.onClickCoords(aEvent.clientX, aEvent.clientY);
if (aEvent.eventPhase == aEvent.BUBBLING_PHASE)
this._onClickBubble(aEvent);
else

View File

@ -8,6 +8,7 @@ var SelectionHandler = {
init: function init() {
this.type = kContentSelector;
this.snap = true;
this.lastYPos = this.lastXPos = null;
addMessageListener("Browser:SelectionStart", this);
addMessageListener("Browser:SelectionAttach", this);
addMessageListener("Browser:SelectionEnd", this);
@ -340,6 +341,11 @@ var SelectionHandler = {
this.sendAsync("Content:SelectionHandlerPong", { id: aId });
},
onClickCoords: function (xPos, yPos) {
this.lastXPos = xPos;
this.lastYPos = yPos;
},
/*************************************************
* Selection helpers
*/
@ -412,9 +418,12 @@ var SelectionHandler = {
*/
_calcNewContentPosition: function _calcNewContentPosition(aNewViewHeight) {
// We have no target element but the keyboard is up
// so lets not cover content
// so lets not cover content that is below the keyboard
if (!this._cache || !this._cache.element) {
return Services.metro.keyboardHeight;
if (this.lastYPos != null && this.lastYPos > aNewViewHeight) {
return Services.metro.keyboardHeight;
}
return 0;
}
let position = Util.centerElementInView(aNewViewHeight, this._cache.element);
@ -523,7 +532,12 @@ var SelectionHandler = {
break;
case "Browser:RepositionInfoRequest":
this._repositionInfoRequest(json);
// This message is sent simultaneously with a tap event.
// Wait a bit to make sure we have the most up-to-date tap co-ordinates
// before a call to _calcNewContentPosition() which accesses them.
content.setTimeout (function () {
SelectionHandler._repositionInfoRequest(json);
}, 50);
break;
case "Browser:SelectionHandlerPing":

View File

@ -344,6 +344,21 @@ var SelectionHelperUI = {
return false;
},
/*
* Observers
*/
observe: function (aSubject, aTopic, aData) {
switch (aTopic) {
case "attach_edit_session_to_content":
let event = aSubject;
SelectionHelperUI.attachEditSession(Browser.selectedTab.browser,
event.clientX, event.clientY);
break;
}
},
/*
* Public apis
*/
@ -495,6 +510,10 @@ var SelectionHelperUI = {
* Init and shutdown
*/
init: function () {
Services.obs.addObserver(this, "attach_edit_session_to_content", false);
},
_init: function _init(aMsgTarget) {
// store the target message manager
this._msgTarget = aMsgTarget;

View File

@ -30,9 +30,11 @@ libs::
# Bookmarks
# Pick up desktop's bookmarks.inc file
ifdef LOCALE_MERGEDIR
vpath book%.inc $(LOCALE_MERGEDIR)/browser/profile
endif
vpath book%.inc $(LOCALE_SRCDIR)/profile
ifdef LOCALE_MERGEDIR
vpath book%.inc $(LOCALE_SRCDIR)/profile
vpath book%.inc @top_srcdir@/$(relativesrcdir)/en-US/profile
endif

View File

@ -222,7 +222,6 @@ if test -n "$gonkdir" ; then
15)
GONK_INCLUDES="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib -I$gonkdir/dalvik/libnativehelper/include/nativehelper"
MOZ_B2G_BT=1
MOZ_B2G_BT_BLUEZ=1
MOZ_B2G_CAMERA=1
MOZ_OMX_DECODER=1
AC_SUBST(MOZ_OMX_DECODER)
@ -231,15 +230,9 @@ if test -n "$gonkdir" ; then
17|18)
GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include"
if test -d "$gonkdir/external/bluetooth/bluez"; then
GONK_INCLUDES="$GONK_INCLUDES -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib"
GONK_INCLUDES+=" -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib"
MOZ_B2G_BT=1
MOZ_B2G_BT_BLUEZ=1
fi
if test -d "$gonkdir/external/bluetooth/bluedroid"; then
MOZ_B2G_BT=1
MOZ_B2G_BT_BLUEDROID=1
fi
MOZ_B2G_CAMERA=1
MOZ_OMX_DECODER=1
AC_SUBST(MOZ_OMX_DECODER)
@ -7295,8 +7288,6 @@ if test -n "$MOZ_B2G_BT"; then
AC_DEFINE(MOZ_B2G_BT)
fi
AC_SUBST(MOZ_B2G_BT)
AC_SUBST(MOZ_B2G_BT_BLUEZ)
AC_SUBST(MOZ_B2G_BT_BLUEDROID)
dnl ========================================================
dnl = Enable Pico Speech Synthesis (Gonk usually)

View File

@ -44,9 +44,7 @@
#if defined(MOZ_B2G_BT)
# if defined(MOZ_BLUETOOTH_GONK)
#ifndef MOZ_B2G_BT_BLUEDROID
#include "BluetoothGonkService.h"
#endif
# include "BluetoothGonkService.h"
# elif defined(MOZ_BLUETOOTH_DBUS)
# include "BluetoothDBusService.h"
# else
@ -306,13 +304,9 @@ BluetoothService::Create()
#endif
#if defined(MOZ_BLUETOOTH_GONK)
#ifndef MOZ_B2G_BT_BLUEDROID
return new BluetoothGonkService();
#endif
#elif defined(MOZ_BLUETOOTH_DBUS)
#ifdef MOZ_B2G_BT_BLUEZ
return new BluetoothDBusService();
#endif
#endif
BT_WARNING("No platform support for bluetooth!");
return nullptr;

View File

@ -27,12 +27,11 @@
#include <errno.h>
#include <sys/socket.h>
#ifdef MOZ_B2G_BT_BLUEZ
#include <bluetooth/bluetooth.h>
#include <bluetooth/l2cap.h>
#include <bluetooth/rfcomm.h>
#include <bluetooth/sco.h>
#endif
#include "BluetoothUnixSocketConnector.h"
#include "nsThreadUtils.h"
@ -44,7 +43,6 @@ static const int L2CAP_SO_SNDBUF = 400 * 1024; // 400 KB send buffer
static const int L2CAP_SO_RCVBUF = 400 * 1024; // 400 KB receive buffer
static const int L2CAP_MAX_MTU = 65000;
#ifdef MOZ_B2G_BT_BLUEZ
static
int get_bdaddr(const char *str, bdaddr_t *ba)
{
@ -64,8 +62,6 @@ void get_bdaddr_as_string(const bdaddr_t *ba, char *str) {
b[5], b[4], b[3], b[2], b[1], b[0]);
}
#endif
BluetoothUnixSocketConnector::BluetoothUnixSocketConnector(
BluetoothSocketType aType,
int aChannel,
@ -80,7 +76,6 @@ BluetoothUnixSocketConnector::BluetoothUnixSocketConnector(
bool
BluetoothUnixSocketConnector::SetUp(int aFd)
{
#ifdef MOZ_B2G_BT_BLUEZ
int lm = 0;
int sndbuf, rcvbuf;
@ -162,7 +157,7 @@ BluetoothUnixSocketConnector::SetUp(int aFd)
}
}
}
#endif
return true;
}
@ -172,7 +167,6 @@ BluetoothUnixSocketConnector::Create()
MOZ_ASSERT(!NS_IsMainThread());
int fd = -1;
#ifdef MOZ_B2G_BT_BLUEZ
switch (mType) {
case BluetoothSocketType::RFCOMM:
fd = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
@ -199,7 +193,7 @@ BluetoothUnixSocketConnector::Create()
BT_WARNING("Could not set up socket!");
return -1;
}
#endif
return fd;
}
@ -209,7 +203,6 @@ BluetoothUnixSocketConnector::CreateAddr(bool aIsServer,
sockaddr_any& aAddr,
const char* aAddress)
{
#ifdef MOZ_B2G_BT_BLUEZ
// Set to BDADDR_ANY, if it's not a server, we'll reset.
bdaddr_t bd_address_obj = {{0, 0, 0, 0, 0, 0}};
@ -249,7 +242,6 @@ BluetoothUnixSocketConnector::CreateAddr(bool aIsServer,
BT_WARNING("Socket type unknown!");
return false;
}
#endif
return true;
}
@ -257,7 +249,6 @@ void
BluetoothUnixSocketConnector::GetSocketAddr(const sockaddr_any& aAddr,
nsAString& aAddrStr)
{
#ifdef MOZ_B2G_BT_BLUEZ
char addr[18];
switch (mType) {
case BluetoothSocketType::RFCOMM:
@ -274,5 +265,4 @@ BluetoothUnixSocketConnector::GetSocketAddr(const sockaddr_any& aAddr,
MOZ_CRASH("Socket should be either RFCOMM or SCO!");
}
aAddrStr.AssignASCII(addr);
#endif
}

View File

@ -36,14 +36,6 @@ DEFINES += -DMOZ_BLUETOOTH_DBUS
endif
endif
ifdef MOZ_B2G_BT_BLUEZ
DEFINES += -DMOZ_B2G_BT_BLUEZ
endif
ifdef MOZ_B2G_BT_BLUEDROID
DEFINES += -DMOZ_B2G_BT_BLUEDROID
endif
# Add VPATH to LOCAL_INCLUDES so we are going to include the correct backend
# subdirectory.
LOCAL_INCLUDES += $(VPATH:%=-I%)

View File

@ -24,9 +24,6 @@ BEGIN_BLUETOOTH_NAMESPACE
class BluetoothDBusService : public BluetoothService
{
public:
BluetoothDBusService();
~BluetoothDBusService();
bool IsReady();
virtual nsresult StartInternal() MOZ_OVERRIDE;
@ -171,6 +168,11 @@ public:
virtual nsresult
SendInputMessage(const nsAString& aDeviceAddresses,
const nsAString& aMessage) MOZ_OVERRIDE;
protected:
BluetoothDBusService();
~BluetoothDBusService();
private:
/**
* For DBus Control method of "UpdateNotification", event id should be

View File

@ -52,7 +52,7 @@ if CONFIG['MOZ_B2G_BT']:
'BluetoothRilListener.cpp',
]
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_B2G_BT_BLUEZ']:
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
CPP_SOURCES += [
'linux/BluetoothDBusService.cpp',
'gonk/BluetoothGonkService.cpp',

View File

@ -316,11 +316,37 @@ AutoMounterResponseCallback::ResponseReceived(const VolumeCommand* aCommand)
}
}
class AutoBool {
public:
explicit AutoBool(bool &aBool) : mBool(aBool) {
mBool = true;
}
~AutoBool() {
mBool = false;
}
private:
bool &mBool;
};
/***************************************************************************/
void
AutoMounter::UpdateState()
{
static bool inUpdateState = false;
if (inUpdateState) {
// When UpdateState calls SetISharing, this causes a volume state
// change to occur, which would normally cause UpdateState to be called
// again. We want the volume state change to go out (so that device
// storage will see the change in sharing state), but since we're
// already in UpdateState we just want to prevent recursion from screwing
// things up.
return;
}
AutoBool inUpdateStateDetector(inUpdateState);
MOZ_ASSERT(MessageLoop::current() == XRE_GetIOMessageLoop());
// If the following preconditions are met:
@ -379,6 +405,7 @@ AutoMounter::UpdateState()
umsAvail, umsEnabled, mMode, usbCablePluggedIn, tryToShare);
bool filesOpen = false;
static unsigned filesOpenDelayCount = 0;
VolumeArray::index_type volIndex;
VolumeArray::size_type numVolumes = VolumeManager::NumVolumes();
for (volIndex = 0; volIndex < numVolumes; volIndex++) {
@ -413,6 +440,12 @@ AutoMounter::UpdateState()
break;
}
// Mark the volume as if we've started sharing. This will cause
// apps which watch device storage notifications to see the volume
// go into the shared state, and prompt them to close any open files
// that they might have.
vol->SetIsSharing(true);
// Check to see if there are any open files on the volume and
// don't initiate the unmount while there are open files.
OpenFileFinder::Info fileInfo;
@ -431,15 +464,26 @@ AutoMounter::UpdateState()
LOGW("UpdateState: Mounted volume %s has open files, not sharing",
vol->NameStr());
// Check again in 5 seconds to see if the files are closed. Since
// we're trying to share the volume, this implies that we're
// Check again in a few seconds to see if the files are closed.
// Since we're trying to share the volume, this implies that we're
// plugged into the PC via USB and this in turn implies that the
// battery is charging, so we don't need to be too concerned about
// wasting battery here.
//
// If we just detected that there were files open, then we use
// a short timer. We will have told the apps that we're trying
// trying to share, and they'll be closing their files. This makes
// the sharing more responsive. If after a few seconds, the apps
// haven't closed their files, then we back off.
int delay = 1000;
if (filesOpenDelayCount > 10) {
delay = 5000;
}
MessageLoopForIO::current()->
PostDelayedTask(FROM_HERE,
NewRunnableMethod(this, &AutoMounter::UpdateState),
5000);
delay);
filesOpen = true;
break;
}
@ -447,7 +491,6 @@ AutoMounter::UpdateState()
// Volume is mounted, we need to unmount before
// we can share.
LOG("UpdateState: Unmounting %s", vol->NameStr());
vol->SetIsSharing(true);
vol->StartUnmount(mResponseCallback);
return; // UpdateState will be called again when the Unmount command completes
}
@ -488,8 +531,10 @@ AutoMounter::UpdateState()
int32_t status = AUTOMOUNTER_STATUS_DISABLED;
if (filesOpen) {
filesOpenDelayCount++;
status = AUTOMOUNTER_STATUS_FILES_OPEN;
} else if (enabled) {
filesOpenDelayCount = 0;
status = AUTOMOUNTER_STATUS_ENABLED;
}
SetAutoMounterStatus(status);

View File

@ -68,7 +68,15 @@ Volume::Volume(const nsCSubstring& aName)
void
Volume::SetIsSharing(bool aIsSharing)
{
if (aIsSharing == mIsSharing) {
return;
}
mIsSharing = aIsSharing;
LOG("Volume %s: IsSharing set to %d state %s",
NameStr(), (int)mIsSharing, StateStr(mState));
if (mIsSharing) {
mEventObserverList.Broadcast(this);
}
}
void

View File

@ -95,6 +95,12 @@ bool nsVolume::Equals(nsIVolume* aVolume)
return false;
}
bool isSharing;
aVolume->GetIsSharing(&isSharing);
if (mIsSharing != isSharing) {
return false;
}
return true;
}

View File

@ -71,6 +71,10 @@ public:
int32_t State() const { return mState; }
const char* StateStr() const { return NS_VolumeStateStr(mState); }
bool IsFake() const { return mIsFake; }
bool IsMediaPresent() const { return mIsMediaPresent; }
bool IsSharing() const { return mIsSharing; }
typedef nsTArray<nsRefPtr<nsVolume> > Array;
private:
@ -80,9 +84,6 @@ private:
void UpdateMountLock(const nsAString& aMountLockState);
void UpdateMountLock(bool aMountLocked);
bool IsFake() const { return mIsFake; }
bool IsMediaPresent() const { return mIsMediaPresent; }
bool IsSharing() const { return mIsSharing; }
void SetIsFake(bool aIsFake);
void SetState(int32_t aState);

View File

@ -454,7 +454,7 @@ nsVolumeService::UpdateVolumeIOThread(const Volume* aVolume)
"media %d sharing %d",
aVolume->NameStr(), aVolume->StateStr(), aVolume->MountPoint().get(),
aVolume->MountGeneration(), (int)aVolume->IsMountLocked(),
(int)aVolume->IsMediaPresent(), (int)aVolume->IsSharing());
(int)aVolume->MediaPresent(), (int)aVolume->IsSharing());
MOZ_ASSERT(MessageLoop::current() == XRE_GetIOMessageLoop());
NS_DispatchToMainThread(new UpdateVolumeRunnable(this, aVolume));
}

View File

@ -14,7 +14,7 @@ DIRS += [
if CONFIG['MOZ_B2G_RIL']:
DIRS += ['ril']
if CONFIG['MOZ_B2G_BT_BLUEZ']:
if CONFIG['MOZ_B2G_BT']:
DIRS += ['dbus']
if CONFIG['MOZ_B2G_RIL'] or CONFIG['MOZ_B2G_BT']:

View File

@ -12,7 +12,7 @@
#include <sys/types.h>
#include <sys/un.h>
#include <netinet/in.h>
#ifdef MOZ_B2G_BT_BLUEZ
#ifdef MOZ_B2G_BT
#include <bluetooth/bluetooth.h>
#include <bluetooth/sco.h>
#include <bluetooth/l2cap.h>
@ -31,7 +31,7 @@ union sockaddr_any {
sockaddr_un un;
sockaddr_in in;
sockaddr_in6 in6;
#ifdef MOZ_B2G_BT_BLUEZ
#ifdef MOZ_B2G_BT
sockaddr_sco sco;
sockaddr_rc rc;
sockaddr_l2 l2;

View File

@ -34,6 +34,7 @@ HelperAppLauncherDialog.prototype = {
// Add a fake intent for save to disk at the top of the list
apps.unshift({
name: bundle.GetStringFromName("helperapps.saveToDisk"),
packageName: "org.mozilla.gecko.Download",
iconUri: "drawable://icon",
launch: function() {
// Reset the preferredAction here
@ -43,23 +44,82 @@ HelperAppLauncherDialog.prototype = {
}
});
let app = apps[0];
if (apps.length > 1) {
app = HelperApps.prompt(apps, {
title: bundle.GetStringFromName("helperapps.pick")
// See if the user already marked something as the default for this mimetype,
// and if that app is still installed.
let preferredApp = this._getPreferredApp(aLauncher);
if (preferredApp) {
let pref = apps.filter(function(app) {
return app.packageName === preferredApp;
});
}
if (app) {
aLauncher.MIMEInfo.preferredAction = Ci.nsIMIMEInfo.useHelperApp;
if (!app.launch(aLauncher.source)) {
aLauncher.cancel();
if (pref.length > 0) {
pref[0].launch(aLauncher.source);
return;
}
} else {
// Something weird happened. Log an error
Services.console.logStringMessage("Unexpected selection from grid: " + app);
}
let callback = function(app) {
aLauncher.MIMEInfo.preferredAction = Ci.nsIMIMEInfo.useHelperApp;
app.launch(aLauncher.source);
if (!app.launch(aLauncher.source)) {
aLauncher.cancel(Cr.NS_BINDING_ABORTED);
}
}
if (apps.length > 1) {
HelperApps.prompt(apps, {
title: bundle.GetStringFromName("helperapps.pick"),
buttons: [
bundle.GetStringFromName("helperapps.alwaysUse"),
bundle.GetStringFromName("helperapps.useJustOnce")
]
}, (data) => {
if (data.button < 0)
return;
callback(apps[data.icongrid0]);
if (data.button == 0)
this._setPreferredApp(aLauncher, apps[data.icongrid0]);
});
} else {
callback(apps[0]);
}
},
_getPrefName: function getPrefName(mimetype) {
return "browser.download.preferred." + mimetype.replace("\\", ".");
},
_getMimeTypeFromLauncher: function getMimeTypeFromLauncher(launcher) {
let mime = launcher.MIMEInfo.MIMEType;
if (!mime)
mime = ContentAreaUtils.getMIMETypeForURI(launcher.source) || "";
return mime;
},
_getPreferredApp: function getPreferredApp(launcher) {
let mime = this._getMimeTypeFromLauncher(launcher);
if (!mime)
return;
try {
return Services.prefs.getCharPref(this._getPrefName(mime));
} catch(ex) {
Services.console.logStringMessage("Error getting pref for " + mime + " " + ex);
}
return null;
},
_setPreferredApp: function setPreferredApp(launcher, app) {
let mime = this._getMimeTypeFromLauncher(launcher);
if (!mime)
return;
if (app)
Services.prefs.setCharPref(this._getPrefName(mime), app.packageName);
else
Services.prefs.clearUserPref(this._getPrefName(mime));
},
promptForSaveToFile: function hald_promptForSaveToFile(aLauncher, aContext, aDefaultFile, aSuggestedFileExt, aForcePrompt) {

View File

@ -265,6 +265,8 @@ helperapps.always=Always
helperapps.never=Never
helperapps.pick=Complete action using
helperapps.saveToDisk=Download
helperapps.alwaysUse=Always
helperapps.useJustOnce=Just once
#Lightweight themes
# LOCALIZATION NOTE (lwthemeInstallRequest.message): %S will be replaced with

View File

@ -1,2 +0,0 @@
mobile/android/base/resources/drawable-mdpi/sync_desktop.png
mobile/android/base/resources/drawable-mdpi/sync_mobile.png

View File

@ -1 +0,0 @@
mobile/android/base/resources/drawable/sync_pin_background.xml

View File

@ -1,11 +0,0 @@
res/layout/sync_account.xml
res/layout/sync_list_item.xml
res/layout/sync_redirect_to_setup.xml
res/layout/sync_send_tab.xml
res/layout/sync_setup.xml
res/layout/sync_setup_failure.xml
res/layout/sync_setup_jpake_waiting.xml
res/layout/sync_setup_nointernet.xml
res/layout/sync_setup_pair.xml
res/layout/sync_setup_success.xml
res/layout/sync_setup_webview.xml

View File

@ -1 +0,0 @@
res/values-large-v11/sync_styles.xml

View File

@ -1,289 +0,0 @@
background/announcements/Announcement.java
background/announcements/AnnouncementPresenter.java
background/announcements/AnnouncementsBroadcastReceiver.java
background/announcements/AnnouncementsBroadcastService.java
background/announcements/AnnouncementsFetchDelegate.java
background/announcements/AnnouncementsFetcher.java
background/announcements/AnnouncementsFetchResourceDelegate.java
background/announcements/AnnouncementsService.java
background/BackgroundService.java
background/bagheera/BagheeraClient.java
background/bagheera/BagheeraRequestDelegate.java
background/bagheera/BoundedByteArrayEntity.java
background/bagheera/DeflateHelper.java
background/common/DateUtils.java
background/common/log/Logger.java
background/common/log/writers/AndroidLevelCachingLogWriter.java
background/common/log/writers/AndroidLogWriter.java
background/common/log/writers/LevelFilteringLogWriter.java
background/common/log/writers/LogWriter.java
background/common/log/writers/PrintLogWriter.java
background/common/log/writers/SimpleTagLogWriter.java
background/common/log/writers/StringLogWriter.java
background/common/log/writers/TagLogWriter.java
background/common/log/writers/ThreadLocalTagLogWriter.java
background/datareporting/TelemetryRecorder.java
background/db/CursorDumper.java
background/db/Tab.java
background/healthreport/Environment.java
background/healthreport/EnvironmentBuilder.java
background/healthreport/EnvironmentV1.java
background/healthreport/HealthReportBroadcastReceiver.java
background/healthreport/HealthReportBroadcastService.java
background/healthreport/HealthReportDatabases.java
background/healthreport/HealthReportDatabaseStorage.java
background/healthreport/HealthReportGenerator.java
background/healthreport/HealthReportProvider.java
background/healthreport/HealthReportStorage.java
background/healthreport/HealthReportUtils.java
background/healthreport/ProfileInformationCache.java
background/healthreport/prune/HealthReportPruneService.java
background/healthreport/prune/PrunePolicy.java
background/healthreport/prune/PrunePolicyDatabaseStorage.java
background/healthreport/prune/PrunePolicyStorage.java
background/healthreport/upload/AndroidSubmissionClient.java
background/healthreport/upload/HealthReportUploadService.java
background/healthreport/upload/ObsoleteDocumentTracker.java
background/healthreport/upload/SubmissionClient.java
background/healthreport/upload/SubmissionPolicy.java
sync/AlreadySyncingException.java
sync/CollectionKeys.java
sync/CommandProcessor.java
sync/CommandRunner.java
sync/config/AccountPickler.java
sync/config/activities/SelectEnginesActivity.java
sync/config/ClientRecordTerminator.java
sync/config/ConfigurationMigrator.java
sync/CredentialException.java
sync/CredentialsSource.java
sync/crypto/CryptoException.java
sync/crypto/CryptoInfo.java
sync/crypto/HKDF.java
sync/crypto/HMACVerificationException.java
sync/crypto/KeyBundle.java
sync/crypto/MissingCryptoInputException.java
sync/crypto/NoKeyBundleException.java
sync/crypto/PersistedCrypto5Keys.java
sync/CryptoRecord.java
sync/DelayedWorkTracker.java
sync/delegates/ClientsDataDelegate.java
sync/delegates/FreshStartDelegate.java
sync/delegates/GlobalSessionCallback.java
sync/delegates/JSONRecordFetchDelegate.java
sync/delegates/KeyUploadDelegate.java
sync/delegates/MetaGlobalDelegate.java
sync/delegates/WipeServerDelegate.java
sync/EngineSettings.java
sync/ExtendedJSONObject.java
sync/GlobalSession.java
sync/HTTPFailureException.java
sync/InfoCollections.java
sync/InfoCounts.java
sync/jpake/BigIntegerHelper.java
sync/jpake/Gx3OrGx4IsZeroOrOneException.java
sync/jpake/IncorrectZkpException.java
sync/jpake/JPakeClient.java
sync/jpake/JPakeCrypto.java
sync/jpake/JPakeJson.java
sync/jpake/JPakeNoActivePairingException.java
sync/jpake/JPakeNumGenerator.java
sync/jpake/JPakeNumGeneratorRandom.java
sync/jpake/JPakeParty.java
sync/jpake/stage/CompleteStage.java
sync/jpake/stage/ComputeFinalStage.java
sync/jpake/stage/ComputeKeyVerificationStage.java
sync/jpake/stage/ComputeStepOneStage.java
sync/jpake/stage/ComputeStepTwoStage.java
sync/jpake/stage/DecryptDataStage.java
sync/jpake/stage/DeleteChannel.java
sync/jpake/stage/GetChannelStage.java
sync/jpake/stage/GetRequestStage.java
sync/jpake/stage/JPakeStage.java
sync/jpake/stage/PutRequestStage.java
sync/jpake/stage/VerifyPairingStage.java
sync/jpake/Zkp.java
sync/JSONRecordFetcher.java
sync/KeyBundleProvider.java
sync/MetaGlobal.java
sync/MetaGlobalException.java
sync/MetaGlobalMissingEnginesException.java
sync/MetaGlobalNotSetException.java
sync/middleware/Crypto5MiddlewareRepository.java
sync/middleware/Crypto5MiddlewareRepositorySession.java
sync/middleware/MiddlewareRepository.java
sync/middleware/MiddlewareRepositorySession.java
sync/net/AuthHeaderProvider.java
sync/net/BaseResource.java
sync/net/BaseResourceDelegate.java
sync/net/BasicAuthHeaderProvider.java
sync/net/BrowserIDAuthHeaderProvider.java
sync/net/ConnectionMonitorThread.java
sync/net/HandleProgressException.java
sync/net/HawkAuthHeaderProvider.java
sync/net/HMACAuthHeaderProvider.java
sync/net/HttpResponseObserver.java
sync/net/Resource.java
sync/net/ResourceDelegate.java
sync/net/SyncResponse.java
sync/net/SyncStorageCollectionRequest.java
sync/net/SyncStorageCollectionRequestDelegate.java
sync/net/SyncStorageRecordRequest.java
sync/net/SyncStorageRequest.java
sync/net/SyncStorageRequestDelegate.java
sync/net/SyncStorageRequestIncrementalDelegate.java
sync/net/SyncStorageResponse.java
sync/net/TLSSocketFactory.java
sync/net/WBOCollectionRequestDelegate.java
sync/net/WBORequestDelegate.java
sync/NoCollectionKeysSetException.java
sync/NodeAuthenticationException.java
sync/NonArrayJSONException.java
sync/NonObjectJSONException.java
sync/NullClusterURLException.java
sync/PersistedMetaGlobal.java
sync/PrefsSource.java
sync/receivers/SyncAccountDeletedReceiver.java
sync/receivers/SyncAccountDeletedService.java
sync/receivers/UpgradeReceiver.java
sync/repositories/android/AndroidBrowserBookmarksDataAccessor.java
sync/repositories/android/AndroidBrowserBookmarksRepository.java
sync/repositories/android/AndroidBrowserBookmarksRepositorySession.java
sync/repositories/android/AndroidBrowserHistoryDataAccessor.java
sync/repositories/android/AndroidBrowserHistoryDataExtender.java
sync/repositories/android/AndroidBrowserHistoryRepository.java
sync/repositories/android/AndroidBrowserHistoryRepositorySession.java
sync/repositories/android/AndroidBrowserRepository.java
sync/repositories/android/AndroidBrowserRepositoryDataAccessor.java
sync/repositories/android/AndroidBrowserRepositorySession.java
sync/repositories/android/BookmarksDeletionManager.java
sync/repositories/android/BookmarksInsertionManager.java
sync/repositories/android/BrowserContractHelpers.java
sync/repositories/android/CachedSQLiteOpenHelper.java
sync/repositories/android/ClientsDatabase.java
sync/repositories/android/ClientsDatabaseAccessor.java
sync/repositories/android/FennecTabsRepository.java
sync/repositories/android/FormHistoryRepositorySession.java
sync/repositories/android/PasswordsRepositorySession.java
sync/repositories/android/RepoUtils.java
sync/repositories/BookmarkNeedsReparentingException.java
sync/repositories/BookmarksRepository.java
sync/repositories/ConstrainedServer11Repository.java
sync/repositories/delegates/DeferrableRepositorySessionCreationDelegate.java
sync/repositories/delegates/DeferredRepositorySessionBeginDelegate.java
sync/repositories/delegates/DeferredRepositorySessionFetchRecordsDelegate.java
sync/repositories/delegates/DeferredRepositorySessionFinishDelegate.java
sync/repositories/delegates/DeferredRepositorySessionStoreDelegate.java
sync/repositories/delegates/RepositorySessionBeginDelegate.java
sync/repositories/delegates/RepositorySessionCleanDelegate.java
sync/repositories/delegates/RepositorySessionCreationDelegate.java
sync/repositories/delegates/RepositorySessionFetchRecordsDelegate.java
sync/repositories/delegates/RepositorySessionFinishDelegate.java
sync/repositories/delegates/RepositorySessionGuidsSinceDelegate.java
sync/repositories/delegates/RepositorySessionStoreDelegate.java
sync/repositories/delegates/RepositorySessionWipeDelegate.java
sync/repositories/domain/BookmarkRecord.java
sync/repositories/domain/BookmarkRecordFactory.java
sync/repositories/domain/ClientRecord.java
sync/repositories/domain/ClientRecordFactory.java
sync/repositories/domain/FormHistoryRecord.java
sync/repositories/domain/HistoryRecord.java
sync/repositories/domain/HistoryRecordFactory.java
sync/repositories/domain/PasswordRecord.java
sync/repositories/domain/Record.java
sync/repositories/domain/RecordParseException.java
sync/repositories/domain/TabsRecord.java
sync/repositories/domain/VersionConstants.java
sync/repositories/FetchFailedException.java
sync/repositories/HashSetStoreTracker.java
sync/repositories/HistoryRepository.java
sync/repositories/IdentityRecordFactory.java
sync/repositories/InactiveSessionException.java
sync/repositories/InvalidBookmarkTypeException.java
sync/repositories/InvalidRequestException.java
sync/repositories/InvalidSessionTransitionException.java
sync/repositories/MultipleRecordsForGuidException.java
sync/repositories/NoContentProviderException.java
sync/repositories/NoGuidForIdException.java
sync/repositories/NoStoreDelegateException.java
sync/repositories/NullCursorException.java
sync/repositories/ParentNotFoundException.java
sync/repositories/ProfileDatabaseException.java
sync/repositories/RecordFactory.java
sync/repositories/RecordFilter.java
sync/repositories/Repository.java
sync/repositories/RepositorySession.java
sync/repositories/RepositorySessionBundle.java
sync/repositories/Server11Repository.java
sync/repositories/Server11RepositorySession.java
sync/repositories/StoreFailedException.java
sync/repositories/StoreTracker.java
sync/repositories/StoreTrackingRepositorySession.java
sync/Server11PreviousPostFailedException.java
sync/Server11RecordPostFailedException.java
sync/setup/activities/AccountActivity.java
sync/setup/activities/ActivityUtils.java
sync/setup/activities/ClientRecordArrayAdapter.java
sync/setup/activities/RedirectToSetupActivity.java
sync/setup/activities/SendTabActivity.java
sync/setup/activities/SendTabData.java
sync/setup/activities/SetupFailureActivity.java
sync/setup/activities/SetupSuccessActivity.java
sync/setup/activities/SetupSyncActivity.java
sync/setup/activities/SyncActivity.java
sync/setup/activities/WebURLFinder.java
sync/setup/activities/WebViewActivity.java
sync/setup/auth/AccountAuthenticator.java
sync/setup/auth/AuthenticateAccountStage.java
sync/setup/auth/AuthenticationResult.java
sync/setup/auth/AuthenticatorStage.java
sync/setup/auth/EnsureUserExistenceStage.java
sync/setup/auth/FetchUserNodeStage.java
sync/setup/Constants.java
sync/setup/InvalidSyncKeyException.java
sync/setup/SyncAccounts.java
sync/setup/SyncAuthenticatorService.java
sync/stage/AbstractNonRepositorySyncStage.java
sync/stage/AbstractSessionManagingSyncStage.java
sync/stage/AndroidBrowserBookmarksServerSyncStage.java
sync/stage/AndroidBrowserHistoryServerSyncStage.java
sync/stage/CheckPreconditionsStage.java
sync/stage/CompletedStage.java
sync/stage/EnsureClusterURLStage.java
sync/stage/EnsureCrypto5KeysStage.java
sync/stage/FennecTabsServerSyncStage.java
sync/stage/FetchInfoCollectionsStage.java
sync/stage/FetchMetaGlobalStage.java
sync/stage/FormHistoryServerSyncStage.java
sync/stage/GlobalSyncStage.java
sync/stage/NoSuchStageException.java
sync/stage/NoSyncIDException.java
sync/stage/PasswordsServerSyncStage.java
sync/stage/SafeConstrainedServer11Repository.java
sync/stage/ServerSyncStage.java
sync/stage/SyncClientsEngineStage.java
sync/stage/UploadMetaGlobalStage.java
sync/syncadapter/SyncAdapter.java
sync/syncadapter/SyncService.java
sync/SyncConfiguration.java
sync/SyncConfigurationException.java
sync/SyncException.java
sync/synchronizer/ConcurrentRecordConsumer.java
sync/synchronizer/RecordConsumer.java
sync/synchronizer/RecordsChannel.java
sync/synchronizer/RecordsChannelDelegate.java
sync/synchronizer/RecordsConsumerDelegate.java
sync/synchronizer/SerialRecordConsumer.java
sync/synchronizer/ServerLocalSynchronizer.java
sync/synchronizer/ServerLocalSynchronizerSession.java
sync/synchronizer/SessionNotBegunException.java
sync/synchronizer/Synchronizer.java
sync/synchronizer/SynchronizerDelegate.java
sync/synchronizer/SynchronizerSession.java
sync/synchronizer/SynchronizerSessionDelegate.java
sync/synchronizer/UnbundleError.java
sync/synchronizer/UnexpectedSessionException.java
sync/SynchronizerConfiguration.java
sync/ThreadPool.java
sync/UnexpectedJSONException.java
sync/UnknownSynchronizerConfigurationVersionException.java
sync/Utils.java

View File

@ -1,464 +0,0 @@
ch/boye/httpclientandroidlib/androidextra/HttpClientAndroidLog.java
ch/boye/httpclientandroidlib/annotation/GuardedBy.java
ch/boye/httpclientandroidlib/annotation/Immutable.java
ch/boye/httpclientandroidlib/annotation/NotThreadSafe.java
ch/boye/httpclientandroidlib/annotation/ThreadSafe.java
ch/boye/httpclientandroidlib/auth/AUTH.java
ch/boye/httpclientandroidlib/auth/AuthenticationException.java
ch/boye/httpclientandroidlib/auth/AuthScheme.java
ch/boye/httpclientandroidlib/auth/AuthSchemeFactory.java
ch/boye/httpclientandroidlib/auth/AuthSchemeRegistry.java
ch/boye/httpclientandroidlib/auth/AuthScope.java
ch/boye/httpclientandroidlib/auth/AuthState.java
ch/boye/httpclientandroidlib/auth/BasicUserPrincipal.java
ch/boye/httpclientandroidlib/auth/ContextAwareAuthScheme.java
ch/boye/httpclientandroidlib/auth/Credentials.java
ch/boye/httpclientandroidlib/auth/InvalidCredentialsException.java
ch/boye/httpclientandroidlib/auth/MalformedChallengeException.java
ch/boye/httpclientandroidlib/auth/NTCredentials.java
ch/boye/httpclientandroidlib/auth/NTUserPrincipal.java
ch/boye/httpclientandroidlib/auth/params/AuthParamBean.java
ch/boye/httpclientandroidlib/auth/params/AuthParams.java
ch/boye/httpclientandroidlib/auth/params/AuthPNames.java
ch/boye/httpclientandroidlib/auth/UsernamePasswordCredentials.java
ch/boye/httpclientandroidlib/client/AuthCache.java
ch/boye/httpclientandroidlib/client/AuthenticationHandler.java
ch/boye/httpclientandroidlib/client/CircularRedirectException.java
ch/boye/httpclientandroidlib/client/ClientProtocolException.java
ch/boye/httpclientandroidlib/client/CookieStore.java
ch/boye/httpclientandroidlib/client/CredentialsProvider.java
ch/boye/httpclientandroidlib/client/entity/DecompressingEntity.java
ch/boye/httpclientandroidlib/client/entity/DeflateDecompressingEntity.java
ch/boye/httpclientandroidlib/client/entity/GzipDecompressingEntity.java
ch/boye/httpclientandroidlib/client/entity/UrlEncodedFormEntity.java
ch/boye/httpclientandroidlib/client/HttpClient.java
ch/boye/httpclientandroidlib/client/HttpRequestRetryHandler.java
ch/boye/httpclientandroidlib/client/HttpResponseException.java
ch/boye/httpclientandroidlib/client/methods/AbortableHttpRequest.java
ch/boye/httpclientandroidlib/client/methods/HttpDelete.java
ch/boye/httpclientandroidlib/client/methods/HttpEntityEnclosingRequestBase.java
ch/boye/httpclientandroidlib/client/methods/HttpGet.java
ch/boye/httpclientandroidlib/client/methods/HttpHead.java
ch/boye/httpclientandroidlib/client/methods/HttpOptions.java
ch/boye/httpclientandroidlib/client/methods/HttpPost.java
ch/boye/httpclientandroidlib/client/methods/HttpPut.java
ch/boye/httpclientandroidlib/client/methods/HttpRequestBase.java
ch/boye/httpclientandroidlib/client/methods/HttpTrace.java
ch/boye/httpclientandroidlib/client/methods/HttpUriRequest.java
ch/boye/httpclientandroidlib/client/NonRepeatableRequestException.java
ch/boye/httpclientandroidlib/client/params/AllClientPNames.java
ch/boye/httpclientandroidlib/client/params/AuthPolicy.java
ch/boye/httpclientandroidlib/client/params/ClientParamBean.java
ch/boye/httpclientandroidlib/client/params/ClientPNames.java
ch/boye/httpclientandroidlib/client/params/CookiePolicy.java
ch/boye/httpclientandroidlib/client/params/HttpClientParams.java
ch/boye/httpclientandroidlib/client/protocol/ClientContext.java
ch/boye/httpclientandroidlib/client/protocol/ClientContextConfigurer.java
ch/boye/httpclientandroidlib/client/protocol/RequestAcceptEncoding.java
ch/boye/httpclientandroidlib/client/protocol/RequestAddCookies.java
ch/boye/httpclientandroidlib/client/protocol/RequestAuthCache.java
ch/boye/httpclientandroidlib/client/protocol/RequestClientConnControl.java
ch/boye/httpclientandroidlib/client/protocol/RequestDefaultHeaders.java
ch/boye/httpclientandroidlib/client/protocol/RequestProxyAuthentication.java
ch/boye/httpclientandroidlib/client/protocol/RequestTargetAuthentication.java
ch/boye/httpclientandroidlib/client/protocol/ResponseAuthCache.java
ch/boye/httpclientandroidlib/client/protocol/ResponseContentEncoding.java
ch/boye/httpclientandroidlib/client/protocol/ResponseProcessCookies.java
ch/boye/httpclientandroidlib/client/RedirectException.java
ch/boye/httpclientandroidlib/client/RedirectHandler.java
ch/boye/httpclientandroidlib/client/RedirectStrategy.java
ch/boye/httpclientandroidlib/client/RequestDirector.java
ch/boye/httpclientandroidlib/client/ResponseHandler.java
ch/boye/httpclientandroidlib/client/UserTokenHandler.java
ch/boye/httpclientandroidlib/client/utils/CloneUtils.java
ch/boye/httpclientandroidlib/client/utils/Idn.java
ch/boye/httpclientandroidlib/client/utils/JdkIdn.java
ch/boye/httpclientandroidlib/client/utils/Punycode.java
ch/boye/httpclientandroidlib/client/utils/Rfc3492Idn.java
ch/boye/httpclientandroidlib/client/utils/URIUtils.java
ch/boye/httpclientandroidlib/client/utils/URLEncodedUtils.java
ch/boye/httpclientandroidlib/conn/BasicEofSensorWatcher.java
ch/boye/httpclientandroidlib/conn/BasicManagedEntity.java
ch/boye/httpclientandroidlib/conn/ClientConnectionManager.java
ch/boye/httpclientandroidlib/conn/ClientConnectionManagerFactory.java
ch/boye/httpclientandroidlib/conn/ClientConnectionOperator.java
ch/boye/httpclientandroidlib/conn/ClientConnectionRequest.java
ch/boye/httpclientandroidlib/conn/ConnectionKeepAliveStrategy.java
ch/boye/httpclientandroidlib/conn/ConnectionPoolTimeoutException.java
ch/boye/httpclientandroidlib/conn/ConnectionReleaseTrigger.java
ch/boye/httpclientandroidlib/conn/ConnectTimeoutException.java
ch/boye/httpclientandroidlib/conn/EofSensorInputStream.java
ch/boye/httpclientandroidlib/conn/EofSensorWatcher.java
ch/boye/httpclientandroidlib/conn/HttpHostConnectException.java
ch/boye/httpclientandroidlib/conn/HttpRoutedConnection.java
ch/boye/httpclientandroidlib/conn/ManagedClientConnection.java
ch/boye/httpclientandroidlib/conn/MultihomePlainSocketFactory.java
ch/boye/httpclientandroidlib/conn/OperatedClientConnection.java
ch/boye/httpclientandroidlib/conn/params/ConnConnectionParamBean.java
ch/boye/httpclientandroidlib/conn/params/ConnConnectionPNames.java
ch/boye/httpclientandroidlib/conn/params/ConnManagerParamBean.java
ch/boye/httpclientandroidlib/conn/params/ConnManagerParams.java
ch/boye/httpclientandroidlib/conn/params/ConnManagerPNames.java
ch/boye/httpclientandroidlib/conn/params/ConnPerRoute.java
ch/boye/httpclientandroidlib/conn/params/ConnPerRouteBean.java
ch/boye/httpclientandroidlib/conn/params/ConnRouteParamBean.java
ch/boye/httpclientandroidlib/conn/params/ConnRouteParams.java
ch/boye/httpclientandroidlib/conn/params/ConnRoutePNames.java
ch/boye/httpclientandroidlib/conn/routing/BasicRouteDirector.java
ch/boye/httpclientandroidlib/conn/routing/HttpRoute.java
ch/boye/httpclientandroidlib/conn/routing/HttpRouteDirector.java
ch/boye/httpclientandroidlib/conn/routing/HttpRoutePlanner.java
ch/boye/httpclientandroidlib/conn/routing/RouteInfo.java
ch/boye/httpclientandroidlib/conn/routing/RouteTracker.java
ch/boye/httpclientandroidlib/conn/scheme/HostNameResolver.java
ch/boye/httpclientandroidlib/conn/scheme/LayeredSchemeSocketFactory.java
ch/boye/httpclientandroidlib/conn/scheme/LayeredSchemeSocketFactoryAdaptor.java
ch/boye/httpclientandroidlib/conn/scheme/LayeredSocketFactory.java
ch/boye/httpclientandroidlib/conn/scheme/LayeredSocketFactoryAdaptor.java
ch/boye/httpclientandroidlib/conn/scheme/PlainSocketFactory.java
ch/boye/httpclientandroidlib/conn/scheme/Scheme.java
ch/boye/httpclientandroidlib/conn/scheme/SchemeRegistry.java
ch/boye/httpclientandroidlib/conn/scheme/SchemeSocketFactory.java
ch/boye/httpclientandroidlib/conn/scheme/SchemeSocketFactoryAdaptor.java
ch/boye/httpclientandroidlib/conn/scheme/SocketFactory.java
ch/boye/httpclientandroidlib/conn/scheme/SocketFactoryAdaptor.java
ch/boye/httpclientandroidlib/conn/ssl/AbstractVerifier.java
ch/boye/httpclientandroidlib/conn/ssl/AllowAllHostnameVerifier.java
ch/boye/httpclientandroidlib/conn/ssl/BrowserCompatHostnameVerifier.java
ch/boye/httpclientandroidlib/conn/ssl/SSLSocketFactory.java
ch/boye/httpclientandroidlib/conn/ssl/StrictHostnameVerifier.java
ch/boye/httpclientandroidlib/conn/ssl/TrustManagerDecorator.java
ch/boye/httpclientandroidlib/conn/ssl/TrustSelfSignedStrategy.java
ch/boye/httpclientandroidlib/conn/ssl/TrustStrategy.java
ch/boye/httpclientandroidlib/conn/ssl/X509HostnameVerifier.java
ch/boye/httpclientandroidlib/conn/util/InetAddressUtils.java
ch/boye/httpclientandroidlib/ConnectionClosedException.java
ch/boye/httpclientandroidlib/ConnectionReuseStrategy.java
ch/boye/httpclientandroidlib/cookie/ClientCookie.java
ch/boye/httpclientandroidlib/cookie/Cookie.java
ch/boye/httpclientandroidlib/cookie/CookieAttributeHandler.java
ch/boye/httpclientandroidlib/cookie/CookieIdentityComparator.java
ch/boye/httpclientandroidlib/cookie/CookieOrigin.java
ch/boye/httpclientandroidlib/cookie/CookiePathComparator.java
ch/boye/httpclientandroidlib/cookie/CookieRestrictionViolationException.java
ch/boye/httpclientandroidlib/cookie/CookieSpec.java
ch/boye/httpclientandroidlib/cookie/CookieSpecFactory.java
ch/boye/httpclientandroidlib/cookie/CookieSpecRegistry.java
ch/boye/httpclientandroidlib/cookie/MalformedCookieException.java
ch/boye/httpclientandroidlib/cookie/params/CookieSpecParamBean.java
ch/boye/httpclientandroidlib/cookie/params/CookieSpecPNames.java
ch/boye/httpclientandroidlib/cookie/SetCookie.java
ch/boye/httpclientandroidlib/cookie/SetCookie2.java
ch/boye/httpclientandroidlib/cookie/SM.java
ch/boye/httpclientandroidlib/entity/AbstractHttpEntity.java
ch/boye/httpclientandroidlib/entity/BasicHttpEntity.java
ch/boye/httpclientandroidlib/entity/BufferedHttpEntity.java
ch/boye/httpclientandroidlib/entity/ByteArrayEntity.java
ch/boye/httpclientandroidlib/entity/ContentLengthStrategy.java
ch/boye/httpclientandroidlib/entity/ContentProducer.java
ch/boye/httpclientandroidlib/entity/EntityTemplate.java
ch/boye/httpclientandroidlib/entity/FileEntity.java
ch/boye/httpclientandroidlib/entity/HttpEntityWrapper.java
ch/boye/httpclientandroidlib/entity/InputStreamEntity.java
ch/boye/httpclientandroidlib/entity/SerializableEntity.java
ch/boye/httpclientandroidlib/entity/StringEntity.java
ch/boye/httpclientandroidlib/FormattedHeader.java
ch/boye/httpclientandroidlib/Header.java
ch/boye/httpclientandroidlib/HeaderElement.java
ch/boye/httpclientandroidlib/HeaderElementIterator.java
ch/boye/httpclientandroidlib/HeaderIterator.java
ch/boye/httpclientandroidlib/HttpClientConnection.java
ch/boye/httpclientandroidlib/HttpConnection.java
ch/boye/httpclientandroidlib/HttpConnectionMetrics.java
ch/boye/httpclientandroidlib/HttpEntity.java
ch/boye/httpclientandroidlib/HttpEntityEnclosingRequest.java
ch/boye/httpclientandroidlib/HttpException.java
ch/boye/httpclientandroidlib/HttpHeaders.java
ch/boye/httpclientandroidlib/HttpHost.java
ch/boye/httpclientandroidlib/HttpInetConnection.java
ch/boye/httpclientandroidlib/HttpMessage.java
ch/boye/httpclientandroidlib/HttpRequest.java
ch/boye/httpclientandroidlib/HttpRequestFactory.java
ch/boye/httpclientandroidlib/HttpRequestInterceptor.java
ch/boye/httpclientandroidlib/HttpResponse.java
ch/boye/httpclientandroidlib/HttpResponseFactory.java
ch/boye/httpclientandroidlib/HttpResponseInterceptor.java
ch/boye/httpclientandroidlib/HttpServerConnection.java
ch/boye/httpclientandroidlib/HttpStatus.java
ch/boye/httpclientandroidlib/HttpVersion.java
ch/boye/httpclientandroidlib/impl/AbstractHttpClientConnection.java
ch/boye/httpclientandroidlib/impl/AbstractHttpServerConnection.java
ch/boye/httpclientandroidlib/impl/auth/AuthSchemeBase.java
ch/boye/httpclientandroidlib/impl/auth/BasicScheme.java
ch/boye/httpclientandroidlib/impl/auth/BasicSchemeFactory.java
ch/boye/httpclientandroidlib/impl/auth/DigestScheme.java
ch/boye/httpclientandroidlib/impl/auth/DigestSchemeFactory.java
ch/boye/httpclientandroidlib/impl/auth/NTLMEngine.java
ch/boye/httpclientandroidlib/impl/auth/NTLMEngineException.java
ch/boye/httpclientandroidlib/impl/auth/NTLMEngineImpl.java
ch/boye/httpclientandroidlib/impl/auth/NTLMScheme.java
ch/boye/httpclientandroidlib/impl/auth/NTLMSchemeFactory.java
ch/boye/httpclientandroidlib/impl/auth/RFC2617Scheme.java
ch/boye/httpclientandroidlib/impl/auth/SpnegoTokenGenerator.java
ch/boye/httpclientandroidlib/impl/auth/UnsupportedDigestAlgorithmException.java
ch/boye/httpclientandroidlib/impl/client/AbstractAuthenticationHandler.java
ch/boye/httpclientandroidlib/impl/client/AbstractHttpClient.java
ch/boye/httpclientandroidlib/impl/client/BasicAuthCache.java
ch/boye/httpclientandroidlib/impl/client/BasicCookieStore.java
ch/boye/httpclientandroidlib/impl/client/BasicCredentialsProvider.java
ch/boye/httpclientandroidlib/impl/client/BasicResponseHandler.java
ch/boye/httpclientandroidlib/impl/client/ClientParamsStack.java
ch/boye/httpclientandroidlib/impl/client/ContentEncodingHttpClient.java
ch/boye/httpclientandroidlib/impl/client/DefaultConnectionKeepAliveStrategy.java
ch/boye/httpclientandroidlib/impl/client/DefaultHttpClient.java
ch/boye/httpclientandroidlib/impl/client/DefaultHttpRequestRetryHandler.java
ch/boye/httpclientandroidlib/impl/client/DefaultProxyAuthenticationHandler.java
ch/boye/httpclientandroidlib/impl/client/DefaultRedirectHandler.java
ch/boye/httpclientandroidlib/impl/client/DefaultRedirectStrategy.java
ch/boye/httpclientandroidlib/impl/client/DefaultRedirectStrategyAdaptor.java
ch/boye/httpclientandroidlib/impl/client/DefaultRequestDirector.java
ch/boye/httpclientandroidlib/impl/client/DefaultTargetAuthenticationHandler.java
ch/boye/httpclientandroidlib/impl/client/DefaultUserTokenHandler.java
ch/boye/httpclientandroidlib/impl/client/EntityEnclosingRequestWrapper.java
ch/boye/httpclientandroidlib/impl/client/RedirectLocations.java
ch/boye/httpclientandroidlib/impl/client/RequestWrapper.java
ch/boye/httpclientandroidlib/impl/client/RoutedRequest.java
ch/boye/httpclientandroidlib/impl/client/TunnelRefusedException.java
ch/boye/httpclientandroidlib/impl/conn/AbstractClientConnAdapter.java
ch/boye/httpclientandroidlib/impl/conn/AbstractPooledConnAdapter.java
ch/boye/httpclientandroidlib/impl/conn/AbstractPoolEntry.java
ch/boye/httpclientandroidlib/impl/conn/ConnectionShutdownException.java
ch/boye/httpclientandroidlib/impl/conn/DefaultClientConnection.java
ch/boye/httpclientandroidlib/impl/conn/DefaultClientConnectionOperator.java
ch/boye/httpclientandroidlib/impl/conn/DefaultHttpRoutePlanner.java
ch/boye/httpclientandroidlib/impl/conn/DefaultResponseParser.java
ch/boye/httpclientandroidlib/impl/conn/HttpInetSocketAddress.java
ch/boye/httpclientandroidlib/impl/conn/IdleConnectionHandler.java
ch/boye/httpclientandroidlib/impl/conn/LoggingSessionInputBuffer.java
ch/boye/httpclientandroidlib/impl/conn/LoggingSessionOutputBuffer.java
ch/boye/httpclientandroidlib/impl/conn/ProxySelectorRoutePlanner.java
ch/boye/httpclientandroidlib/impl/conn/SchemeRegistryFactory.java
ch/boye/httpclientandroidlib/impl/conn/SingleClientConnManager.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/AbstractConnPool.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/BasicPooledConnAdapter.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/BasicPoolEntry.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/BasicPoolEntryRef.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/ConnPoolByRoute.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/PoolEntryRequest.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/RefQueueHandler.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/RefQueueWorker.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/RouteSpecificPool.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/ThreadSafeClientConnManager.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/WaitingThread.java
ch/boye/httpclientandroidlib/impl/conn/tsccm/WaitingThreadAborter.java
ch/boye/httpclientandroidlib/impl/conn/Wire.java
ch/boye/httpclientandroidlib/impl/cookie/AbstractCookieAttributeHandler.java
ch/boye/httpclientandroidlib/impl/cookie/AbstractCookieSpec.java
ch/boye/httpclientandroidlib/impl/cookie/BasicClientCookie.java
ch/boye/httpclientandroidlib/impl/cookie/BasicClientCookie2.java
ch/boye/httpclientandroidlib/impl/cookie/BasicCommentHandler.java
ch/boye/httpclientandroidlib/impl/cookie/BasicDomainHandler.java
ch/boye/httpclientandroidlib/impl/cookie/BasicExpiresHandler.java
ch/boye/httpclientandroidlib/impl/cookie/BasicMaxAgeHandler.java
ch/boye/httpclientandroidlib/impl/cookie/BasicPathHandler.java
ch/boye/httpclientandroidlib/impl/cookie/BasicSecureHandler.java
ch/boye/httpclientandroidlib/impl/cookie/BestMatchSpec.java
ch/boye/httpclientandroidlib/impl/cookie/BestMatchSpecFactory.java
ch/boye/httpclientandroidlib/impl/cookie/BrowserCompatSpec.java
ch/boye/httpclientandroidlib/impl/cookie/BrowserCompatSpecFactory.java
ch/boye/httpclientandroidlib/impl/cookie/CookieSpecBase.java
ch/boye/httpclientandroidlib/impl/cookie/DateParseException.java
ch/boye/httpclientandroidlib/impl/cookie/DateUtils.java
ch/boye/httpclientandroidlib/impl/cookie/IgnoreSpec.java
ch/boye/httpclientandroidlib/impl/cookie/IgnoreSpecFactory.java
ch/boye/httpclientandroidlib/impl/cookie/NetscapeDomainHandler.java
ch/boye/httpclientandroidlib/impl/cookie/NetscapeDraftHeaderParser.java
ch/boye/httpclientandroidlib/impl/cookie/NetscapeDraftSpec.java
ch/boye/httpclientandroidlib/impl/cookie/NetscapeDraftSpecFactory.java
ch/boye/httpclientandroidlib/impl/cookie/PublicSuffixFilter.java
ch/boye/httpclientandroidlib/impl/cookie/PublicSuffixListParser.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2109DomainHandler.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2109Spec.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2109SpecFactory.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2109VersionHandler.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965CommentUrlAttributeHandler.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965DiscardAttributeHandler.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965DomainAttributeHandler.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965PortAttributeHandler.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965Spec.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965SpecFactory.java
ch/boye/httpclientandroidlib/impl/cookie/RFC2965VersionAttributeHandler.java
ch/boye/httpclientandroidlib/impl/DefaultConnectionReuseStrategy.java
ch/boye/httpclientandroidlib/impl/DefaultHttpClientConnection.java
ch/boye/httpclientandroidlib/impl/DefaultHttpRequestFactory.java
ch/boye/httpclientandroidlib/impl/DefaultHttpResponseFactory.java
ch/boye/httpclientandroidlib/impl/DefaultHttpServerConnection.java
ch/boye/httpclientandroidlib/impl/EnglishReasonPhraseCatalog.java
ch/boye/httpclientandroidlib/impl/entity/EntityDeserializer.java
ch/boye/httpclientandroidlib/impl/entity/EntitySerializer.java
ch/boye/httpclientandroidlib/impl/entity/LaxContentLengthStrategy.java
ch/boye/httpclientandroidlib/impl/entity/StrictContentLengthStrategy.java
ch/boye/httpclientandroidlib/impl/HttpConnectionMetricsImpl.java
ch/boye/httpclientandroidlib/impl/io/AbstractMessageParser.java
ch/boye/httpclientandroidlib/impl/io/AbstractMessageWriter.java
ch/boye/httpclientandroidlib/impl/io/AbstractSessionInputBuffer.java
ch/boye/httpclientandroidlib/impl/io/AbstractSessionOutputBuffer.java
ch/boye/httpclientandroidlib/impl/io/ChunkedInputStream.java
ch/boye/httpclientandroidlib/impl/io/ChunkedOutputStream.java
ch/boye/httpclientandroidlib/impl/io/ContentLengthInputStream.java
ch/boye/httpclientandroidlib/impl/io/ContentLengthOutputStream.java
ch/boye/httpclientandroidlib/impl/io/HttpRequestParser.java
ch/boye/httpclientandroidlib/impl/io/HttpRequestWriter.java
ch/boye/httpclientandroidlib/impl/io/HttpResponseParser.java
ch/boye/httpclientandroidlib/impl/io/HttpResponseWriter.java
ch/boye/httpclientandroidlib/impl/io/HttpTransportMetricsImpl.java
ch/boye/httpclientandroidlib/impl/io/IdentityInputStream.java
ch/boye/httpclientandroidlib/impl/io/IdentityOutputStream.java
ch/boye/httpclientandroidlib/impl/io/SocketInputBuffer.java
ch/boye/httpclientandroidlib/impl/io/SocketOutputBuffer.java
ch/boye/httpclientandroidlib/impl/NoConnectionReuseStrategy.java
ch/boye/httpclientandroidlib/impl/SocketHttpClientConnection.java
ch/boye/httpclientandroidlib/impl/SocketHttpServerConnection.java
ch/boye/httpclientandroidlib/io/BufferInfo.java
ch/boye/httpclientandroidlib/io/EofSensor.java
ch/boye/httpclientandroidlib/io/HttpMessageParser.java
ch/boye/httpclientandroidlib/io/HttpMessageWriter.java
ch/boye/httpclientandroidlib/io/HttpTransportMetrics.java
ch/boye/httpclientandroidlib/io/SessionInputBuffer.java
ch/boye/httpclientandroidlib/io/SessionOutputBuffer.java
ch/boye/httpclientandroidlib/MalformedChunkCodingException.java
ch/boye/httpclientandroidlib/message/AbstractHttpMessage.java
ch/boye/httpclientandroidlib/message/BasicHeader.java
ch/boye/httpclientandroidlib/message/BasicHeaderElement.java
ch/boye/httpclientandroidlib/message/BasicHeaderElementIterator.java
ch/boye/httpclientandroidlib/message/BasicHeaderIterator.java
ch/boye/httpclientandroidlib/message/BasicHeaderValueFormatter.java
ch/boye/httpclientandroidlib/message/BasicHeaderValueParser.java
ch/boye/httpclientandroidlib/message/BasicHttpEntityEnclosingRequest.java
ch/boye/httpclientandroidlib/message/BasicHttpRequest.java
ch/boye/httpclientandroidlib/message/BasicHttpResponse.java
ch/boye/httpclientandroidlib/message/BasicLineFormatter.java
ch/boye/httpclientandroidlib/message/BasicLineParser.java
ch/boye/httpclientandroidlib/message/BasicListHeaderIterator.java
ch/boye/httpclientandroidlib/message/BasicNameValuePair.java
ch/boye/httpclientandroidlib/message/BasicRequestLine.java
ch/boye/httpclientandroidlib/message/BasicStatusLine.java
ch/boye/httpclientandroidlib/message/BasicTokenIterator.java
ch/boye/httpclientandroidlib/message/BufferedHeader.java
ch/boye/httpclientandroidlib/message/HeaderGroup.java
ch/boye/httpclientandroidlib/message/HeaderValueFormatter.java
ch/boye/httpclientandroidlib/message/HeaderValueParser.java
ch/boye/httpclientandroidlib/message/LineFormatter.java
ch/boye/httpclientandroidlib/message/LineParser.java
ch/boye/httpclientandroidlib/message/ParserCursor.java
ch/boye/httpclientandroidlib/MethodNotSupportedException.java
ch/boye/httpclientandroidlib/NameValuePair.java
ch/boye/httpclientandroidlib/NoHttpResponseException.java
ch/boye/httpclientandroidlib/params/AbstractHttpParams.java
ch/boye/httpclientandroidlib/params/BasicHttpParams.java
ch/boye/httpclientandroidlib/params/CoreConnectionPNames.java
ch/boye/httpclientandroidlib/params/CoreProtocolPNames.java
ch/boye/httpclientandroidlib/params/DefaultedHttpParams.java
ch/boye/httpclientandroidlib/params/HttpAbstractParamBean.java
ch/boye/httpclientandroidlib/params/HttpConnectionParamBean.java
ch/boye/httpclientandroidlib/params/HttpConnectionParams.java
ch/boye/httpclientandroidlib/params/HttpParams.java
ch/boye/httpclientandroidlib/params/HttpProtocolParamBean.java
ch/boye/httpclientandroidlib/params/HttpProtocolParams.java
ch/boye/httpclientandroidlib/params/SyncBasicHttpParams.java
ch/boye/httpclientandroidlib/ParseException.java
ch/boye/httpclientandroidlib/protocol/BasicHttpContext.java
ch/boye/httpclientandroidlib/protocol/BasicHttpProcessor.java
ch/boye/httpclientandroidlib/protocol/DefaultedHttpContext.java
ch/boye/httpclientandroidlib/protocol/ExecutionContext.java
ch/boye/httpclientandroidlib/protocol/HTTP.java
ch/boye/httpclientandroidlib/protocol/HttpContext.java
ch/boye/httpclientandroidlib/protocol/HttpDateGenerator.java
ch/boye/httpclientandroidlib/protocol/HttpExpectationVerifier.java
ch/boye/httpclientandroidlib/protocol/HttpProcessor.java
ch/boye/httpclientandroidlib/protocol/HttpRequestExecutor.java
ch/boye/httpclientandroidlib/protocol/HttpRequestHandler.java
ch/boye/httpclientandroidlib/protocol/HttpRequestHandlerRegistry.java
ch/boye/httpclientandroidlib/protocol/HttpRequestHandlerResolver.java
ch/boye/httpclientandroidlib/protocol/HttpRequestInterceptorList.java
ch/boye/httpclientandroidlib/protocol/HttpResponseInterceptorList.java
ch/boye/httpclientandroidlib/protocol/HttpService.java
ch/boye/httpclientandroidlib/protocol/ImmutableHttpProcessor.java
ch/boye/httpclientandroidlib/protocol/RequestConnControl.java
ch/boye/httpclientandroidlib/protocol/RequestContent.java
ch/boye/httpclientandroidlib/protocol/RequestDate.java
ch/boye/httpclientandroidlib/protocol/RequestExpectContinue.java
ch/boye/httpclientandroidlib/protocol/RequestTargetHost.java
ch/boye/httpclientandroidlib/protocol/RequestUserAgent.java
ch/boye/httpclientandroidlib/protocol/ResponseConnControl.java
ch/boye/httpclientandroidlib/protocol/ResponseContent.java
ch/boye/httpclientandroidlib/protocol/ResponseDate.java
ch/boye/httpclientandroidlib/protocol/ResponseServer.java
ch/boye/httpclientandroidlib/protocol/SyncBasicHttpContext.java
ch/boye/httpclientandroidlib/protocol/UriPatternMatcher.java
ch/boye/httpclientandroidlib/ProtocolException.java
ch/boye/httpclientandroidlib/ProtocolVersion.java
ch/boye/httpclientandroidlib/ReasonPhraseCatalog.java
ch/boye/httpclientandroidlib/RequestLine.java
ch/boye/httpclientandroidlib/StatusLine.java
ch/boye/httpclientandroidlib/TokenIterator.java
ch/boye/httpclientandroidlib/TruncatedChunkException.java
ch/boye/httpclientandroidlib/UnsupportedHttpVersionException.java
ch/boye/httpclientandroidlib/util/ByteArrayBuffer.java
ch/boye/httpclientandroidlib/util/CharArrayBuffer.java
ch/boye/httpclientandroidlib/util/EncodingUtils.java
ch/boye/httpclientandroidlib/util/EntityUtils.java
ch/boye/httpclientandroidlib/util/ExceptionUtils.java
ch/boye/httpclientandroidlib/util/LangUtils.java
ch/boye/httpclientandroidlib/util/VersionInfo.java
org/json/simple/ItemList.java
org/json/simple/JSONArray.java
org/json/simple/JSONAware.java
org/json/simple/JSONObject.java
org/json/simple/JSONStreamAware.java
org/json/simple/JSONValue.java
org/json/simple/parser/ContainerFactory.java
org/json/simple/parser/ContentHandler.java
org/json/simple/parser/JSONParser.java
org/json/simple/parser/ParseException.java
org/json/simple/parser/Yylex.java
org/json/simple/parser/Yytoken.java
org/mozilla/apache/commons/codec/binary/Base32.java
org/mozilla/apache/commons/codec/binary/Base32InputStream.java
org/mozilla/apache/commons/codec/binary/Base32OutputStream.java
org/mozilla/apache/commons/codec/binary/Base64.java
org/mozilla/apache/commons/codec/binary/Base64InputStream.java
org/mozilla/apache/commons/codec/binary/Base64OutputStream.java
org/mozilla/apache/commons/codec/binary/BaseNCodec.java
org/mozilla/apache/commons/codec/binary/BaseNCodecInputStream.java
org/mozilla/apache/commons/codec/binary/BaseNCodecOutputStream.java
org/mozilla/apache/commons/codec/binary/BinaryCodec.java
org/mozilla/apache/commons/codec/binary/Hex.java
org/mozilla/apache/commons/codec/binary/StringUtils.java
org/mozilla/apache/commons/codec/BinaryDecoder.java
org/mozilla/apache/commons/codec/BinaryEncoder.java
org/mozilla/apache/commons/codec/CharEncoding.java
org/mozilla/apache/commons/codec/Decoder.java
org/mozilla/apache/commons/codec/DecoderException.java
org/mozilla/apache/commons/codec/digest/DigestUtils.java
org/mozilla/apache/commons/codec/Encoder.java
org/mozilla/apache/commons/codec/EncoderException.java
org/mozilla/apache/commons/codec/language/AbstractCaverphone.java
org/mozilla/apache/commons/codec/language/Caverphone.java
org/mozilla/apache/commons/codec/language/Caverphone1.java
org/mozilla/apache/commons/codec/language/Caverphone2.java
org/mozilla/apache/commons/codec/language/ColognePhonetic.java
org/mozilla/apache/commons/codec/language/DoubleMetaphone.java
org/mozilla/apache/commons/codec/language/Metaphone.java
org/mozilla/apache/commons/codec/language/RefinedSoundex.java
org/mozilla/apache/commons/codec/language/Soundex.java
org/mozilla/apache/commons/codec/language/SoundexUtils.java
org/mozilla/apache/commons/codec/net/BCodec.java
org/mozilla/apache/commons/codec/net/QCodec.java
org/mozilla/apache/commons/codec/net/QuotedPrintableCodec.java
org/mozilla/apache/commons/codec/net/RFC1522Codec.java
org/mozilla/apache/commons/codec/net/URLCodec.java
org/mozilla/apache/commons/codec/net/Utils.java
org/mozilla/apache/commons/codec/StringDecoder.java
org/mozilla/apache/commons/codec/StringEncoder.java
org/mozilla/apache/commons/codec/StringEncoderComparator.java

View File

@ -1,4 +0,0 @@
background/common/GlobalConstants.java
sync/SyncConstants.java
background/announcements/AnnouncementsConstants.java
background/healthreport/HealthReportConstants.java

View File

@ -131,9 +131,9 @@ DownloadLegacyTransfer.prototype = {
aCurTotalProgress,
aMaxTotalProgress)
{
return onProgressChange64(aWebProgress, aRequest, aCurSelfProgress,
aMaxSelfProgress, aCurTotalProgress,
aMaxTotalProgress);
this.onProgressChange64(aWebProgress, aRequest, aCurSelfProgress,
aMaxSelfProgress, aCurTotalProgress,
aMaxTotalProgress);
},
onLocationChange: function () { },

View File

@ -222,6 +222,11 @@ static const char kIsGarbageCollectingParameter[] = "IsGarbageCollecting=";
static const int kIsGarbageCollectingParameterLen =
sizeof(kIsGarbageCollectingParameter)-1;
#ifdef XP_WIN
static const char kBlockedDllsParameter[] = "BlockedDllList=";
static const int kBlockedDllsParameterLen = sizeof(kBlockedDllsParameter) - 1;
#endif
// this holds additional data sent via the API
static Mutex* crashReporterAPILock;
static Mutex* notesFieldLock;
@ -540,6 +545,9 @@ bool MinidumpCallback(
WriteFile(hFile, isGarbageCollecting ? "1" : "0", 1, &nBytes, nullptr);
WriteFile(hFile, "\n", 1, &nBytes, nullptr);
}
WriteFile(hFile, kBlockedDllsParameter, kBlockedDllsParameterLen, &nBytes, nullptr);
WriteBlockedDlls(hFile);
WriteFile(hFile, "\n", 1, &nBytes, nullptr);
// Try to get some information about memory.
MEMORYSTATUSEX statex;

View File

@ -44,6 +44,11 @@ nsresult AppendAppNotesToCrashReport(const nsACString& data);
nsresult SetGarbageCollecting(bool collecting);
#ifdef XP_WIN
// Implemented by the blocklist, this method writes the blocklist annotation
void WriteBlockedDlls(HANDLE file);
#endif
nsresult SetRestartArgs(int argc, char** argv);
nsresult SetupExtraData(nsIFile* aAppDataDirectory,
const nsACString& aBuildID);

View File

@ -89,7 +89,7 @@ ifdef MOZ_B2G_RIL #{
STATIC_LIBS += mozril_s
endif #}
ifdef MOZ_B2G_BT_BLUEZ #{
ifdef MOZ_B2G_BT #{
STATIC_LIBS += mozdbus_s
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
OS_LIBS += -ldbus

View File

@ -20,10 +20,11 @@
#include "nsWindowsDllInterceptor.h"
#include "mozilla/WindowsVersion.h"
#include "nsWindowsHelpers.h"
using namespace mozilla;
#if defined(MOZ_CRASHREPORTER) && !defined(NO_BLOCKLIST_CRASHREPORTER)
#ifdef MOZ_CRASHREPORTER
#include "nsExceptionHandler.h"
#endif
@ -138,6 +139,10 @@ static DllBlockInfo sWindowsDllBlocklist[] = {
// bug 925459, bitguard crashes
{ "bitguard.dll", MAKE_VERSION(2, 6, 1694, 24) },
// bug 812683 - crashes in Windows library when Asus Gamer OSD is installed
// Software is discontinued/unsupported
{ "atkdx11disp.dll", ALL_VERSIONS },
{ nullptr, 0 }
};
@ -220,6 +225,10 @@ CheckASLR(const wchar_t* path)
return retval;
}
// This lock protects both the reentrancy sentinel and the crash reporter
// data structures.
static CRITICAL_SECTION sLock;
/**
* Some versions of Windows call LoadLibraryEx to get the version information
* for a DLL, which causes our patched LdrLoadDll implementation to re-enter
@ -236,22 +245,20 @@ public:
explicit ReentrancySentinel(const char* dllName)
{
DWORD currentThreadId = GetCurrentThreadId();
EnterCriticalSection(&sLock);
AutoCriticalSection lock(&sLock);
mPreviousDllName = (*sThreadMap)[currentThreadId];
// If there is a DLL currently being loaded and it has the same name
// as the current attempt, we're re-entering.
mReentered = mPreviousDllName && !stricmp(mPreviousDllName, dllName);
(*sThreadMap)[currentThreadId] = dllName;
LeaveCriticalSection(&sLock);
}
~ReentrancySentinel()
{
DWORD currentThreadId = GetCurrentThreadId();
EnterCriticalSection(&sLock);
AutoCriticalSection lock(&sLock);
(*sThreadMap)[currentThreadId] = mPreviousDllName;
LeaveCriticalSection(&sLock);
}
bool BailOut() const
@ -266,16 +273,94 @@ public:
}
private:
static CRITICAL_SECTION sLock;
static std::map<DWORD, const char*>* sThreadMap;
const char* mPreviousDllName;
bool mReentered;
};
CRITICAL_SECTION ReentrancySentinel::sLock;
std::map<DWORD, const char*>* ReentrancySentinel::sThreadMap;
/**
* This is a linked list of DLLs that have been blocked. It doesn't use
* mozilla::LinkedList because this is an append-only list and doesn't need
* to be doubly linked.
*/
class DllBlockSet
{
public:
static void Add(const char* name, unsigned long long version);
// Write the list of blocked DLLs to a file HANDLE. This method is run after
// a crash occurs and must therefore not use the heap, etc.
static void Write(HANDLE file);
private:
DllBlockSet(const char* name, unsigned long long version)
: mName(name)
, mVersion(version)
, mNext(nullptr)
{
}
const char* mName; // points into the sWindowsDllBlocklist string
unsigned long long mVersion;
DllBlockSet* mNext;
static DllBlockSet* gFirst;
};
DllBlockSet* DllBlockSet::gFirst;
void
DllBlockSet::Add(const char* name, unsigned long long version)
{
AutoCriticalSection lock(&sLock);
for (DllBlockSet* b = gFirst; b; b = b->mNext) {
if (0 == strcmp(b->mName, name) && b->mVersion == version) {
return;
}
}
// Not already present
DllBlockSet* n = new DllBlockSet(name, version);
n->mNext = gFirst;
gFirst = n;
}
void
DllBlockSet::Write(HANDLE file)
{
AutoCriticalSection lock(&sLock);
DWORD nBytes;
// Because this method is called after a crash occurs, and uses heap memory,
// protect this entire block with a structured exception handler.
__try {
for (DllBlockSet* b = gFirst; b; b = b->mNext) {
// write name[,v.v.v.v];
WriteFile(file, b->mName, strlen(b->mName), &nBytes, nullptr);
if (b->mVersion != -1) {
WriteFile(file, ",", 1, &nBytes, nullptr);
uint16_t parts[4];
parts[0] = b->mVersion >> 48;
parts[1] = (b->mVersion >> 32) & 0xFFFF;
parts[2] = (b->mVersion >> 16) & 0xFFFF;
parts[3] = b->mVersion & 0xFFFF;
for (int p = 0; p < 4; ++p) {
char buf[32];
ltoa(parts[p], buf, 10);
WriteFile(file, buf, strlen(buf), &nBytes, nullptr);
if (p != 3) {
WriteFile(file, ".", 1, &nBytes, nullptr);
}
}
}
WriteFile(file, ";", 1, &nBytes, nullptr);
}
}
__except (EXCEPTION_EXECUTE_HANDLER) { }
}
static
wchar_t* getFullPath (PWCHAR filePath, wchar_t* fname)
{
@ -304,6 +389,17 @@ wchar_t* getFullPath (PWCHAR filePath, wchar_t* fname)
return full_fname;
}
// No builtin function to find the last character matching a set
static wchar_t* lastslash(wchar_t* s, int len)
{
for (wchar_t* c = s + len - 1; c >= s; --c) {
if (*c == L'\\' || *c == L'/') {
return c;
}
}
return nullptr;
}
static NTSTATUS NTAPI
patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileName, PHANDLE handle)
{
@ -330,7 +426,7 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
goto continue_loading;
}
dll_part = wcsrchr(fname, L'\\');
dll_part = lastslash(fname, len);
if (dll_part) {
dll_part = dll_part + 1;
len -= dll_part - fname;
@ -396,6 +492,8 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
goto continue_loading;
}
unsigned long long fVersion = ALL_VERSIONS;
if (info->maxVersion != ALL_VERSIONS) {
ReentrancySentinel sentinel(dllName);
if (sentinel.BailOut()) {
@ -422,7 +520,7 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
if (GetFileVersionInfoW(full_fname, 0, infoSize, infoData) &&
VerQueryValueW(infoData, L"\\", (LPVOID*) &vInfo, &vInfoLen))
{
unsigned long long fVersion =
fVersion =
((unsigned long long)vInfo->dwFileVersionMS) << 32 |
((unsigned long long)vInfo->dwFileVersionLS);
@ -436,6 +534,7 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
if (!load_ok) {
printf_stderr("LdrLoadDll: Blocking load of '%s' -- see http://www.mozilla.com/en-US/blocklist/\n", dllName);
DllBlockSet::Add(info->name, fVersion);
return STATUS_DLL_NOT_FOUND;
}
}
@ -481,9 +580,17 @@ XRE_SetupDllBlocklist()
printf_stderr ("LdrLoadDll hook failed, no dll blocklisting active\n");
#endif
#if defined(MOZ_CRASHREPORTER) && !defined(NO_BLOCKLIST_CRASHREPORTER)
#ifdef MOZ_CRASHREPORTER
if (!ok) {
CrashReporter::AppendAppNotesToCrashReport(NS_LITERAL_CSTRING("DllBlockList Failed\n"));
}
#endif
}
#ifdef MOZ_CRASHREPORTER
void
CrashReporter::WriteBlockedDlls(HANDLE file)
{
DllBlockSet::Write(file);
}
#endif

View File

@ -9,6 +9,26 @@
#include "nsAutoRef.h"
#include "nscore.h"
// ----------------------------------------------------------------------------
// Critical Section helper class
// ----------------------------------------------------------------------------
class AutoCriticalSection
{
public:
AutoCriticalSection(LPCRITICAL_SECTION section)
: mSection(section)
{
::EnterCriticalSection(mSection);
}
~AutoCriticalSection()
{
::LeaveCriticalSection(mSection);
}
private:
LPCRITICAL_SECTION mSection;
};
template<>
class nsAutoRefTraits<HKEY>
{

View File

@ -14,6 +14,7 @@
#include "mozilla/MathAlgorithms.h"
#include "mozilla/Mutex.h"
#include "mozilla/TimeStamp.h"
#include "nsWindowsHelpers.h"
#include <windows.h>
#include "nsCRT.h"
@ -185,26 +186,6 @@ namespace mozilla {
typedef ULONGLONG (WINAPI* GetTickCount64_t)();
static GetTickCount64_t sGetTickCount64 = nullptr;
// ----------------------------------------------------------------------------
// Critical Section helper class
// ----------------------------------------------------------------------------
class AutoCriticalSection
{
public:
AutoCriticalSection(LPCRITICAL_SECTION section)
: mSection(section)
{
::EnterCriticalSection(mSection);
}
~AutoCriticalSection()
{
::LeaveCriticalSection(mSection);
}
private:
LPCRITICAL_SECTION mSection;
};
// Function protecting GetTickCount result from rolling over,
// result is in [ms]
static ULONGLONG WINAPI