Closed
Bug 701374
Opened 13 years ago
Closed 13 years ago
Show go or search icon in awesomescreen field, as appropriate
Categories
(Firefox for Android Graveyard :: General, defect, P3)
Tracking
(firefox11 verified, fennec11+)
VERIFIED
FIXED
People
(Reporter: madhava, Assigned: mfinkle)
References
Details
Attachments
(7 files, 2 obsolete files)
(deleted),
application/zip
|
Details | |
(deleted),
application/zip
|
Details | |
(deleted),
patch
|
dougt
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
mfinkle
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
dougt
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
lucasr
:
review+
|
Details | Diff | Splinter Review |
(deleted),
patch
|
Details | Diff | Splinter Review |
We want to make it very clear to people, as they type in the url/search field on the awesomescreen, that they can both search and enter URLS.
People are used to entering URLs, so our focus has to be more on making it clear that they can also search from here.
An idea that's come up before, but that we should really do this time (given that we're only supporting on search engine at a time, so the solution is sufficient), is to show a go icon ( -> ) at the end of the field when what the user has entered is actually a URL. Othewise, as they type, we should show a search icon (a magnifier) to show that when they hit enter, or tap the icon, they will instead be initiating a search.
Updated•13 years ago
|
Priority: -- → P3
Comment 3•13 years ago
|
||
Ian and Madhava, I need assets to implement this.
Comment 4•13 years ago
|
||
Comment 5•13 years ago
|
||
(In reply to Ian Barlow (:ibarlow) from comment #4)
> Created attachment 574923 [details]
> Assets for GO and Search icons, for GB and ICS
Missing the mdpi images for ICS?
Comment 6•13 years ago
|
||
Madhava and Ian, if this icon is clickable, shouldn't it have a pressed state as well? Or are you ok with just keeping the same image, even when pressed?
Comment 7•13 years ago
|
||
Lucas, using the same image for both states (off and touch) is fine. Whatever focus area we would add would be covered by your finger, so it wouldn't be particularly useful.
Comment 8•13 years ago
|
||
(In reply to Ian Barlow (:ibarlow) from comment #7)
> Created attachment 575435 [details]
> mdpi assets for ICS
>
> Lucas, using the same image for both states (off and touch) is fine.
> Whatever focus area we would add would be covered by your finger, so it
> wouldn't be particularly useful.
Yeah, I assumed so. Just checking. Thanks.
Comment 9•13 years ago
|
||
Attachment #576129 -
Flags: review?(doug.turner)
Comment 10•13 years ago
|
||
Attachment #576130 -
Flags: review?(doug.turner)
Comment 11•13 years ago
|
||
Attachment #576131 -
Flags: review?(doug.turner)
Assignee | ||
Comment 12•13 years ago
|
||
Comment on attachment 576130 [details] [diff] [review]
(2/3) Add native method to check creation of fixup URIs
You shouldn't need the class-level mURIFixup. Getting a service each time should be fast. It's already a singleton.
Also, I wonder if it would be more expedient to actually return the "fixed up" URL as a string (or null). That way we could send the proper string back to Gecko when we decide to navigate or search. No big deal I suppose, just a thought.
Assignee | ||
Updated•13 years ago
|
Attachment #576131 -
Flags: review?(doug.turner) → review+
Comment 13•13 years ago
|
||
(In reply to Mark Finkle (:mfinkle) from comment #12)
> Comment on attachment 576130 [details] [diff] [review] [diff] [details] [review]
> (2/3) Add native method to check creation of fixup URIs
>
> You shouldn't need the class-level mURIFixup. Getting a service each time
> should be fast. It's already a singleton.
Given that we're calling this function as the user types on awesomebar, we want this call to be as fast as possible. I assumed it was not fast enough because of the way nsDocShell uses nsURIFixup (i.e. gets service instance once and reuse it everywhere).
Anyway, I can change canCreateFixupURI() to get service on each call if it doesn't impact performance.
> Also, I wonder if it would be more expedient to actually return the "fixed
> up" URL as a string (or null). That way we could send the proper string back
> to Gecko when we decide to navigate or search. No big deal I suppose, just a
> thought.
Returning the URL as string would add a little overhead in canCreateFixupURI to convert the nsURI to a jstring. Returning a boolean allows us to return slightly faster and Gecko will fixup the URL before loading it anyway.
Assignee | ||
Comment 14•13 years ago
|
||
Faster is better :)
Updated•13 years ago
|
Attachment #576129 -
Flags: review?(doug.turner) → review+
Comment 15•13 years ago
|
||
Comment on attachment 576130 [details] [diff] [review]
(2/3) Add native method to check creation of fixup URIs
Review of attachment 576130 [details] [diff] [review]:
-----------------------------------------------------------------
lets see one more patch.
Note - the widget changes and APKOpen changes need to be put on m-c.
::: widget/src/android/AndroidBridge.cpp
@@ +367,5 @@
> {
> ALOG_BRIDGE("AndroidBridge::NotifyAppShellReady");
> mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass, jNotifyAppShellReady);
> +
> + //CallGetService(NS_URIFIXUP_CONTRACTID, &mURIFixup);
remove comment
@@ +593,5 @@
> +
> + if (!mURIFixup)
> + return false;
> +
> + nsCOMPtr<nsIURI> targetURI = nsnull;
you do not need to null a nsCOMPtr
@@ +595,5 @@
> + return false;
> +
> + nsCOMPtr<nsIURI> targetURI = nsnull;
> +
> + nsresult rv = mURIFixup->CreateFixupURI(aURIText,
No need to check for result per contract. "Returns a wellformed URI or nsnull if it can't."
::: widget/src/android/AndroidBridge.h
@@ +408,5 @@
> jclass jEGLContextClass;
> jclass jEGL10Class;
>
> + // Needed for canCreateFixupURI()
> + nsCOMPtr<nsIURIFixup> mURIFixup;
Does this really need to be saved? is it called that much?
Attachment #576130 -
Flags: review?(doug.turner) → review-
Comment 16•13 years ago
|
||
(In reply to Doug Turner (:dougt) from comment #15)
> Comment on attachment 576130 [details] [diff] [review] [diff] [details] [review]
> (2/3) Add native method to check creation of fixup URIs
>
> Review of attachment 576130 [details] [diff] [review] [diff] [details] [review]:
> -----------------------------------------------------------------
>
> lets see one more patch.
>
> Note - the widget changes and APKOpen changes need to be put on m-c.
Ok.
> ::: widget/src/android/AndroidBridge.cpp
> @@ +367,5 @@
> > {
> > ALOG_BRIDGE("AndroidBridge::NotifyAppShellReady");
> > mJNIEnv->CallStaticVoidMethod(mGeckoAppShellClass, jNotifyAppShellReady);
> > +
> > + //CallGetService(NS_URIFIXUP_CONTRACTID, &mURIFixup);
>
> remove comment
Done.
> @@ +593,5 @@
> > +
> > + if (!mURIFixup)
> > + return false;
> > +
> > + nsCOMPtr<nsIURI> targetURI = nsnull;
>
> you do not need to null a nsCOMPtr
Fixed.
> @@ +595,5 @@
> > + return false;
> > +
> > + nsCOMPtr<nsIURI> targetURI = nsnull;
> > +
> > + nsresult rv = mURIFixup->CreateFixupURI(aURIText,
>
> No need to check for result per contract. "Returns a wellformed URI or
> nsnull if it can't."
Fixed.
> ::: widget/src/android/AndroidBridge.h
> @@ +408,5 @@
> > jclass jEGLContextClass;
> > jclass jEGL10Class;
> >
> > + // Needed for canCreateFixupURI()
> > + nsCOMPtr<nsIURIFixup> mURIFixup;
>
> Does this really need to be saved? is it called that much?
Yep. It's called each time user types on awesomebar text entry. So, calls to canCreateFixupURI() have to be really fast.
Comment 17•13 years ago
|
||
Doug, shall I land patches 1/3 and 2/3 on m-c? Or just 1/3?
Attachment #576130 -
Attachment is obsolete: true
Attachment #576447 -
Flags: review?(doug.turner)
Updated•13 years ago
|
Attachment #576447 -
Flags: review?(doug.turner) → review+
Comment 18•13 years ago
|
||
I pushed the m-c bits and merged back to birch:
https://hg.mozilla.org/mozilla-central/rev/0ea84b44a7f1
https://hg.mozilla.org/mozilla-central/rev/ae734929219b
Comment 19•13 years ago
|
||
for example:
Dougs-MacBook-Air:birch dougt$ hg qimport https://bug701374.bugzilla.mozilla.org/attachment.cgi?id=576131
hgadding attachment.cgi?id=576131 to series file
Dougs-MacBook-Air:birch dougt$ hg qpush
applying attachment.cgi?id=576131
unable to find 'embedding/android/AwesomeBar.java' for patching
4 out of 4 hunks FAILED -- saving rejects to file embedding/android/AwesomeBar.java.rej
unable to find 'embedding/android/Makefile.in' for patching
3 out of 3 hunks FAILED -- saving rejects to file embedding/android/Makefile.in.rej
unable to find 'embedding/android/resources/layout/awesomebar_search.xml' for patching
1 out of 1 hunks FAILED -- saving rejects to file embedding/android/resources/layout/awesomebar_search.xml.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
errors during apply, please fix and refresh attachment.cgi?id=576131
Comment 20•13 years ago
|
||
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Updated•13 years ago
|
Flags: in-litmus?(fennec)
OS: Mac OS X → Android
Hardware: x86 → ARM
Whiteboard: [QA+]
Comment 21•13 years ago
|
||
Build ID: Mozilla/5.0 (Android; Linux armv7l; rv:11.0a1) Gecko/20111128 Firefox/11.0a1 Fennec/11.0a1
Device: HTC Desire Z
OS: Android 2.3
Only go icon(->) is displayed in awesomescreen field and if url is correctly entered then page is loaded.
Search icon is not displayed. If user types a random string("vbhdxbtet") and presses the go icon(->), the browser will try to load www.vbhdxbtet.com, but since the page does not exist: "Server not found" is displayed.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Comment 22•13 years ago
|
||
(In reply to Camelia Urian from comment #21)
> Build ID: Mozilla/5.0 (Android; Linux armv7l; rv:11.0a1) Gecko/20111128
> Firefox/11.0a1 Fennec/11.0a1
> Device: HTC Desire Z
> OS: Android 2.3
>
> Only go icon(->) is displayed in awesomescreen field and if url is correctly
> entered then page is loaded.
> Search icon is not displayed. If user types a random string("vbhdxbtet") and
> presses the go icon(->), the browser will try to load www.vbhdxbtet.com, but
> since the page does not exist: "Server not found" is displayed.
Camelia, this is a slightly different issue. The default behaviour of Gecko is to try to create a URL out of a single typed word. So the current behaviour in AwesomeBar is consistent with that (i.e. if you type only a word, say, "google", Gecko will then try loading it as "www.google.com"). In order to implement the feature as described., we'd need to change Gecko's behaviour in Fennec first so that if you only type a word, it would do a web search.
So, I suggest you to file a separate bug like "Perform web search when user types only a word in AwesomeBar" and keep this one as fixed.
Updated•13 years ago
|
Status: REOPENED → RESOLVED
Closed: 13 years ago → 13 years ago
Resolution: --- → FIXED
Reporter | ||
Comment 23•13 years ago
|
||
Hi guys -
I think we stopped trying to fixup the url on desktop because it's kind of confusing for the user; regardless, it's _really_ not appropriate for something that is a URL *and* search bar. Every time I type "wombat", for example, the button stays as an arrow (even though it's not a URL) and hitting go takes me to some geocities page about wombats that doesn't exist any more. How would I do a search from this bar in this case?
Reporter | ||
Updated•13 years ago
|
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Reporter | ||
Comment 24•13 years ago
|
||
For reference, when I type "google" into my location bar in desktop nightly, I end up on a google search results page for the string "google" -- it doesn't just take me to google.com
Comment 26•13 years ago
|
||
A heads-up: We're going to changing a bunch of things in nsIURIFixup in bug 700470 to make this work better for Firefox desktop too.
There's no hard dependency here, but since they are closely related and this will likely land before the other bug, I'll make it block that one.
Blocks: 700470
Assignee | ||
Comment 27•13 years ago
|
||
Updated Summary:
As the user types, we want to change the UI to indicate whether a navigation or search is the expected outcome
* The UI changes happen in Java
* The search/navigate happens in Gecko
The simplest thing we can think of for the moment:
* As the user types, attempt to convert the string into a URL using Java helper classes
* If it succeeds, show the "go" button
* If it fails, show the "search" button
* When the user commits to the action (taps button or presses GO keyboard button)
* Send the string, as is, to Gecko
* Gecko needs to perform the same "can I convert this string to a URL" test as Java
* If it succeeds, call loadURI
* If it fails
* Get the current search engine
* Build a search submission string using the text passed to Gecko
* call loadURI with the search submission string (and possible postData)
This plan does not use nsIURIFixup at all. Any feedback? How badly have I screwed up?
Frank's bug/patch has some nice ideas for doing a background lookup on a "fixed up" version of the string. If that succeeded, we could show a doorhanger "did you mean 'www.bacon.com' ?"
Assignee | ||
Comment 28•13 years ago
|
||
This patch takes the simpler approach noted above:
* Backs out the JNI canCreateURIFixup method
* Adds a simple isSearchUrl based on the logic in nsDefaultURIFixup::KeywordURIFixup
* It uses the index location of ' ', '.', and ':' in the string to guess if the string is possibly a real URL address or not.
* Based on the guess, we show/hide the go/search images
* We use isSearchUrl to test any potential URL string, since pressing GO on the keyboard can also start a load.
Seems to work OK for me in my simple testing. Remember, isSearchUrl does not try to validate the URL. We don't really care if the text is a valid URL or not. We just use it to make a good guess about whether to search or navigate.
Typing 'ebay.c' will attempt to load ebay.c not do a search for ebay.c
Assignee: lucasr.at.mozilla → mark.finkle
Attachment #581188 -
Flags: review?(lucasr.at.mozilla)
Comment 29•13 years ago
|
||
Comment on attachment 581188 [details] [diff] [review]
updated patch
Review of attachment 581188 [details] [diff] [review]:
-----------------------------------------------------------------
I'd like to see the suggested refactoring in and the questions answered before I give a r+.
::: mobile/android/base/AwesomeBar.java
@@ +208,5 @@
> cancelAndFinish();
> return true;
> }
>
> + private boolean isSearchUrl(String text) {
Maybe trim the string before doing the indexOf() calls?
@@ +213,5 @@
> + int colon = text.indexOf(':');
> + int dot = text.indexOf('.');
> + int space = text.indexOf(' ');
> +
> + boolean spacedOut = space > -1 && (space < colon || space < dot);
What's "(space < colon || space < dot)" checking for exactly? It would be good add a comment with example inputs and the expect outcomes here to make it clear what this methods is doing.
@@ +248,5 @@
> private void openUrlAndFinish(String url) {
> + if (isSearchUrl(mText.getText().toString())) {
> + openSearchAndFinish(mText.getText().toString(), "__default__");
> + return;
> + }
I'd prefer to have a method like submitAndFinish() that has something like:
if (isSearchUrl(...))
openSearchAndFinish(...)
else
openUrlAndFinish(...)
And use it everywhere openUrlAndFinish() is being used now.
::: mobile/android/chrome/content/browser.js
@@ +546,5 @@
> + else
> + engine = Services.search.getEngineByName(args.engine);
> +
> + if (engine)
> + uri = engine.getSubmission(args.url).uri;
Don't you need to fixup the args.url here if engine is null? Otherwise you'll use args.url with no fixup as a result.
Attachment #581188 -
Flags: review?(lucasr.at.mozilla) → review-
Assignee | ||
Comment 30•13 years ago
|
||
This patch makes the suggested changes, except the URI fixup if no search engine was found. I'm not sure we want to do that. If we do, a new bug can be filed.
Attachment #581188 -
Attachment is obsolete: true
Attachment #581256 -
Flags: review?(lucasr.at.mozilla)
Assignee | ||
Comment 31•13 years ago
|
||
A diff between patches to help see the changes
Comment 32•13 years ago
|
||
Comment on attachment 581256 [details] [diff] [review]
updated patch 2
Review of attachment 581256 [details] [diff] [review]:
-----------------------------------------------------------------
Looks good.
Attachment #581256 -
Flags: review?(lucasr.at.mozilla) → review+
Assignee | ||
Comment 33•13 years ago
|
||
Status: REOPENED → RESOLVED
Closed: 13 years ago → 13 years ago
Resolution: --- → FIXED
Updated•13 years ago
|
tracking-fennec: --- → 11+
Comment 34•13 years ago
|
||
Testcase added in test run for Firefox 11 and 12:
- https://litmus.mozilla.org/show_test.cgi?id=44847
- https://litmus.mozilla.org/show_test.cgi?id=44848
Flags: in-litmus?(fennec) → in-litmus+
Updated•13 years ago
|
status-firefox11:
--- → fixed
Comment 35•13 years ago
|
||
Verified with:
12.0a1 (2012-01-12) Device: Samsung Nexus S Android(2.3.6)
11.0a2 (2012-01-12) Device: Samsung Nexus S Android(2.3.6)
Search icon in displyed in url field for random string entered. If the string is an url then "go" icon (->) is displayed.
Status: RESOLVED → VERIFIED
Updated•13 years ago
|
Whiteboard: [QA+]
Updated•4 years ago
|
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•