Closed
Bug 990066
Opened 11 years ago
Closed 4 years ago
Update generator function declarations in HomeProvider.jsm
Categories
(Firefox for Android Graveyard :: Data Providers, defect)
Tracking
(Not tracked)
RESOLVED
INCOMPLETE
Firefox 32
People
(Reporter: Margaret, Assigned: zliu.ur, Mentored)
References
Details
(Whiteboard: [lang=js])
Attachments
(1 file, 1 obsolete file)
3.11 KB,
patch
|
Margaret
:
review+
|
Details | Diff | Splinter Review |
Instead of returning Task.spawn all over the place, we could use Task.async. See this post for more details:
http://mykzilla.blogspot.com/2014/03/simplify-asynchronous-method.html
Hi Margaret:
Can I try to work on this? This task seems feasible for a newb like me :)
(In reply to :Margaret Leibovic from comment #0)
> Instead of returning Task.spawn all over the place, we could use Task.async.
> See this post for more details:
>
> http://mykzilla.blogspot.com/2014/03/simplify-asynchronous-method.html
Reporter | ||
Comment 2•11 years ago
|
||
(In reply to zliu.ur from comment #1)
> Hi Margaret:
>
> Can I try to work on this? This task seems feasible for a newb like me :)
>
> (In reply to :Margaret Leibovic from comment #0)
> > Instead of returning Task.spawn all over the place, we could use Task.async.
> > See this post for more details:
> >
> > http://mykzilla.blogspot.com/2014/03/simplify-asynchronous-method.html
Sure thing! I haven't used Task.async myself, so you're venturing into uncharted territory, but I think that blog post does a good job outlining how to use it.
Here are some other docs that would also help you get familiar with the code in HomeProvider.jsm:
https://developer.mozilla.org/en-US/Add-ons/Firefox_for_Android/API/HomeProvider.jsm
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm
This code's asynchronous nature can be confusing, so let me know if you need help!
Assignee: nobody → zliu.ur
Hi Margaret:
I am new to javascript and did a little bit study on the bug. So far I have 3 questions.
1. Should I remove all the the Task.spawn() and replace them with the Task.async as in
http://mykzilla.blogspot.com/2014/03/simplify-asynchronous-method.html?
2. The Task.spawn in the HomeProvider.jsm does not use * as generator function, but they all have yield keyword in the body, should I add * to the function?
3. After I made some modifications, the whole project can pass build and can run on my android tablet. But how can I test these specific functions? How can I map a function to a functionality in the daily use of the app?
Thanks a lot for your help
Regards
Zack
Reporter | ||
Comment 4•11 years ago
|
||
(In reply to zliu.ur from comment #3)
> 1. Should I remove all the the Task.spawn() and replace them with the
> Task.async as in
> http://mykzilla.blogspot.com/2014/03/simplify-asynchronous-method.html?
You'll want to look through the Task.spawn calls on a case-by-case basis to see where it would be appropriate to swap this in.
However, I just looked more closely through the code, and I'm not actually sure it makes sense for us to use Task.async, since we would still want to keep these helper methods that current wrap the Task.spawn calls. I'm sorry, I should have looked into this more closely before filing this bug :(
> 2. The Task.spawn in the HomeProvider.jsm does not use * as generator
> function, but they all have yield keyword in the body, should I add * to the
> function?
I hadn't seen this syntax before, but doing a bit of research, I found that it's the new ECMA spec for generators. Although it's currently optional, it's good practice to use to prepare for the day it becomes non-optional. So yes, we should update that. Good find!
Let's morph this bug to just be about addressing that issue.
> 3. After I made some modifications, the whole project can pass build and can
> run on my android tablet. But how can I test these specific functions? How
> can I map a function to a functionality in the daily use of the app?
You should run testHomeProvider, which is designed to exercise these calls:
http://mxr.mozilla.org/mozilla-central/source/mobile/android/base/tests/testHomeProvider.js
This is run through the robocop test harness, which you can learn how to run here:
https://wiki.mozilla.org/Auto-tools/Projects/Robocop#Running_tests
Summary: Use Task.async in HomeProvider.jsm → Update generator function declarations in HomeProvider.jsm
Reporter | ||
Comment 5•11 years ago
|
||
Hi Zack, I just wanted to check in and see how things are going here. Let me know if you need any help!
Flags: needinfo?(zliu.ur)
(In reply to :Margaret Leibovic from comment #5)
> Hi Zack, I just wanted to check in and see how things are going here. Let me
> know if you need any help!
Hi Margaret:
Sorry for the delay, I was busy with the final exams for the last few weeks.
I was managed to get the automatic test up and running.
In you previous reply, you said
"However, I just looked more closely through the code, and I'm not actually sure it makes sense for us to use Task.async, since we would still want to keep these helper methods that current wrap the Task.spawn calls. I'm sorry, I should have looked into this more closely before filing this bug :("
Should I go ahead and modify the generators?
Thanks for your advice.
Zack
Flags: needinfo?(zliu.ur)
Reporter | ||
Comment 7•11 years ago
|
||
No problem! I hope your exams went well :)
Yes, I think we should just go ahead and modify the generators, so this turned out to be a pretty simple bug.
Once you have a patch ready, you can follow these steps to format it and attach it to the bug:
https://developer.mozilla.org/en-US/docs/Mercurial_FAQ#How_can_I_generate_a_patch_for_somebody_else_to_check-in_for_me.3F
Then you should set review? to me, and I'll review it for you and help you land it in the tree.
Then I can suggest more bugs for you to work on if you're interested :)
Hi margaret:
I did the modifications and that passed the testHomeProvider test in Robocop. Please see the patch in the attachment.
If there are any more bugs that is suitable for me, please feel free to let me know
Regards
Zack
Attachment #8428860 -
Flags: review?(margaret.leibovic)
Reporter | ||
Comment 9•11 years ago
|
||
Comment on attachment 8428860 [details] [diff] [review]
add-star-for-generator-functions
Review of attachment 8428860 [details] [diff] [review]:
-----------------------------------------------------------------
::: mobile/android/modules/HomeProvider.jsm
@@ +203,5 @@
> /**
> * Creates the database schema.
> */
> function createDatabase(db) {
> + return Task.spawn(function *create_database_task() {
Looking through the rest of the code base, our normal style is to put the asterisk directly at the end of the function keyword. It also seems like we mostly use anonymous generator functions with Task.jsm, so this would be more consistent as:
Task.spawn(function* () { ... });
Could you update the patch to do that instead? Other than that, this patch is looking good!
Attachment #8428860 -
Flags: review?(margaret.leibovic) → feedback+
Reporter | ||
Comment 10•11 years ago
|
||
(In reply to zliu.ur from comment #8)
> If there are any more bugs that is suitable for me, please feel free to let
> me know
If you're interested in working on more bugs related to these home panels APIs, here's a list of mentor bugs that might interest you:
https://bugzilla.mozilla.org/buglist.cgi?quicksearch=blocked%3A941312%20sw%3Amentor%20%40nobody&list_id=10299494
Assignee | ||
Comment 11•11 years ago
|
||
Hi margaret:
I updated the generator functions and upload the patch to the attachment, please help me review it and let me know if you have any feedback
Thanks
Regards
Zack
Attachment #8429056 -
Flags: review?(margaret.leibovic)
Reporter | ||
Comment 12•11 years ago
|
||
Comment on attachment 8429056 [details] [diff] [review]
add-star-for-generator-functions-1.
Review of attachment 8429056 [details] [diff] [review]:
-----------------------------------------------------------------
Looks good, thanks!
Attachment #8429056 -
Flags: review?(margaret.leibovic) → review+
Reporter | ||
Updated•11 years ago
|
Attachment #8428860 -
Attachment is obsolete: true
Reporter | ||
Comment 13•11 years ago
|
||
I made a try server run to make sure this doesn't cause any test failures:
https://tbpl.mozilla.org/?tree=Try&rev=07ce2a72a0da
If the tests pass, we can set the "checkin-needed" keyword on this bug to have someone land this patch.
Reporter | ||
Updated•11 years ago
|
Keywords: checkin-needed
Comment 14•11 years ago
|
||
Keywords: checkin-needed
Whiteboard: [mentor=margaret][lang=js] → [mentor=margaret][lang=js][fixed-in-fx-team]
Comment 15•11 years ago
|
||
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Whiteboard: [mentor=margaret][lang=js][fixed-in-fx-team] → [mentor=margaret][lang=js]
Target Milestone: --- → Firefox 32
Reporter | ||
Comment 16•11 years ago
|
||
Hey Zack, I had to back out this patch because it caused bug 1017554. I suspect that these generator functions are not doing what we expect and causing us not to call refreshDataset, or causing us to not actually save data properly. Fixing this will require some investigation.
https://hg.mozilla.org/integration/fx-team/rev/a195b689607a
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Reporter | ||
Comment 17•11 years ago
|
||
Also, bug 968530 would be another great bug to work on. If that had been fixed, we would have caught this problem in an automated test :)
Updated•10 years ago
|
Mentor: margaret.leibovic
Whiteboard: [mentor=margaret][lang=js] → [lang=js]
Comment 18•4 years ago
|
||
We have completed our launch of our new Firefox on Android. The development of the new versions use GitHub for issue tracking. If the bug report still reproduces in a current version of [Firefox on Android nightly](https://play.google.com/store/apps/details?id=org.mozilla.fenix) an issue can be reported at the [Fenix GitHub project](https://github.com/mozilla-mobile/fenix/). If you want to discuss your report please use [Mozilla's chat](https://wiki.mozilla.org/Matrix#Connect_to_Matrix) server https://chat.mozilla.org and join the [#fenix](https://chat.mozilla.org/#/room/#fenix:mozilla.org) channel.
Status: REOPENED → RESOLVED
Closed: 11 years ago → 4 years ago
Resolution: --- → INCOMPLETE
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
•