Bug 531540 - Adding images to a page got "dumber" with this release. r=bwinton r=IanN

This commit is contained in:
Neil Rashbrook 2011-09-01 14:21:46 -07:00
Родитель 681e63afef
Коммит 87abfdf327
2 изменённых файлов: 171 добавлений и 23 удалений

Просмотреть файл

@ -119,33 +119,20 @@ function InitImage()
// Force loading of image from its source and show preview image
LoadPreviewImage();
if (globalElement.hasAttribute("title"))
gDialog.titleInput.value = globalElement.getAttribute("title");
gDialog.titleInput.value = globalElement.getAttribute("title");
var hasAltText = globalElement.hasAttribute("alt");
var altText;
if (hasAltText)
var altText = globalElement.getAttribute("alt");
gDialog.altTextInput.value = altText;
if (altText || (!hasAltText && globalElement.hasAttribute("src")))
{
altText = globalElement.getAttribute("alt");
gDialog.altTextInput.value = altText;
gDialog.altTextRadioGroup.selectedItem = gDialog.altTextRadio;
}
// Initialize altText widgets during dialog startup
// or if user enterred altText in Advanced Edit dialog
// (this preserves "Don't use alt text" radio button state)
if (!gDialog.altTextRadioGroup.selectedItem || altText)
else if (hasAltText)
{
if (gInsertNewImage || !hasAltText || (hasAltText && gDialog.altTextInput.value))
{
SetAltTextDisabled(false);
gDialog.altTextRadioGroup.selectedItem = gDialog.altTextRadio;
}
else
{
SetAltTextDisabled(true);
gDialog.altTextRadioGroup.selectedItem = gDialog.noAltTextRadio;
}
gDialog.altTextRadioGroup.selectedItem = gDialog.noAltTextRadio;
}
SetAltTextDisabled(gDialog.altTextRadioGroup.selectedItem == gDialog.noAltTextRadio);
// setup the height and width widgets
var width = InitPixelOrPercentMenulist(globalElement,
@ -562,14 +549,21 @@ function ValidateImage()
if (useAlt)
alt = TrimString(gDialog.altTextInput.value);
if (gDoAltTextError && useAlt && !alt)
if (alt || !useAlt)
{
globalElement.setAttribute("alt", alt);
}
else if (!gDoAltTextError)
{
globalElement.removeAttribute("alt");
}
else
{
AlertWithTitle(null, GetString("NoAltText"));
SwitchToValidatePanel();
gDialog.altTextInput.focus();
return false;
}
globalElement.setAttribute("alt", alt);
var width = "";
var height = "";

Просмотреть файл

@ -0,0 +1,154 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* The Mozilla Foundation
* Portions created by the Initial Developer are Copyright (C) 2011
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Jonathan Protzenko <jonathan.protzenko@gmail.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
var Ci = Components.interfaces;
var Cc = Components.classes;
var Cu = Components.utils;
var elib = {};
Cu.import('resource://mozmill/modules/elementslib.js', elib);
var MODULE_NAME = 'test-dialogs';
var RELATIVE_ROOT = '../shared-modules';
var MODULE_REQUIRES = ['folder-display-helpers', 'compose-helpers',
'window-helpers', 'keyboard-helpers'];
var fdh, ch, wh, kh;
function setupModule(module) {
fdh = collector.getModule('folder-display-helpers');
fdh.installInto(module);
ch = collector.getModule("compose-helpers");
ch.installInto(module);
wh = collector.getModule('window-helpers');
wh.installInto(module);
kh = collector.getModule('keyboard-helpers');
kh.installInto(module);
}
function test_image_insertion_dialog_persist() {
let cwc = open_compose_new_mail();
// First focus on the editor element
cwc.e("content-frame").focus();
// Now open the image window
wh.plan_for_modal_dialog("imageDlg", function insert_image(mwc) {
// Insert the url of the image.
let srcloc = mwc.window.document.getElementById("srcInput");
srcloc.focus();
input_value(mwc, "whateverItDoesntMatterAnyway.png");
mwc.sleep(0);
// Don't add alternate text
mwc.click(mwc.eid("noAltTextRadio"));
mwc.window.document.documentElement.acceptDialog();
});
cwc.click(cwc.eid("insertImage"));
wh.wait_for_modal_dialog();
wait_for_window_close();
// Check that the radio option persists
wh.plan_for_modal_dialog("imageDlg", function insert_image(mwc) {
assert_true(mwc.window.document.getElementById("noAltTextRadio").selected,
"We should persist the previously selected value");
// We change to "use alt text"
mwc.click(mwc.eid("altTextRadio"));
mwc.window.document.documentElement.cancelDialog();
});
cwc.click(cwc.eid("insertImage"));
wh.wait_for_modal_dialog();
wait_for_window_close();
// Check that the radio option still persists (be really sure)
wh.plan_for_modal_dialog("imageDlg", function insert_image(mwc) {
assert_true(mwc.window.document.getElementById("altTextRadio").selected,
"We should persist the previously selected value");
// Accept the dialog
mwc.window.document.documentElement.cancelDialog();
});
cwc.click(cwc.eid("insertImage"));
wh.wait_for_modal_dialog();
wait_for_window_close();
// Get the inserted image, double-click it, make sure we switch to "no alt
// text", despite the persisted value being "use alt text"
let img = cwc.e("content-frame").contentDocument.getElementsByTagName("img")[0];
wh.plan_for_modal_dialog("imageDlg", function insert_image(mwc) {
assert_true(mwc.window.document.getElementById("noAltTextRadio").selected,
"We shouldn't use the persisted value because the insert image has no alt text");
mwc.window.document.documentElement.cancelDialog();
});
cwc.doubleClick(new elib.Elem(img));
wh.wait_for_modal_dialog();
wait_for_window_close();
// Now use some alt text for the edit image dialog
wh.plan_for_modal_dialog("imageDlg", function insert_image(mwc) {
assert_true(mwc.window.document.getElementById("noAltTextRadio").selected,
"That value should persist still...");
mwc.click(mwc.eid("altTextRadio"));
let srcloc = mwc.window.document.getElementById("altTextInput");
srcloc.focus();
input_value(mwc, "some alt text");
mwc.sleep(0);
// Accept the dialog
mwc.window.document.documentElement.acceptDialog();
});
cwc.doubleClick(new elib.Elem(img));
wh.wait_for_modal_dialog();
wait_for_window_close();
// Make sure next time we edit it, we still have "use alt text" selected.
let img = cwc.e("content-frame").contentDocument.getElementsByTagName("img")[0];
wh.plan_for_modal_dialog("imageDlg", function insert_image(mwc) {
assert_true(mwc.window.document.getElementById("altTextRadio").selected,
"We edited the image to make it have alt text, we should keep it selected");
// Accept the dialog
mwc.window.document.documentElement.cancelDialog();
});
cwc.doubleClick(new elib.Elem(img));
wh.wait_for_modal_dialog();
wait_for_window_close();
close_compose_window(cwc);
}