merge fx-team to mozilla-central a=merge

This commit is contained in:
Carsten "Tomcat" Book 2015-11-03 11:59:08 +01:00
commit 175bd20c82
69 changed files with 486 additions and 367 deletions

View File

@ -356,11 +356,11 @@ loop.store = loop.store || {};
switch (providerOrigin) {
case "mail.google.com":
shareTitle = mozL10n.get("share_email_subject6");
shareBody = mozL10n.get("share_email_body6", {
shareTitle = mozL10n.get("share_email_subject7");
shareBody = mozL10n.get("share_email_body7", {
callUrl: actionData.roomUrl
});
shareBody += mozL10n.get("share_email_footer");
shareBody += mozL10n.get("share_email_footer2");
break;
case "twitter.com":
default:

View File

@ -268,10 +268,18 @@ loop.roomViews = (function(mozL10n) {
var roomData = this.props.roomData;
var contextURL = roomData.roomContextUrls && roomData.roomContextUrls[0];
if (contextURL) {
if (contextURL.location === null) {
contextURL = undefined;
} else {
contextURL = sharedUtils.formatURL(contextURL.location).hostname;
}
}
this.props.dispatcher.dispatch(
new sharedActions.EmailRoomUrl({
roomUrl: roomData.roomUrl,
roomDescription: contextURL && contextURL.description,
roomDescription: contextURL,
from: "conversation"
}));
},

View File

@ -268,10 +268,18 @@ loop.roomViews = (function(mozL10n) {
var roomData = this.props.roomData;
var contextURL = roomData.roomContextUrls && roomData.roomContextUrls[0];
if (contextURL) {
if (contextURL.location === null) {
contextURL = undefined;
} else {
contextURL = sharedUtils.formatURL(contextURL.location).hostname;
}
}
this.props.dispatcher.dispatch(
new sharedActions.EmailRoomUrl({
roomUrl: roomData.roomUrl,
roomDescription: contextURL && contextURL.description,
roomDescription: contextURL,
from: "conversation"
}));
},

View File

@ -391,17 +391,16 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
}
var subject, body;
var footer = mozL10n.get("share_email_footer");
var footer = mozL10n.get("share_email_footer2");
if (contextDescription) {
subject = mozL10n.get("share_email_subject6");
body = mozL10n.get("share_email_body_context2", {
subject = mozL10n.get("share_email_subject7");
body = mozL10n.get("share_email_body_context3", {
callUrl: callUrl,
title: contextDescription
});
} else {
subject = mozL10n.get("share_email_subject6");
body = mozL10n.get("share_email_body6", {
subject = mozL10n.get("share_email_subject7");
body = mozL10n.get("share_email_body7", {
callUrl: callUrl
});
}

View File

@ -553,7 +553,7 @@ describe("loop.store.RoomStore", function() {
sinon.assert.calledOnce(fakeMozLoop.socialShareRoom);
sinon.assert.calledWithExactly(fakeMozLoop.socialShareRoom, origin,
roomUrl, "share_email_subject6", "share_email_body6" + "share_email_footer");
roomUrl, "share_email_subject7", "share_email_body7" + "share_email_footer2");
});
it("should pass the correct data for all other Social Providers", function() {

View File

@ -212,7 +212,8 @@ describe("loop.roomViews", function() {
React.createElement(loop.roomViews.DesktopRoomInvitationView, props));
}
it("should dispatch an EmailRoomUrl action when the email button is pressed",
it("should dispatch an EmailRoomUrl with no description" +
" for rooms without context when the email button is pressed",
function() {
view = mountTestComponent({
roomData: { roomUrl: "http://invalid" }
@ -231,14 +232,13 @@ describe("loop.roomViews", function() {
}));
});
it("should dispatch a different EmailRoomUrl action for rooms with context",
it("should dispatch an EmailRoomUrl with a domain name description for rooms with context",
function() {
var url = "http://invalid";
var description = "Hello, is it me you're looking for?";
view = mountTestComponent({
roomData: {
roomUrl: url,
roomContextUrls: [{ description: description }]
roomContextUrls: [{ location: "http://www.mozilla.com/" }]
}
});
@ -250,7 +250,7 @@ describe("loop.roomViews", function() {
sinon.assert.calledWith(dispatcher.dispatch,
new sharedActions.EmailRoomUrl({
roomUrl: url,
roomDescription: description,
roomDescription: "www.mozilla.com",
from: "conversation"
}));
});

View File

@ -322,13 +322,13 @@ describe("loop.shared.utils", function() {
// fake mozL10n
sandbox.stub(navigator.mozL10n, "get", function(id) {
switch (id) {
case "share_email_subject6":
case "share_email_subject7":
return "subject";
case "share_email_body6":
case "share_email_body7":
return "body";
case "share_email_body_context2":
case "share_email_body_context3":
return "body_context";
case "share_email_footer":
case "share_email_footer2":
return "footer";
}
});

View File

@ -647,6 +647,7 @@ BrowserGlue.prototype = {
ExtensionManagement.registerScript("chrome://browser/content/ext-bookmarks.js");
this._flashHangCount = 0;
this._firstWindowReady = new Promise(resolve => this._firstWindowLoaded = resolve);
},
// cleanup (called on application shutdown)
@ -1145,6 +1146,7 @@ BrowserGlue.prototype = {
this._checkForOldBuildUpdates();
this._firstWindowTelemetry(aWindow);
this._firstWindowLoaded();
},
/**
@ -2213,7 +2215,7 @@ BrowserGlue.prototype = {
}
if (currentUIVersion < 32) {
this._notifyNotificationsUpgrade();
this._notifyNotificationsUpgrade().catch(Cu.reportError);
}
// Update the migration version.
@ -2231,10 +2233,11 @@ BrowserGlue.prototype = {
return false;
},
_notifyNotificationsUpgrade: function BG__notifyNotificationsUpgrade() {
_notifyNotificationsUpgrade: Task.async(function* () {
if (!this._hasExistingNotificationPermission()) {
return;
}
yield this._firstWindowReady;
function clickCallback(subject, topic, data) {
if (topic != "alertclickcallback")
return;
@ -2243,17 +2246,12 @@ BrowserGlue.prototype = {
}
let imageURL = "chrome://browser/skin/web-notifications-icon.svg";
let title = gBrowserBundle.GetStringFromName("webNotifications.upgradeTitle");
let text = gBrowserBundle.GetStringFromName("webNotifications.upgradeInfo");
let text = gBrowserBundle.GetStringFromName("webNotifications.upgradeBody");
let url = Services.urlFormatter.formatURLPref("browser.push.warning.migrationURL");
try {
AlertsService.showAlertNotification(imageURL, title, text,
true, url, clickCallback);
}
catch (e) {
Cu.reportError(e);
}
},
AlertsService.showAlertNotification(imageURL, title, text,
true, url, clickCallback);
}),
// ------------------------------
// public nsIBrowserGlue members

View File

@ -384,8 +384,8 @@ webNotifications.neverShow.accesskey=N
webNotifications.receiveFromSite=Would you like to receive notifications from this site?
# LOCALIZATION NOTE (webNotifications.upgradeTitle): When using native notifications on OS X, the title may be truncated around 32 characters.
webNotifications.upgradeTitle=Upgraded notifications
# LOCALIZATION NOTE (webNotifications.upgradeInfo): When using native notifications on OS X, the body may be truncated around 100 characters in some views.
webNotifications.upgradeInfo=You will receive notifications from sites, even those not open in a tab. Click to learn more.
# LOCALIZATION NOTE (webNotifications.upgradeBody): When using native notifications on OS X, the body may be truncated around 100 characters in some views.
webNotifications.upgradeBody=You can now receive notifications from sites that are not currently loaded. Click to learn more.
# Pointer lock UI

View File

@ -27,4 +27,3 @@ validator.accessFailedLaunchPath=Unable to access the app starting document '%S'
# LOCALIZATION NOTE (validator.accessFailedLaunchPathBadHttpCode): %1$S is the URI of
# the launch document, %2$S is the http error code.
validator.accessFailedLaunchPathBadHttpCode=Unable to access the app starting document '%1$S', got HTTP code %2$S

View File

@ -75,6 +75,9 @@
<!ENTITY key_zoomin2 "=">
<!ENTITY key_zoomout "-">
<!ENTITY key_resetzoom "0">
<!-- reload WebIDE and devtools from local checkout -->
<!-- this binding is with accel+alt, whereas all others are just accel -->
<!ENTITY key_reload_devtools "R">
<!ENTITY projectPanel_myProjects "My Projects">
<!ENTITY projectPanel_runtimeApps "Runtime Apps">

View File

@ -59,15 +59,15 @@ problem_accessing_account=There Was A Problem Accessing Your Account
## the appropriate action.
retry_button=Retry
share_email_subject6=Join me for a video conversation
## LOCALIZATION NOTE (share_email_body6): In this item, don't translate the
share_email_subject7=Your invitation to browse the Web together
## LOCALIZATION NOTE (share_email_body7): In this item, don't translate the
## part between {{..}} and leave the \n\n part alone
share_email_body6=Click the Firefox Hello link to connect to the conversation now: {{callUrl}}
## LOCALIZATION NOTE (share_email_body_context2): In this item, don't translate
share_email_body7=A friend is waiting for you on Firefox Hello. Click the link to connect and browse the Web together: {{callUrl}}
## LOCALIZATION NOTE (share_email_body_context3): In this item, don't translate
## the part between {{..}} and leave the \n\n part alone.
share_email_body_context2=Join me for a video conversation. Click the Firefox Hello link to connect now: {{callUrl}}\n\nLets talk about this during our conversation: {{title}}
## LOCALIZATION NOTE (share_email_footer): Common footer content for both email types
share_email_footer=\n\n________\nJoin and create video conversations free with Firefox Hello. Connect easily over video with anyone, anywhere. No downloads or registration. Learn more at http://www.firefox.com/hello
share_email_body_context3=A friend is waiting for you on Firefox Hello. Click the link to connect and browse {{title}} together: {{callUrl}}
## LOCALIZATION NOTE (share_email_footer2): Common footer content for both email types
share_email_footer2=\n\n____________\nFirefox Hello lets you browse the Web with your friends. Use it when you want to get things done: plan together, work together, laugh together. Learn more at http://www.firefox.com/hello
## LOCALIZATION NOTE (share_tweeet): In this item, don't translate the part
## between {{..}}. Please keep the text below 117 characters to make sure it fits
## in a tweet.
@ -216,6 +216,11 @@ no_conversations_start_message2=Start a new one!
# conversation window when the user edits context. It is a header to the edit
# section.
context_inroom_header=Let's Talk About…
# LOCALIZATION NOTE (context_inroom_label2): this string is followed by the
# title and domain of the website you are having a conversation about, displayed on a
# separate line. If this structure doesn't work for your locale, you might want
# to consider this as a stand-alone title. See example screenshot:
# https://bug1115342.bugzilla.mozilla.org/attachment.cgi?id=8563677
context_edit_name_placeholder=Conversation Name
context_edit_comments_placeholder=Comments
context_cancel_label=Cancel

View File

@ -1,4 +0,0 @@
{
// Extend from the shared list of defined globals for mochitests.
"extends": "../../../.eslintrc.mochitests"
}

View File

@ -1,7 +0,0 @@
[DEFAULT]
tags = devtools
skip-if = buildapp == 'b2g'
support-files =
validator/*
[test_app_validator.html]

View File

@ -322,9 +322,6 @@ devtools.jar:
skin/themes/images/arrow-e.png (themes/images/arrow-e.png)
skin/themes/images/arrow-e@2x.png (themes/images/arrow-e@2x.png)
skin/themes/projecteditor/projecteditor.css (themes/projecteditor/projecteditor.css)
skin/themes/app-manager/images/rocket.svg (themes/app-manager/images/rocket.svg)
skin/themes/app-manager/images/noise.png (themes/app-manager/images/noise.png)
skin/themes/app-manager/images/default-app-icon.png (themes/app-manager/images/default-app-icon.png)
skin/themes/images/search-clear-failed.svg (themes/images/search-clear-failed.svg)
skin/themes/images/search-clear-light.svg (themes/images/search-clear-light.svg)
skin/themes/images/search-clear-dark.svg (themes/images/search-clear-dark.svg)

View File

@ -9,7 +9,6 @@ include('../templates.mozbuild')
DIRS += [
'aboutdebugging/components',
'animationinspector',
'app-manager',
'canvasdebugger',
'commandline',
'debugger',

View File

@ -21,11 +21,6 @@ pref("devtools.errorconsole.enabled", false);
pref("devtools.toolbar.enabled", true);
pref("devtools.toolbar.visible", false);
// Enable the app manager
pref("devtools.appmanager.enabled", true);
pref("devtools.appmanager.lastTab", "help");
pref("devtools.appmanager.manifestEditor.enabled", true);
// Enable DevTools WebIDE by default
pref("devtools.webide.enabled", true);

View File

@ -24,6 +24,11 @@ html, body, #app, #memory-tool {
}
#memory-tool {
/**
* Flex: contains two children: .devtools-toolbar and #memory-tool-container,
* which need to be laid out vertically. The toolbar has a fixed height and
* the container needs to flex to fill out all remaining vertical space.
*/
display: flex;
flex-direction: column;
--sidebar-width: 185px;
@ -35,67 +40,85 @@ html, body, #app, #memory-tool {
--heap-tree-header-height: 17px;
}
#memory-tool .devtools-toolbar {
display: flex;
align-items: center;
}
.devtools-toolbar .toolbar-group {
position: absolute;
left: var(--sidebar-width);
top: -2px;
white-space: nowrap;
}
.toolbar-group > label {
margin-right: 5px;
}
.toolbar-group .breakdown-by span {
margin-right: 5px;
}
#memory-tool-container {
overflow: hidden;
display: flex;
flex: 1;
}
/**
* Toolbar
*/
.devtools-toolbar .devtools-button.take-snapshot {
-moz-appearance: none;
margin-inline-start: 1px;
margin-inline-end: 1px;
.devtools-toolbar {
/**
* Flex: contains several children, which need to be laid out horizontally,
* and aligned vertically in the middle of the container.
*/
display: flex;
align-items: center;
}
.devtools-toolbar .devtools-button.take-snapshot::before {
.devtools-toolbar > .toolbar-group {
/**
* We want this to be exactly at a --sidebar-width distance from the
* toolbar's start boundary. A .devtools-toolbar has a 3px start padding
* and the preceeding .take-snapshot button is exactly 32px.
*/
margin-inline-start: calc(var(--sidebar-width) - 3px - 32px);
border-inline-start: 1px solid var(--theme-splitter-color);
padding-inline-start: 5px;
}
.devtools-toolbar > .toolbar-group > label {
margin-inline-end: 5px;
}
.devtools-toolbar > .toolbar-group > label.breakdown-by > span {
margin-inline-end: 5px;
}
.devtools-toolbar > .devtools-button.take-snapshot::before {
background-image: url(images/command-screenshot.png);
background-size: 64px 16px;
background-position: 0 center;
}
@media (min-resolution: 1.1dppx) {
.devtools-toolbar .devtools-button.take-snapshot::before {
.devtools-toolbar > .devtools-button.take-snapshot::before {
background-image: url(images/command-screenshot@2x.png);
}
}
/**
* TODO bug 1213100
* Once we figure out how to store invertable buttons (pseudo element like in this case?)
* we should add a .invertable class to handle this generally, rather than the definitions
* in toolbars.inc.css.
* Once we figure out how to store invertable buttons (pseudo element like in
* this case?) we should add a .invertable class to handle this generally,
* rather than the definitions in toolbars.inc.css.
*
* @see bug 1173397 for another inverted related bug
*/
.theme-light .devtools-toolbarbutton.take-snapshot::before {
.theme-light .devtools-toolbar > .devtools-toolbarbutton.take-snapshot::before {
filter: url(images/filters.svg#invert);
}
/**
* Container (sidebar + main panel)
*/
#memory-tool-container {
/**
* Flex: contains two children: .list (sidebar) and #heap-view (main panel),
* which need to be laid out horizontally. The sidebar has a fixed width and
* the main panel needs to flex to fill out all remaining horizontal space.
*/
display: flex;
/**
* Flexing to fill out remaining vertical space. The preceeding sibling is
* the toolbar. @see #memory-tool.
*/
flex: 1;
overflow: hidden;
}
/**
* Sidebar
*/
.list {
min-width: var(--sidebar-width);
width: var(--sidebar-width);
overflow-y: auto;
margin: 0;
@ -104,7 +127,10 @@ html, body, #app, #memory-tool {
border-inline-end: 1px solid var(--theme-splitter-color);
}
.list > li {
.snapshot-list-item {
/**
* Flex: contains several children, which need to be laid out vertically.
*/
display: flex;
flex-direction: column;
color: var(--theme-body-color);
@ -113,24 +139,23 @@ html, body, #app, #memory-tool {
cursor: pointer;
}
.list > li.selected {
.snapshot-list-item.selected {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.snapshot-list-item .snapshot-title {
display: block;
.snapshot-list-item > .snapshot-title {
margin-bottom: 14px;
}
.snapshot-list-item .snapshot-state,
.snapshot-list-item .snapshot-totals {
.snapshot-list-item > .snapshot-state,
.snapshot-list-item > .snapshot-totals {
font-size: 90%;
color: var(--theme-body-color-alt);
}
.snapshot-list-item.selected .snapshot-state,
.snapshot-list-item.selected .snapshot-totals {
.snapshot-list-item.selected > .snapshot-state,
.snapshot-list-item.selected > .snapshot-totals {
/* Text inside a selected item should not be custom colored. */
color: inherit !important;
}
@ -140,64 +165,88 @@ html, body, #app, #memory-tool {
*/
#heap-view {
/**
* Flex: contains a .heap-view-panel which needs to fill out all the
* available space, horizontally and vertically.
*/;
display: flex;
/**
* Flexing to fill out remaining horizontal space. The preceeding sibling
* is the sidebar. @see #memory-tool-container.
*/
flex: 1;
justify-content: center;
background-color: var(--theme-toolbar-background);
min-width: 400px;
}
#heap-view .snapshot-status,
#heap-view .take-snapshot {
#heap-view > .heap-view-panel {
/**
* Flex: can contain several children, including a tree with a header and
* multiple rows, all of which need to be laid out vertically. When the
* tree is visible, the header has a fixed height and tree body needs to flex
* to fill out all remaining vertical space.
*/
display: flex;
flex-direction: column;
/**
* Flexing to fill out remaining horizontal space. @see #heap-view.
*/
flex: 1;
}
#heap-view > .heap-view-panel > .snapshot-status,
#heap-view > .heap-view-panel > .take-snapshot {
margin: auto;
margin-top: 65px;
font-size: 120%;
}
#heap-view .snapshot-status {
display: block;
text-align: center;
}
#heap-view .take-snapshot {
#heap-view > .heap-view-panel > .take-snapshot {
padding: 5px;
}
#heap-view .heap-view-panel {
display: flex;
flex-direction: column;
flex: 1;
}
#heap-view .heap-view-panel[data-state="snapshot-state-error"] pre {
/* TODO */
#heap-view > .heap-view-panel[data-state="snapshot-state-error"] pre {
background-color: var(--theme-body-background);
overflow-y: auto;
margin: 20px;
padding: 20px;
}
/**
* Heap Tree View
* Heap tree view header
*/
#heap-view .theme-twisty {
float: left;
}
.header {
height: var(--heap-tree-header-height);
/**
* Flex: contains several span columns, all of which need to be laid out
* horizontally. All columns except the last one have percentage widths, and
* the last one needs to flex to fill out all remaining horizontal space.
*/
display: flex;
align-items: center;
color: var(--theme-body-color);
background-color: var(--theme-tab-toolbar-background);
border-bottom: 1px solid var(--cell-border-color);
}
.tree span {
line-height: var(--heap-tree-row-height);
.header > span {
overflow: hidden;
text-overflow: ellipsis;
line-height: var(--heap-tree-header-height);
justify-content: center;
font-size: 90%;
white-space: nowrap;
}
.header > .heap-tree-item-name {
justify-content: flex-start;
}
/**
* Heap tree view body
*/
.tree {
/**
* Flexing to fill out remaining vertical space. @see .heap-view-panel
*/
flex: 1;
overflow-y: auto;
background-color: var(--theme-body-background);
@ -205,28 +254,19 @@ html, body, #app, #memory-tool {
.tree-node {
height: var(--heap-tree-row-height);
clear: left;
}
.heap-tree-percent {
width: 30%;
}
/**
* Heap tree view columns
*/
.heap-tree-number {
width: 70%;
color: var(--theme-content-color3);
padding-right: 5px;
}
.focused .heap-tree-number {
color: var(--theme-selection-color);
}
.heap-tree-item, .header {
list-style-type: none;
height: var(--heap-tree-row-height);
.heap-tree-item {
/**
* Flex: contains several span columns, all of which need to be laid out
* horizontally. All columns except the last one have percentage widths, and
* the last one needs to flex to fill out all remaining horizontal space.
*/
display: flex;
flex-direction: row;
}
.tree-node:nth-child(2n) {
@ -237,44 +277,22 @@ html, body, #app, #memory-tool {
background-color: var(--row-hover-background-color);
}
.tree-node:focus, .heap-tree-item.focused {
.heap-tree-item.focused {
background-color: var(--theme-selection-background);
color: var(--theme-selection-color);
}
.header {
background-color: var(--theme-tab-toolbar-background);
border-color: var(--cell-border-color);
border-style: solid;
border-width: 0px 0px 1px 0px;
}
.header span {
text-align: center;
line-height: var(--heap-tree-header-height);
font-size: 90%;
display: inline;
}
.header span, .heap-tree-number, .heap-tree-percent, .heap-tree-item-name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.header .heap-tree-item-name {
text-align: left;
}
.heap-tree-item-bytes,
.heap-tree-item-count,
.heap-tree-item-total-bytes,
.heap-tree-item-total-count {
/**
* Flex: contains several subcolumns, which need to be laid out horizontally.
* These subcolumns may have specific widths or need to flex.
*/
display: flex;
text-align: end;
border-inline-end: var(--cell-border-color) 1px solid;
padding-inline-end: 5px;
display: flex;
flex-direction: row;
}
.heap-tree-item-count,
@ -288,15 +306,60 @@ html, body, #app, #memory-tool {
}
.heap-tree-item-name {
width: 50%;
padding-left: 5px;
/**
* Flex: contains an .arrow and some text, which need to be laid out
* horizontally, vertically aligned in the middle of the container.
*/
display: flex;
align-items: center;
/**
* Flexing to fill out remaining vertical space.
* @see .header and .heap-tree-item */
flex: 1;
padding-inline-start: 5px;
}
/**
* Heap tree view subcolumns
*/
.heap-tree-number,
.heap-tree-percent,
.heap-tree-item-name {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.heap-tree-number,
.heap-tree-percent {
padding-inline-end: 5px;
}
.heap-tree-number {
flex: 1;
color: var(--theme-content-color3);
}
.heap-tree-percent {
width: 2.5em;
}
.heap-tree-item.focused .heap-tree-number,
.heap-tree-item.focused .heap-tree-percent {
color: inherit;
}
/**
* Heap tree errors.
*/
.error::before {
content: "";
display: inline-block;
width: 12px;
height: 12px;
max-height: 12px;
background-image: url(chrome://devtools/skin/themes/images/webconsole.svg);
background-size: 72px 60px;
background-position: -24px -24px;
@ -304,7 +367,6 @@ html, body, #app, #memory-tool {
margin: 0px;
margin-top: 2px;
margin-inline-end: 5px;
max-height: 12px;
}
.theme-light .error::before {
@ -332,18 +394,20 @@ html, body, #app, #memory-tool {
text-decoration: underline;
}
.frame-link-column, .frame-link-line, .frame-link-colon {
.frame-link-column,
.frame-link-line,
.frame-link-colon {
color: var(--theme-highlight-orange);
}
.frame-link-host {
margin-inline-start: 5px;
font-size: 90%;
margin-left: 5px;
color: var(--theme-content-color2);
}
.frame-link-function-display-name {
margin-right: 5px;
margin-inline-end: 5px;
}
.no-allocation-stacks {
@ -353,7 +417,3 @@ html, body, #app, #memory-tool {
text-align: center;
padding: 5px;
}
label select {
margin: 5px;
}

View File

@ -6,8 +6,6 @@ var Cu = Components.utils;
Cu.import("resource://devtools/client/framework/gDevTools.jsm");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const {AppValidator} = require("devtools/client/app-manager/app-validator");
const {AppManager} = require("devtools/client/webide/modules/app-manager");
const {ProjectBuilding} = require("devtools/client/webide/modules/build");

View File

@ -13,8 +13,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "ZipUtils", "resource://gre/modules/ZipU
XPCOMUtils.defineLazyModuleGetter(this, "Downloads", "resource://gre/modules/Downloads.jsm");
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {});
const {AppProjects} = require("devtools/client/webide/modules/app-projects");
const {AppManager} = require("devtools/client/webide/modules/app-manager");
const {getJSON} = require("devtools/client/shared/getjson");

View File

@ -11,8 +11,8 @@ Cu.import("resource://gre/modules/Task.jsm");
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const {Toolbox} = require("devtools/client/framework/toolbox");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const Services = require("Services");
const {AppProjects} = require("devtools/client/webide/modules/app-projects");
const {Connection} = require("devtools/shared/client/connection-manager");
const {AppManager} = require("devtools/client/webide/modules/app-manager");
const EventEmitter = require("devtools/shared/event-emitter");
@ -1155,4 +1155,11 @@ var Cmds = {
UI.contentViewer.fullZoom = 1;
Services.prefs.setCharPref("devtools.webide.zoom", 1);
},
reloadDevtools: function(event) {
if (Services.prefs.prefHasUserValue("devtools.loader.srcdir")) {
let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
devtools.reload();
}
}
};

View File

@ -58,6 +58,7 @@
<command id="cmd_zoomin" label="&viewMenu_zoomin_label;" oncommand="Cmds.zoomIn()"/>
<command id="cmd_zoomout" label="&viewMenu_zoomout_label;" oncommand="Cmds.zoomOut()"/>
<command id="cmd_resetzoom" label="&viewMenu_resetzoom_label;" oncommand="Cmds.resetZoom()"/>
<command id="cmd_reload_devtools" oncommand="Cmds.reloadDevtools()"/>
</commandset>
</commandset>
@ -115,6 +116,7 @@
<key key="&key_zoomin2;" id="key_zoomin2" command="cmd_zoomin" modifiers="accel"/>
<key key="&key_zoomout;" id="key_zoomout" command="cmd_zoomout" modifiers="accel"/>
<key key="&key_resetzoom;" id="key_resetzoom" command="cmd_resetzoom" modifiers="accel"/>
<key key="&key_reload_devtools;" id="key_reload_devtools" command="cmd_reload_devtools" modifiers="accel alt"/>
</keyset>
<tooltip id="aHTMLTooltip" page="true"/>

View File

@ -6,13 +6,13 @@ const {Cu} = require("chrome");
const promise = require("promise");
const {TargetFactory} = require("devtools/client/framework/target");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
const Services = require("Services");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {});
const EventEmitter = require("devtools/shared/event-emitter");
const {TextEncoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const {AppProjects} = require("devtools/client/webide/modules/app-projects");
const TabStore = require("devtools/client/webide/modules/tab-store");
const {AppValidator} = require("devtools/client/app-manager/app-validator");
const {AppValidator} = require("devtools/client/webide/modules/app-validator");
const {ConnectionManager, Connection} = require("devtools/shared/client/connection-manager");
const {AppActorFront} = require("devtools/shared/apps/app-actor-front");
const {getDeviceFront} = require("devtools/server/actors/device");
@ -29,8 +29,7 @@ const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/
var AppManager = exports.AppManager = {
// FIXME: will break when devtools/app-manager will be removed:
DEFAULT_PROJECT_ICON: "chrome://devtools/skin/themes/app-manager/images/default-app-icon.png",
DEFAULT_PROJECT_ICON: "chrome://devtools/skin/themes/webide/default-app-icon.png",
DEFAULT_PROJECT_NAME: "--",
_initialized: false,

View File

@ -1,11 +1,15 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const {Cc,Ci,Cu,Cr} = require("chrome");
const ObservableObject = require("devtools/client/shared/observable-object");
const promise = require("devtools/shared/deprecated-sync-thenables");
const {EventEmitter} = Cu.import("resource://devtools/shared/event-emitter.js");
const {EventEmitter} = Cu.import("resource://devtools/shared/event-emitter.js", {});
const {generateUUID} = Cc['@mozilla.org/uuid-generator;1'].getService(Ci.nsIUUIDGenerator);
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
const { indexedDB } = require("sdk/indexed-db");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {});
const {indexedDB} = require("sdk/indexed-db");
/**
* IndexedDB wrapper that just save project objects

View File

@ -6,8 +6,8 @@
var {Ci,Cu,CC} = require("chrome");
const promise = require("devtools/shared/deprecated-sync-thenables");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {});
const Services = require("Services");
const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
var XMLHttpRequest = CC("@mozilla.org/xmlextras/xmlhttprequest;1");
var strings = Services.strings.createBundle("chrome://browser/locale/devtools/app-manager.properties");

View File

@ -7,6 +7,8 @@
DevToolsModules(
'addons.js',
'app-manager.js',
'app-projects.js',
'app-validator.js',
'build.js',
'config-view.js',
'project-list.js',

View File

@ -4,8 +4,8 @@
const {Cu} = require("chrome");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const Services = require("Services");
const {AppProjects} = require("devtools/client/webide/modules/app-projects");
const {AppManager} = require("devtools/client/webide/modules/app-manager");
const promise = require("promise");
const EventEmitter = require("devtools/shared/event-emitter");

View File

@ -5,7 +5,6 @@
const {Cu} = require("chrome");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const {AppManager} = require("devtools/client/webide/modules/app-manager");
const EventEmitter = require("devtools/shared/event-emitter");
const {RuntimeScanners, WiFiScanner} = require("devtools/client/webide/modules/runtimes");

View File

@ -39,6 +39,7 @@ support-files =
hosted_app.manifest
templates.json
../../shared/test/browser_devices.json
validator/*
[test_basic.html]
[test_newapp.html]
@ -62,3 +63,4 @@ skip-if = true # Bug 1201392 - Update add-ons after migration
[test_build.html]
[test_simulators.html]
[test_toolbox.html]
[test_app_validator.html]

View File

@ -12,7 +12,7 @@ Cu.import("resource://gre/modules/Task.jsm");
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const {gDevTools} = Cu.import("resource://devtools/client/framework/gDevTools.jsm", {});
const promise = require("promise");
const {AppProjects} = require("devtools/client/app-manager/app-projects");
const {AppProjects} = require("devtools/client/webide/modules/app-projects");
const DevToolsUtils = require("devtools/shared/DevToolsUtils");
DevToolsUtils.testing = true;

View File

@ -20,7 +20,7 @@
Cu.import("resource://testing-common/httpd.js");
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const {AppValidator} = require("devtools/client/app-manager/app-validator");
const {AppValidator} = require("devtools/client/webide/modules/app-validator");
const {Services} = Cu.import("resource://gre/modules/Services.jsm");
const nsFile = Components.Constructor("@mozilla.org/file/local;1",
"nsILocalFile", "initWithPath");

View File

@ -36,9 +36,10 @@ h1 {
}
#controls {
position: absolute;
top: 10px;
right: 10px;
float: right;
position: relative;
top: -10px;
right: -10px;
}
#controls > a {

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -19,3 +19,6 @@ webide.jar:
skin/logs.css (logs.css)
skin/panel-listing.css (panel-listing.css)
skin/simulator.css (simulator.css)
skin/rocket.svg (rocket.svg)
skin/noise.png (noise.png)
skin/default-app-icon.png (default-app-icon.png)

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -134,7 +134,7 @@ window.busy-determined #action-busy-undetermined {
#deck {
background-color: rgb(225, 225, 225);
background-image: url('chrome://devtools/skin/themes/app-manager/images/rocket.svg'), url('chrome://devtools/skin/themes/app-manager/images/noise.png');
background-image: url('rocket.svg'), url('noise.png');
background-repeat: no-repeat, repeat;
background-size: 35%, auto;
background-position: center center, top left;

View File

@ -958,6 +958,13 @@ var DebuggerServer = {
// provides hook to actor modules that need to exchange messages
// between e10s parent and child processes
let onSetupInParent = function (msg) {
// We may have multiple connectToChild instance running for the same tab
// and need to filter the messages. Also the DebuggerServerConnection's
// prefix has an additional '/' and the end, so use `includes`.
if (!msg.json.prefix.includes(prefix)) {
return;
}
let { module, setupParent } = msg.json;
let m, fn;
@ -1741,7 +1748,7 @@ DebuggerServerConnection.prototype = {
* @return boolean
* true if the setup helper returned successfully
*/
setupInParent: function({ conn, module, setupParent }) {
setupInParent: function({ module, setupParent }) {
if (!this.parentMessageManager) {
return false;
}
@ -1749,6 +1756,7 @@ DebuggerServerConnection.prototype = {
let { sendSyncMessage } = this.parentMessageManager;
return sendSyncMessage("debug:setup-in-parent", {
prefix: this.prefix,
module: module,
setupParent: setupParent
});

View File

@ -1,7 +1,7 @@
<!DOCTYPE HTML>
<html>
<!--
Bug 943251 - Allow accessing about:config from app-manager
Bug 943251 - Allow accessing about:config from WebIDE
-->
<head>
<meta charset="utf-8">

View File

@ -87,9 +87,7 @@ BuiltinProvider.prototype = {
// ⚠ DISCUSSION ON DEV-DEVELOPER-TOOLS REQUIRED BEFORE MODIFYING ⚠
"devtools": "resource://devtools",
// ⚠ DISCUSSION ON DEV-DEVELOPER-TOOLS REQUIRED BEFORE MODIFYING ⚠
"devtools/client": "resource://devtools/client",
// ⚠ DISCUSSION ON DEV-DEVELOPER-TOOLS REQUIRED BEFORE MODIFYING ⚠
"gcli": "resource://devtools/gcli",
"gcli": "resource://devtools/shared/gcli/source/lib/gcli",
// ⚠ DISCUSSION ON DEV-DEVELOPER-TOOLS REQUIRED BEFORE MODIFYING ⚠
"promise": "resource://gre/modules/Promise-backend.js",
// ⚠ DISCUSSION ON DEV-DEVELOPER-TOOLS REQUIRED BEFORE MODIFYING ⚠
@ -428,12 +426,22 @@ DevToolsLoader.prototype = {
this._chooseProvider();
this.main("devtools/client/main");
// Reopen the toolbox automatically if requested
if (showToolbox) {
let { gBrowser } = Services.wm.getMostRecentWindow("navigator:browser");
let target = this.TargetFactory.forTab(gBrowser.selectedTab);
const { gDevTools } = this.require("resource://devtools/client/framework/gDevTools.jsm");
gDevTools.showToolbox(target);
let window = Services.wm.getMostRecentWindow(null);
let location = window.location.href;
if (location.includes("/browser.xul") && showToolbox) {
// Reopen the toolbox automatically if we are reloading from toolbox shortcut
// and are on a browser window.
// Wait for a second before opening the toolbox to avoid races
// between the old and the new one.
let {setTimeout} = Cu.import("resource://gre/modules/Timer.jsm", {});
setTimeout(() => {
let { gBrowser } = window;
let target = this.TargetFactory.forTab(gBrowser.selectedTab);
const { gDevTools } = this.require("resource://devtools/client/framework/gDevTools.jsm");
gDevTools.showToolbox(target);
}, 1000);
} else if (location.includes("/webide.xul")) {
window.location.reload();
}
},

View File

@ -1,24 +0,0 @@
/*
* Copyright 2012, Mozilla Foundation and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
"use strict";
this.EXPORTED_SYMBOLS = [ "gcli", "Requisition" ];
var {require} = Components.utils.import("resource://devtools/shared/Loader.jsm", {});
this.gcli = require('gcli/index');
this.Requisition = require('gcli/cli').Requisition;

View File

@ -6,105 +6,18 @@
DIRS += [
'commands',
'source/lib/gcli',
'source/lib/gcli/connectors',
'source/lib/gcli/converters',
'source/lib/gcli/commands',
'source/lib/gcli/fields',
'source/lib/gcli/languages',
'source/lib/gcli/mozui',
'source/lib/gcli/types',
'source/lib/gcli/ui',
'source/lib/gcli/util',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.commands += [
'source/lib/gcli/commands/clear.js',
'source/lib/gcli/commands/commands.js',
'source/lib/gcli/commands/connect.js',
'source/lib/gcli/commands/context.js',
'source/lib/gcli/commands/exec.js',
'source/lib/gcli/commands/global.js',
'source/lib/gcli/commands/help.js',
'source/lib/gcli/commands/intro.js',
'source/lib/gcli/commands/lang.js',
'source/lib/gcli/commands/mocks.js',
'source/lib/gcli/commands/pref.js',
'source/lib/gcli/commands/preflist.js',
'source/lib/gcli/commands/test.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.connectors += [
'source/lib/gcli/connectors/connectors.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.converters += [
'source/lib/gcli/converters/basic.js',
'source/lib/gcli/converters/converters.js',
'source/lib/gcli/converters/html.js',
'source/lib/gcli/converters/terminal.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.fields += [
'source/lib/gcli/fields/delegate.js',
'source/lib/gcli/fields/fields.js',
'source/lib/gcli/fields/selection.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.languages += [
'source/lib/gcli/languages/command.html',
'source/lib/gcli/languages/command.js',
'source/lib/gcli/languages/javascript.js',
'source/lib/gcli/languages/languages.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.mozui += [
'source/lib/gcli/mozui/completer.js',
'source/lib/gcli/mozui/inputter.js',
'source/lib/gcli/mozui/tooltip.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.types += [
'source/lib/gcli/types/array.js',
'source/lib/gcli/types/boolean.js',
'source/lib/gcli/types/command.js',
'source/lib/gcli/types/date.js',
'source/lib/gcli/types/delegate.js',
'source/lib/gcli/types/file.js',
'source/lib/gcli/types/fileparser.js',
'source/lib/gcli/types/javascript.js',
'source/lib/gcli/types/node.js',
'source/lib/gcli/types/number.js',
'source/lib/gcli/types/resource.js',
'source/lib/gcli/types/selection.js',
'source/lib/gcli/types/setting.js',
'source/lib/gcli/types/string.js',
'source/lib/gcli/types/types.js',
'source/lib/gcli/types/union.js',
'source/lib/gcli/types/url.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.ui += [
'source/lib/gcli/ui/focus.js',
'source/lib/gcli/ui/history.js',
'source/lib/gcli/ui/intro.js',
'source/lib/gcli/ui/menu.css',
'source/lib/gcli/ui/menu.html',
'source/lib/gcli/ui/menu.js',
'source/lib/gcli/ui/view.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli.util += [
'source/lib/gcli/util/domtemplate.js',
'source/lib/gcli/util/fileparser.js',
'source/lib/gcli/util/filesystem.js',
'source/lib/gcli/util/host.js',
'source/lib/gcli/util/l10n.js',
'source/lib/gcli/util/legacy.js',
'source/lib/gcli/util/prism.js',
'source/lib/gcli/util/spell.js',
'source/lib/gcli/util/util.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.gcli += [
'source/lib/gcli/cli.js',
'source/lib/gcli/index.js',
'source/lib/gcli/l10n.js',
'source/lib/gcli/settings.js',
'source/lib/gcli/system.js',
]
FINAL_TARGET_FILES.chrome.devtools.modules.devtools.shared.gcli += [
'gcli.jsm',
'Templater.jsm',
]
DevToolsModules(
'Templater.jsm'
)

View File

@ -0,0 +1,21 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'clear.js',
'commands.js',
'connect.js',
'context.js',
'exec.js',
'global.js',
'help.js',
'intro.js',
'lang.js',
'mocks.js',
'pref.js',
'preflist.js',
'test.js',
)

View File

@ -4,9 +4,6 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini']
DevToolsModules(
'app-projects.js',
'app-validator.js',
'connectors.js',
)

View File

@ -0,0 +1,12 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'basic.js',
'converters.js',
'html.js',
'terminal.js',
)

View File

@ -0,0 +1,11 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'delegate.js',
'fields.js',
'selection.js',
)

View File

@ -0,0 +1,12 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'command.html',
'command.js',
'javascript.js',
'languages.js',
)

View File

@ -0,0 +1,13 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'cli.js',
'index.js',
'l10n.js',
'settings.js',
'system.js',
)

View File

@ -0,0 +1,11 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'completer.js',
'inputter.js',
'tooltip.js',
)

View File

@ -0,0 +1,25 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'array.js',
'boolean.js',
'command.js',
'date.js',
'delegate.js',
'file.js',
'fileparser.js',
'javascript.js',
'node.js',
'number.js',
'resource.js',
'selection.js',
'setting.js',
'string.js',
'types.js',
'union.js',
'url.js',
)

View File

@ -0,0 +1,15 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'focus.js',
'history.js',
'intro.js',
'menu.css',
'menu.html',
'menu.js',
'view.js',
)

View File

@ -0,0 +1,17 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DevToolsModules(
'domtemplate.js',
'fileparser.js',
'filesystem.js',
'host.js',
'l10n.js',
'legacy.js',
'prism.js',
'spell.js',
'util.js',
)

View File

@ -43,8 +43,8 @@
srcdir.load();
is(builtin.loader.mapping.length,
srcdir.loader.mapping.length + 2,
"The built-in loader has 2 additional mappings.");
srcdir.loader.mapping.length + 1,
"The built-in loader has one additional mappings.");
Services.prefs.clearUserPref(SRCDIR_PREF);
</script>

View File

@ -253,7 +253,7 @@ public class GeckoEvent {
return null;
}
event.mPoints[0] = new Point(Math.round(geckoPoint.x), Math.round(geckoPoint.y));
event.mPoints[0] = new Point((int)Math.floor(geckoPoint.x), (int)Math.floor(geckoPoint.y));
event.mX = size;
event.mTime = System.currentTimeMillis();
@ -334,7 +334,7 @@ public class GeckoEvent {
geckoPoint = GeckoAppShell.getLayerView().convertViewPointToLayerPoint(geckoPoint);
}
mPoints[index] = new Point(Math.round(geckoPoint.x), Math.round(geckoPoint.y));
mPoints[index] = new Point((int)Math.floor(geckoPoint.x), (int)Math.floor(geckoPoint.y));
mPointIndicies[index] = event.getPointerId(eventIndex);
double radians = event.getOrientation(eventIndex);

View File

@ -17,6 +17,7 @@ import org.mozilla.gecko.widget.FloatingHintEditText;
import android.content.Context;
import android.content.res.Configuration;
import android.support.v7.widget.AppCompatCheckBox;
import android.text.Html;
import android.text.InputType;
import android.text.TextUtils;
@ -146,7 +147,7 @@ public class PromptInput {
@Override
public View getView(Context context) throws UnsupportedOperationException {
CheckBox checkbox = new CheckBox(context);
final CheckBox checkbox = new AppCompatCheckBox(context);
checkbox.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
checkbox.setText(mLabel);
checkbox.setChecked(mChecked);

View File

@ -22,7 +22,8 @@
android:gravity="right"
android:visibility="gone"/>
<CheckBox android:id="@+id/doorhanger_checkbox"
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/doorhanger_checkbox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/doorhanger_section_padding_medium"

View File

@ -21,7 +21,8 @@
android:inputType="textPassword"
android:hint="@string/doorhanger_login_edit_password_hint"/>
<CheckBox android:id="@+id/checkbox_toggle_password"
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/checkbox_toggle_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/doorhanger_login_edit_toggle"

View File

@ -41,7 +41,7 @@
</LinearLayout>
<CheckBox
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/checkbox"
android:layout_width="35dip"
android:layout_height="wrap_content"

View File

@ -1558,7 +1558,7 @@ function renderPayloadList(ping) {
for (; payloadIndex <= ping.payload.childPayloads.length; ++payloadIndex) {
option = document.createElement("option");
text = bundle.formatStringFromName("childPayload", [payloadIndex], 1);
text = bundle.formatStringFromName("childPayloadN", [payloadIndex], 1);
content = document.createTextNode(text);
option.appendChild(content);
option.setAttribute("value", payloadIndex);

View File

@ -73,5 +73,5 @@ addonProvider = %1$S Provider
parentPayload = Parent Payload
# Note to translators:
# - The %1$s will be replaced with the number of the child payload (e.g. "1", "2")
childPayload = Child Payload %1$s
# - The %1$S will be replaced with the number of the child payload (e.g. "1", "2")
childPayloadN = Child Payload %1$S