Closed
Bug 145523
Opened 22 years ago
Closed 20 years ago
Script warning should use the brand name instead of "mozilla"
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
FIXED
People
(Reporter: mozilla7, Assigned: vhaarr+bmo)
References
()
Details
(Keywords: helpwanted, Whiteboard: [good first bug])
Attachments
(2 files, 6 obsolete files)
12.02 KB,
image/png
|
Details | |
5.79 KB,
patch
|
jst
:
review+
jst
:
superreview+
|
Details | Diff | Splinter Review |
From Bugzilla Helper: User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc1) Gecko/20020417 BuildID: 2002041711 In this alert dialog: "A script on this page is causing mozilla to run slowly. If it continues to run, your computer may become unresponsive.\n\nDo you want to abort the script?" "mozilla" should be replaced with the brand name. I've seen &brandShortName; in other places; something equivalent should be used here (sorry, I'm not a coder!). In any case, Mozilla should be capitalized. The text is in /dom/src/base/nsJSEnvironment.cpp Reproducible: Always Steps to Reproduce: 1. load a page with a script that produces that error Actual Results: "mozilla" isn't capitalized Expected Results: it should be capitalized, and for builds released as other brand names, the appropriate name should be used.
Comment 1•22 years ago
|
||
Confirmed. This code should 1) Use a stringbundle for this string instead of hardcoding it! 2) Use "brandShortName" from xpfe/global/resources/locale/en-US/brand.properties
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 2•22 years ago
|
||
Browser, not engine. Not sure of correct component. DOM?
Assignee: rogerl → jst
Component: JavaScript Engine → DOM Other
QA Contact: pschwartau → gerardok
Reporter | ||
Comment 4•22 years ago
|
||
Hush! My first patch was in bug 110945, which was much simpler. >:o The problem is in dom/src/base/nsJSEnvironment.cpp lines 327-331: NS_NAMED_MULTILINE_LITERAL_STRING(msg, NS_L("A script on this page is causing mozilla to ") NS_L("run slowly. If it continues to run, your ") NS_L("computer may become unresponsive.\n\nDo you ") NS_L("want to abort the script?")); The solution that bz suggested is ripping the text out of there entirely, and using a string bundle in a .properties file instead. In the .properties file, we'd use %brandShortName% in place of "mozilla", which is defined in xpfe/global/resources/locale/en-US/brand.dtd I believe. So, the question is, where to put this text? I couldn't find an obvious place, but was thinking of creating dom/resources/locale/en-US and putting it in there. bz, didn't you say xpfe doesn't always get build (on embedded systems, etc.)? So, would referring to something in xpfe/global/resources/locale/en-US/brand.dtd be a bad thing? Somebody who knows what they're doing, please comment. :-)
Updated•21 years ago
|
Whiteboard: [good first bug]
Comment 6•21 years ago
|
||
I have changed the wording slightly from the original to avoid the %brand% issue.
Comment 7•21 years ago
|
||
Corrected some silly stuff.
Attachment #139073 -
Attachment is obsolete: true
Comment 8•21 years ago
|
||
Attachment #139074 -
Attachment is obsolete: true
Comment 9•21 years ago
|
||
Comment on attachment 139075 [details] [diff] [review] Improved comments > // Open the dialog. >- if (NS_FAILED(prompt->Confirm(title.get(), msg.get(), &ret))) >+ if (NS_FAILED(prompt->ConfirmEx(title, msg, >+ (BUTTON_TITLE_IS_STRING * BUTTON_POS_0) + >+ (BUTTON_TITLE_IS_STRING * BUTTON_POS_1), >+ stopButton, >+ waitButton, >+ nsnull, //Third button >+ nsnull, //Checkbox msg >+ nsnull, //Checkbox val >+ &ret))) > return JS_TRUE; > > return !ret; the comments aren't needed, ConfirmEx is widely used and well defined in the IDL. The formatting could be tightened up to without confusing anyone. if (NS_FAILED(prompt->ConfirmEx(title, msg, (BUTTON_TITLE_IS_STRING * BUTTON_POS_0) + (BUTTON_TITLE_IS_STRING * BUTTON_POS_1), stopButton, waitButton, nsnull, nsnull, nsnull, &ret)))
Comment 10•21 years ago
|
||
Sorry 'bout the spam. Last patch wasn't tested well enough, this one is. I also made the changes suggested by Mike Connor.
Updated•21 years ago
|
Attachment #139075 -
Attachment is obsolete: true
Updated•21 years ago
|
Attachment #139094 -
Flags: review?(jst)
Comment 11•21 years ago
|
||
A testcase for the patch/bug can be found here: http://bugzilla.mozilla.org/attachment.cgi?id=72198&action=view
Status: NEW → ASSIGNED
Comment 12•21 years ago
|
||
There's a whole lot of work being duplicated between this and bug 78089.
Comment 13•21 years ago
|
||
Comment on attachment 139094 [details] [diff] [review] Version 4 + nsXPIDLString title; + rv = bundle->GetStringFromName(NS_LITERAL_STRING("KillScriptTitle").get(), getter_Copies(title)); + //GetStringFromName can return NS_OK and NULL title + NS_ENSURE_TRUE(NS_SUCCEEDED(rv), JS_TRUE); + NS_ENSURE_TRUE(title, JS_TRUE); + + nsXPIDLString msg; + rv = bundle->GetStringFromName(NS_LITERAL_STRING("KillScriptMessage").get(), getter_Copies(msg)); + //GetStringFromName can return NS_OK and NULL msg + NS_ENSURE_TRUE(NS_SUCCEEDED(rv), JS_TRUE); + NS_ENSURE_TRUE(msg, JS_TRUE); ... This is very verbose (as most of our string bundle code seems to be), maybe combine this into something like this to cut down in the lines of code here?: + nsXPIDLString title, msg, ...; + rv = bundle->GetStringFromName(NS_LITERAL_STRING("KillScriptTitle").get(), getter_Copies(title)); + rv |= bundle->GetStringFromName(NS_LITERAL_STRING("KillScriptMessage").get(), getter_Copies(msg)); ... + //GetStringFromName can return NS_OK and NULL msg + + if (NS_FAILED(rv) || !title || !msg || !...) { + NS_ERROR("Failed to get strings from dom.properties!"); + + return JS_TRUE; + } (note the "rv |=") Change that, and I'll have one more look.
Attachment #139094 -
Flags: review?(jst) → review-
Comment 14•21 years ago
|
||
Oh, and btw, I'd rather see this go in first and then we can worry about the added stuff that bug 78089 does, smaller steps...
Comment 15•21 years ago
|
||
This is a more concise version of the patch, implementting the changes suggested in comment #13. I also changed the cases when I was using two consecutive NS_ENSURE_TRUEs to just using one. Is this level of brevity enough or should all checking be done in the if()?
Attachment #139094 -
Attachment is obsolete: true
Updated•21 years ago
|
Attachment #139371 -
Flags: review?(jst)
Comment 16•21 years ago
|
||
Comment on attachment 139371 [details] [diff] [review] A more concise patch + nsCOMPtr<nsIStringBundleService> + stringService(do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv)); + NS_ENSURE_TRUE(NS_SUCCEEDED(rv) && stringService, JS_TRUE); Checking one thing is enough here, I'd suggest you eliminate the &rv argument to do_GetService() and just check for a non-null stringService. + nsCOMPtr<nsIStringBundle> bundle; + rv = stringService->CreateBundle(kDOMStringBundleURL, getter_AddRefs(bundle)); + NS_ENSURE_TRUE(NS_SUCCEEDED(rv) && bundle, JS_TRUE); Same here, just check for bundle being non-null, IMO. + PRInt32 buttonPressed = 1; //In case user exits dialog by clicking X // Open the dialog. - if (NS_FAILED(prompt->Confirm(title.get(), msg.get(), &ret))) + if (NS_FAILED(prompt->ConfirmEx(title, msg, + (nsIPrompt::BUTTON_TITLE_IS_STRING * + nsIPrompt::BUTTON_POS_0) + + (nsIPrompt::BUTTON_TITLE_IS_STRING * + nsIPrompt::BUTTON_POS_1), + stopButton, waitButton, + nsnull, nsnull, nsnull, &buttonPressed))) return JS_TRUE; - return !ret; + return buttonPressed != 0; Wanna just store the return from ConfirmEx() in rv and end the method with: + return NS_FAILED(rv) || buttonPressed != 0; r=jst with those changes.
Attachment #139371 -
Flags: review?(jst) → review+
Comment 17•21 years ago
|
||
*** Bug 162690 has been marked as a duplicate of this bug. ***
Comment 18•20 years ago
|
||
I am seeing a similar dialog when loading http://www.amena.com/ : "A script in this movie is causing Macromedia Flash Player 7 to run slowly. If it continues to run, your computer may become unresponsive. Do you want to abort the script?" The only button shown is "OK" - there is no "Cancel" or "No" button - so the whole dialog does not make any sense. This appears in both FF 0.9.3 and Mozilla 1.8a3 (both Linux). Is this related to this bug here?
Comment 19•20 years ago
|
||
That sounds like a flash plugin dialog, not a mozilla one.
Comment 20•20 years ago
|
||
Here is a screenshot of the dialog - it is word for word the same as the one mentioned here apart from "Macromedia Flash Player 7". I am pretty sure it is NOT a flash dialog.
Comment 21•20 years ago
|
||
I get a dialog too, but it's got a Yes and a No button in it, and it's not through our code (verified in the debugger). Maybe they copied the wording from Mozilla (which copied the wording from IE initially)? It's odd that you're only getting an Ok button... Our code should present you with an Ok and a Cancel button.
Comment 22•20 years ago
|
||
*** Bug 248151 has been marked as a duplicate of this bug. ***
Updated•20 years ago
|
Flags: blocking-aviary1.0+
Updated•20 years ago
|
Flags: blocking-aviary1.0+ → blocking-aviary1.0?
Updated•20 years ago
|
Flags: blocking-aviary1.0? → blocking-aviary1.0-
Assignee | ||
Comment 23•20 years ago
|
||
Updated patch to use brandShortName, and try to incorporate jsts comments. jst: Could you take another look at this?
Assignee: general → bugmail
Attachment #139371 -
Attachment is obsolete: true
Attachment #172804 -
Flags: superreview?(jst)
Attachment #172804 -
Flags: review?(jst)
Comment 24•20 years ago
|
||
I'd propose the following wording for those dom.properties strings: +KillScriptTitle=Warning: Script still running +# %S will be replaced by brandShortName +KillScriptMessage=A script on this page is still running and might slow down %S. You can stop execution of the script or continue to run it, which might make your computer unresponsive. +StopScriptButton=Stop script +WaitForScriptButton=Continue Reasons: - The title in patch v 0.3 looks like we were bad on script performance. The script isn't actually slow ;-) - We should still tell of a script "on this page", and we should probably explain what the buttons do. (Perhaps it would be good to add an empty line between "%S." and "You can" in my wording) - It's good if the stop button is bigger than the continue button (it's easier clicked), and from the explanation, a user does see what "Continue" does mean here.
Assignee | ||
Comment 25•20 years ago
|
||
Thanks for looking into the wording, Kairo. I'll make the necessary changes after we've had code review (also in case someone would like to comment on your proposal).
Comment 26•20 years ago
|
||
> +KillScriptMessage=A script on this page is still running and might slow down > %S. I don't really like this, (esp the "still running" part), but I'm not sure what a good way to express "this script may be an infinite loop" is... > You can stop execution of the script or continue to run it, which might make > your computer unresponsive. This sentence is unclear as to what it is that might make the computer unresponsive. It sounds like stopping execution could do it too. Perhaps, "If the script continues to run, your computer may become unresponsive. Do you want to keep running the script?" With "Yes" and "No" as possible responses.
Comment 27•20 years ago
|
||
Comment on attachment 172804 [details] [diff] [review] version 0.3 r+sr=jst with the suggested changes to the wording in this dialog.
Attachment #172804 -
Flags: superreview?(jst)
Attachment #172804 -
Flags: superreview+
Attachment #172804 -
Flags: review?(jst)
Attachment #172804 -
Flags: review+
Comment 28•20 years ago
|
||
How about: +KillScriptTitle=Warning: Unresponsive script +KillScriptMessage=A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete. +StopScriptButton=Stop script +WaitForScriptButton=Continue
Comment 29•20 years ago
|
||
(In reply to comment #26) > I don't really like this, (esp the "still running" part), but I'm not sure what > a good way to express "this script may be an infinite loop" is... I don't know a better worind either... but then, you're the native english speaker here :) > > You can stop execution of the script or continue to run it, which might make > > your computer unresponsive. > > This sentence is unclear as to what it is that might make the computer > unresponsive. It sounds like stopping execution could do it too. Perhaps, "If > the script continues to run, your computer may become unresponsive. Do you want > to keep running the script?" > > With "Yes" and "No" as possible responses. I'm with you that it may be unclear about that. The problem with your wording is though that users tend to click "Yes", which would mean continuing the script with your wording. That's one reason I like the dialog with "Stop Script" and "Continue" buttons, it's easier to see which button means what. Reversing my explanantion ("You can continue to run the script, which might make your computer unresponsive, or stop its execution.") clears up the meaning but is completely against the bzutton order, which is why I don't like it as well... (In reply to comment #28) > How about: > +KillScriptTitle=Warning: Unresponsive script > +KillScriptMessage=A script on this page may be busy, or it may have stopped > responding. You can stop the script now, or you can continue to see if the > script will complete. > +StopScriptButton=Stop script > +WaitForScriptButton=Continue Now I know why Neil is the UI owner! ;-) That sounds quite good to me...
Comment 30•20 years ago
|
||
Yeah, I'll second Neil's proposal.
Reporter | ||
Comment 31•20 years ago
|
||
> I'm with you that it may be unclear about that. The problem with your wording is > though that users tend to click "Yes", which would mean continuing the script > with your wording. That's one reason I like the dialog with "Stop Script" and > "Continue" buttons, it's easier to see which button means what. Precisely. Yes and No require the user to read the text carefully in order to determine what the buttons will do; labeling the buttons with verbs allow the impatient user to merely glance at the text. From Apple's Human Interface Guidelines: "Button names should correspond to the action the user performs when pressing the button—for example, Erase, Save, or Delete." http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/ XHIGDialogs/chapter_9_section_2.html
Assignee | ||
Comment 32•20 years ago
|
||
Removes the brand bundle. Uses Neils proposed wording. jst: I considered being bold and forwarding your r/sr, but thought the better of it .. Or?
Assignee | ||
Updated•20 years ago
|
Attachment #172804 -
Attachment is obsolete: true
Attachment #173191 -
Flags: superreview?(jst)
Attachment #173191 -
Flags: review?(jst)
Comment 33•20 years ago
|
||
Comment on attachment 173191 [details] [diff] [review] version 1.0 Either way would've been fine with me :) r+sr=jst
Attachment #173191 -
Flags: superreview?(jst)
Attachment #173191 -
Flags: superreview+
Attachment #173191 -
Flags: review?(jst)
Attachment #173191 -
Flags: review+
Assignee | ||
Comment 34•20 years ago
|
||
Checked in by silver%warwickcompsoc.co.uk. Thanks! Marking FIXED. (please note that the original title and description of this bug don't apply anymore, since we don't use names in the dialog now)
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Comment 35•19 years ago
|
||
*** Bug 308359 has been marked as a duplicate of this bug. ***
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•