text:
Welcome To Spirit HalloweenX
Thank you for signing up to receive Spirit Halloween emails!
You will now be eligible to receive special email offers and discounts.
So Much Fun It's Scary!® - Only Days Until HALLOWEEN!
Halloween Costumes / ADULT / WOMENS / OCCUPATIONS / Military / Pretty Paratrooper Adult Womens Costume
Pretty Paratrooper Adult Womens Costume
$64.99 $49.99 USD — You Save 23%!
Enter Zip Code to check In-Store Availability
Zip Code is Required
Zip Code can contains only 5 numeric characters.
Enter a New Zip Code
Due to the large size of some of the items on our site, additional shipping fees are assessed by the carrier delivering these products.
You will see an additional shipping charge added to your order of either $10, $20 or $25.
The fee assessed is based upon the size of the product. Oversize items are excluded from shipping promotions.
You will see an additional shipping charge added to your order of either $10, $20 or $25.
The fee assessed is based upon the size of the product. Oversize items are excluded from shipping promotions.
Complete the Look!
Everyone will salute you wearing this Pretty Paratrooper Adult Women's Costume. Form fitting camo bodysuit with zip up chest gives you the chance to show some skin while harness straps you in. You're tougher than the boys - and sexier!
- Pretty Paratrooper Adult Women's Costume includes:
- Jumpsuit
- Harness
- Not included:
- Gloves
- Boots
- Materials:
- 96% Polyester
- 4% Spandex
- Wash/Care Instructions:
- Hand Wash Cold
- Only Non-Chlorine Bleach When Needed
- Drip Dry
- Do Not Iron
Additional Product Information:
All Reviews
Already own it? Write a Review
Review Snapshot® by PowerReviews
67% of respondents would recommend this to a friend.
Customers most agreed on the following attributes:
Comfortable (3), Cute (3), Lots of fun (3)
Best Uses:
Costume party (3), Just for fun (3)
Describe Yourself:
Adventurous style (3), Trendy style (3)
Was this a gift?:
No (3)
Reviewed by 3 CustomersSort by:
Displaying Reviews 1-3 of 3Back to Top
Fun, comfy, edge of sexy and cute
Comfortable, Cute, Fits Well, Lots of Fun
Best Uses:
Costume Party, Just For Fun, Trick Or Treating
Describe Yourself:
Adventurous, Trendy
Was this a gift?:
Bottom Line:
Yes, I would recommend this to a friend
I'm using this as a halloween costume, then for our Christmas pajama-jam party. So I will get a few uses out of it this year.
[1 of 1 customers found this review helpful]
By Geri the hairy from San Fransico, CA on 9/24/2014
Authentic Looking, Cute, Lots of Fun
Irregular Fit, Poor Quality
Best Uses:
Costume Party, Just For Fun
Describe Yourself:
Adventurous, Classic, Trendy
Was this a gift?:
Bottom Line:
No, I would not recommend this to a friend
This is a really cute costume, but it doesn't fit me right. Weird fit and too loose.
[3 of 3 customers found this review helpful]
sexy paratrooper
Authentic Looking, Comfortable, Comfy, Cute, Fits Well, Lots of Fun, Unique
Best Uses:
Costume Party, Just For Fun, Trick Or Treating, Wear To School/Work
Describe Yourself:
Adventurous, Classic, Conservative, Trendy
Was this a gift?:
Bottom Line:
Yes, I would recommend this to a friend
very nice fit, spot-on sizing
Displaying Reviews 1-3 of 3Back to Top
- All deliveries are pending approval and merchandise availability.
- Delivery time includes 24-48 business hours for processing.
- Orders are processed Monday-Friday.
- Our carriers DO NOT require a signature… If you are not home, the package will be left at your address.
- Orders are NOT processed or shipped on Saturdays, Sundays, or holidays.
- Second Day and Overnight orders must be in before 12 PM EST to ship out same business day.
- Second Day and Overnight orders placed after 12 PM EST will ship the following business day.
- Second Day and Overnight orders are delivered Monday-Friday. They are NOT delivered Saturday or Sunday.
- Watch for e-mails from us. Check your spam folder, as our e-mails do sometimes end up there! We may need additional information to process your order.
- We will gladly accept products for returns within 14 days from when you received your purchase. We accept returns that don't appear to be worn, are in new condition, and are in their original packaging. Read More >>
Sign Up Today & Receive Discounts, Exclusive Offers & Breaking News!
I agree to receive Spirit Halloween Superstores LLC's newsletter containing news, updates and promotions regarding Spirit Halloween Superstores LLC's products. You can withdraw your consent at any time. Please refer to our Privacy Policy or Contact Us for more details


text:
DMV to Internet-less New Yorkers: Get in Line
By Jared Chausow
By Katie Toth
By Elizabeth Flock
City Hid Facts From Feds About Rikers
By Albert Samaha
Flood Wall Street Gets Pepper Sprayed and Arrested
By Anna Merlan
By Jon Campbell
Report Sheds Light on Anti-Muslim Bias
By Jon Campbell
Rikers Island Lawsuits Over Diabetic Care
By Albert Samaha
The rock opera, conceived by Puerto Rican musician-director Ricardo Ortiz, who also plays the Young Man, is a musical jambalaya fusing Afro-Cuban rhythms, roots, rock, reggae, and bossa nova. Armed with his sharp Dyna-felt hat, electric guitar, and bass voice, Ortiz is the perfect image of the adventure traveler. The journey begins, and as if by magic a parallel twist to the story emerges: The audience is made to feel that we too are riding the Eggmobile. We travel with the music: congas, guitars, drums, a bass, a sax, a chorus, a flute, even a big black cat lead the way. The drums don't lose a beat, the trumpet's bleat sets our blood jumping, the vocals mesmerize, and in a split second all instruments explode, spreading a contagious energy we can no longer ignore.
Mr. Ortiz is accompanied on vocals by the lovely Mrs. White, played by Lorenda Robinson, who evokes the great blues singers of oldher voice throbs with the power of a pure heart. Her persona is awesome and bewitching when she sings, "I'm the force behind all that's good/I'll get rid of all your blues, and the demons that will be sent to you/I'll help you drive them away."
Evil is personified by the aptly named Mr. Dark, played by Martin Huq, whose mission is to gobble up the Young Man's soul: "I don't want no other young man/I'll stick you in my demon gang/I'll get you red wings, a tail, and some horny horns." As Mr. Huq slithers across the stage in Mick Jagger fashion, his sinister agenda takes possession of the audience's attention.
When asked where the idea for a rock opera about an Eggmobile came from, Ortiz says, "When I arrived in New York, I encountered more closed doors than I expected. No shows. No opportunities. No faith. Nada. The only real thing in this limbo was the certainty that there were many people like me trying to do the same thing and being continuously turned away. So I came up with a way to express the hardships every artist encounters when they arrive in the city, and although The Young Man & the Eggmobile is an autobiographical account of my journey here, I would characterize it as the autobiography of the NYC artist."
Because the journey is a work in progress, we still don't know where the Young Man is heading or if he will ever reach the Magnet, but does it really matter? Those of us that have had the opportunity to be a part of the Eggmobile experience have come to understand that what's important is the feeling of connection one gets with the music and musicians alike. Get ready to fly with the angels.
Sponsor Content

subset: commoncrawl


text:
Similar Products:
Average rating from 6 reviews.
Average rating from 4 reviews.
Average rating from 35 reviews.
Editor's Best Lists:
Products We Are Testing:
Pink Cat Brush
Average rating from 10 reviews.
(4.6 out of 5, based on 10 reviews)
Photosadd photo
Reader's Reviews (10)
Little Pink Brush
posted 6 years ago
My cats like this because it just feels good but it doesn't really get the undercoat. Still the grooming and feel good part is not to be taken lightly as it's a nice social session.
Pros: Feels good
Cons: doesn't get undercoat
0 of 0 people found this review helpful.
Did you?
Want to review a product, but not finding it? Just add it and review it!
Recent Product Reviews
November 15, 2014 | By Robyn
July 14, 2013 | By Xiaoxiao111
Pink is my favorite color these are wonderful.I will recommend a good website fou you: www.9footballshirt.org
Freshpet Select Roasted Meals for Cat
June 28, 2013 | By Kittymom314
I introduced this food to my two cats, one is a senior at 13 years and the other is about 7 years. Both females. The 7 year old is a new addition, recently adopted :) Because of their age differenc… more ›


text:
A Practical Introduction to Clinical Data Acquisition Standards Harmonization (CDASH)
Date Added: May 2010
Format: PDF
The goal when putting together the initial domain streams was to find out which data fields are essential to the analysis of clinical data, and collect only that data in a standard way. In order to do this, CDASH has provided clear definitions, SDTM mapping (if relevant), CRF completion instructions and additional sponsor information for each data element. The focus of CDASH is on data collection, not data reporting. In some instances the optimal data collection method conflicts with the Study Data Tabulation Model (SDTM) for reporting data. In these cases additional transformations and derivations may be needed to create the final SDTM compliant datasets.


text:
191 results
SORT BY Relevancy
The Kensington RuneStone
in Paranormal
In 1898, Swedish immigrant farmer Olof Ohman discovered a 202-lb. tablet engraved with runes while words the fields on his Douglas County, Minnesota property. Ohman claimed the stone was proof that Vikings were in America before Christopher Columbus, but was quickly ruled to be a fraud.
More than 100 years later, geologist Scott Wolter brought the Kensington Runesone to his lab and performed modern forensic studies on it. Today, Dr. Wolter shares his findings and puts the mystery of The Kensington Runestone in The Right Perspective.
Dr. Wolter's website is: kensingtonrunestone.com
New Music Inferno w/ Juliet Simms, Microwave & Kensington Moore!!!
in Music
Juliet Simms - Blues/Soul/Rock Singer/Songwriter...New EP "All Or Nothing" out now...Playing all of the Vans Warped Tour 2015...More tour dates to come soon..Check out all her music, tour dates & more @ www.facebook.com/JulietSimms
Microwave - Atlanta based Punk/Rock band...New album "Stovall" out now...Headed out on tour beginning this Friday all the way up to SXSW in Austin,TX on March 20th...Check out their music,tour dates & more @ www.mcrwv.com
Kensington Moore - Pop/Singer/Songwriter from Kentucky...New EP "Queensland" out now...Check her out on tour beginning Feb 25th and throughout the next couple of months...Check out all of her music, tour dates & more @ www.facebook.com/kensimooremusic
Wilbert Jones "The Wilbert Jones Company"
in Food
Wilbert Jones is the president of The Wilbert Jones Company, Inc., a Chicago based 21 year old food/beverage and marketing company. He is the author of three cookbooks, The New Soul Food Cookbook (Carol Publishing Group, 1996), Mama's Tea Cakes (Kensington, 1998), and Smothered Southern Foods (Kensington 2006). He was the host of 2008 PBS national television show, Healthy Heritage Kitchen. Jones visited the continent, Africa numerous of times and has written many published articles about African food/beverage ingredients. He has also lectured at several culinary institutions across America. His newest book, Images of America: Chicago Blues (Arcadia Publishing), was released on October 27, 2014.
In Home Skilled Nursing San Diego, 619-220-7600
in Health
San Diego In-Home Skilled Nursing http://www.FirstatofSanDiego.com Best Home Nursing Care in San Diego including Homecare, Skilled Nursing, Caregivers. Trained, Certified, Licensed Nurses, 92154, 92126, 92105
Senior Health: 3 Tips For Prolonging Vitality
Taking steps to prolong senior health is a worthwhile goal.
For families with aging loved ones, learning how to maintain physical and mental health into the golden years is a smart, sensible strategy. Here are three tips for prolonging senior health and vitality.
The Benefits of Exercise Are Real
Regular physical activity makes it easier to maintain a healthy bodyweight, can improve sleep, prevent falls and has even been shown to boost mood and confidence.
Encouraging Social Involvement
Social participation can decrease feelings of isolation, depression, and help aging seniors maintain a sense of connectedness and well-being.
In Home Skilled Nursing Services
Professional in-home skilled nursing services provide the tools and resources seniors need to live independently. They offer help administering medications, performing daily activities, running errands and more.
People wanting to learn more are encouraged to pick up a copy of our free guide… "Critical Questions You Must Ask Before You Hire a Home Care Provider" Just give us a call 619-220-7600 or visit our website at: http://www.FirstatofSanDiego.com
In Home Skilled Nursing San Diego
In Home Skilled Nursing Chula Vista, 619-220-7600
in Health
In Home Skilled Nursing Chula Vista http://firstatofsandiego.com Best In-home Nursing Care in Chula Vista including Homecare, Home Nursing, Caregivers. Trained, Certified, Licensed Nurses, 91911, 91910, 91913
Healthy Aging For 60 And Over
Thriving as a healthy senior in America is often not as complicated as it sounds. If you are a senior, or have an aging loved one, here are some tips on how to live longer and better into the golden years.
Maintaining a Healthy Body Weight
The key is to eat a diet filled with vegetables, fresh fruits, lean proteins and grains. With proper nutrition and regular exercise, maintaining a healthy body weight, retaining muscle and feeling great long into the golden years is easy.
Keeping Doctor's Appointments and Check-ups
A proven way to optimize health and vitality while aging is to be proactive about medical care. Many conditions can be controlled easily if identified early on, and a proactive attitude about health saves countless lives.
Living Independently With the Help of Skilled In Home Nursing Care
The right in-home nursing service provides a wide range of assistance, from help administering medications to running errands. With expertise, companionship and guidance, many seniors look forward to having a helping hand.
People wanting to learn more are encouraged to pick up a copy of our free guide… "Critical Questions You Must Ask Before You Hire a Home Care Provider" Just give us a call 619-220-7600 or visit our website at: http://www.FirstatofSanDiego.com
In Home Skilled Nursing Chula Vista
On the Air With RT Convention Authors
The Annual RT BOOKLOVERS Convention is brought to you by RT BOOK REVIEWS Magazine. This year's convention will be at the Hyatt Regency Hotel in Dallas, Texas May 12th -17th.
Misha Elliott is an old movie watching, wine drinking, book-lover. Once a northerner she now calls the sweet state of Alabama her home. She can't remember a time when books weren't a part of her life. Writing gives her a reason to talk to the voices in her head. When she isn't writing you will find her talking about books with friends or at the beach with her toes in the sand.
Regina Jennings is homeschooling mother of four from Mustang, Oklahoma. She enjoys watching musicals with her kids, traveling with her husband and reading by herself. Regina is the author of A Most Inconvenient Marriage, Caught in the Middle, Love in the Balance and Sixty Acres and a Bride.
Anderson Harp is the author of the thrillers "Retribution" and "Born of War" (Kensington). He served in the Marines, taught artic survival, mountaineering, and was stationed around the globe. He created the USO's Operation Thriller and did two tours in the Persian Gulf visiting the troops. He is a recipient of the Non-Sibi Sed Patriae Award.
Tina DeSalvo's debut book, Elli, a Second Chance Novel, has received five star reviews and praise. Tina brings her love and passion for the rich culture, unique traditions and interesting people of Cajun Country and New Orleans where she has lived and worked. Before becoming a fiction writer, Tina was a television sports broadcaster where she is said to be the first woman football play-by-play announcer in Louisiana.
On the Air With Tyora Moody
Tyora Moody is an award-winning author and literary entrepreneur. Tyora has coined her fiction books as Soul-Searching Suspense. Her debut novel, When Rain Falls, was released March 2012. This is the first book in the Romantic Suspense driven Victory Gospel Series. The second book in the Victory Gospel Series, When Memories Fade, was released in April 2013. The final book in the series, When Perfection Fails was released March 2014. The series was published via Urban Christian/Kensington.
Hostile Eyewitness, the first book in the Serena Manchester Series will be released April 2015. This is a spin-off series from the Victory Gospel Series.
Tyora also writes Cozy Mysteries. Deep Fried Trouble, the first book in the Eugeena Patterson Mystery series was released June 2013. The second book in the series, Oven Baked Secrets, was released January 2015.
As a literary-focused entrepreneur, she has assisted countless authors with developing an online presence via her company, Tywebbin Creations LLC since 1999. Popular services include online publicity, social media management, book trailers and book covers.
In 2012, Tyora started Tymm Publishing LLC. Under her publishing company, she has published the Eugeena Patterson Mystery Series, Stepping Into Victory Anthologies and The Literary Entrepreneur's Training Series. On the 1st and 3rd Mondays, Tyora hosts The Literary Entrepreneur Podcast.
When Tyora isn't working for a client or doing something literary, she enjoys spending time with family, catching a movie on the big screen, and traveling. For more information about her literary endeavors, visit her online at TyoraMoody.com.
Getting to Know Authors Marcia King-Gamble and Lacha Scott Mitchell
in Books
Gamble fell in love with romance after reading my first Mills and Boon book at age six. She has degrees in psychology and theater were obtained in the United States which she has lived for most of her life. she made a comfortable living as a travel industry executive.Since 1998 Gamble has been published by Kensington, BET and St. Martin's Press and Harlequin. She now self publishes.
Lacha' self-published her memoir, Cancer The Silent Storm, Destiny's Child book series Volumes One and Two. As of February 2014, she was signed to the Urban Christian Imprint of Urban Books, owned by Best Selling author Carl Weber. Lacha' finds solace in her writing and had even started a blog to share some of her writing a few years back. Lacha' is married with four beautiful daughters and one grandson.
In Home Skilled Nursing La Jolla, 619-220-7600
in Health
In Home Skilled Nursing La Jolla, http://firstatofsandiego.com Best In-home Nursing Care in La Jolla including Homecare, Home Nursing, Caregivers. Trained, Certified, Licensed Nurses, 92037
3 Simple Health Strategies For Seniors
How to make lifestyle choices that lead to health and wellness.
Families with aging loved ones can help guide decision making for happier, healthier family members. Here are three simple health strategies for seniors that will help to make a positive, long lasting difference.
Get to the Root of Restless Sleep
Sleep declines with age naturally, and by age 70, a typical night of rest is just over 6 hours. A trip to the doctor can often uncover the root of sleep issues, whether it's chronic pain, improper medications or something more serious.
Boost Immunity With Smart Diet Choices
A robust immune system is vital for reducing the risk of getting sick and staying healthy year round. Great foods for supporting immunity are vegetables, fruits and whole grains.
Skilled In Home Nursing For Safety, Guidance and Care
Professional in home care offers a loved one the assistance they need to age at home independently. Help administering medicine, light housekeeping, even running errands helps seniors stay confident and independent.
People wanting to learn more are encouraged to pick up a copy of our free report… "Critical Questions You Must Ask Before You Hire a Home Care Provider" Just give us a call 619-220-7600 or visit our website at: http://www.FirstatofSanDiego.com
In Home Skilled Nursing La Jolla
Douglas Clegg joins Thorne & Cross: Haunted Nights LIVE!
in Books
Haunted Nights LIVE! hosts Tamara Thorne and Alistair Cross welcome NYT Bestseller, Douglas Clegg
Douglas Clegg is the New York Times bestselling, award-winning author of more than 30 books, including The Priest of Blood, Neverland and The Children's Hour. His work has been published by Simon & Schuster, Bantam Doubleday Dell, Kensington, Dorchester, Cemetery Dance Publications, Subterranean Press, as well as Alkemara Press in digital form.
In 1999, he launched the world's first publisher-sponsored e-serial novel, Naomi, which later went on to hardcover and paperback publication, and which Publisher's Weekly called "arguably, the first major work of fiction in cyberspace," and his short novel Purity was the first book of its kind on cell phones in the U.S. in the year 2001.
The Cliffhouse Haunting, the debut novel of Tamara Thorne and Alistair Cross will be available in March of 2015. Night Moves, the 5th installment of their serialized Gothic novel, The Ghosts of Ravencrest, is available now on Amazon.
This is a copyrighted, trademarked podcast owned solely by the Authors on the Air Global Radio Network LLC.
In Home Skilled Nursing Rancho Santa Fe, 619-220-7600
in Health
In Home Skilled Nursing Rancho Santa Fe http://firstatofsandiego.com Best In-home Care in Rancho Santa Fe including Homecare, Home Nursing, Caregivers. Trained, Certified, Licensed Nurses, 92067, 92091
How To Stay Healthy Through The Golden Years
For many seniors, staying healthy and active is an achievable goal.
With the right nutrition, regular medical care and professional assistance, staying safe and happy while reducing risk of illness or injury is easy.
Regular Medical Check-ups are a Must
Seniors who maintain periodic check-ups stand a better chance at lessening risks associated with age-related conditions.
Proper nutrition is even more important with age as nutrition related problems can lead to a wide range of age-related disease. A diet filled with protein, fresh fruits and vegetables is a proven strategy for ensuring proper nutrition.
Safety First: Professional In-Home Nursing Services Can Help
For many seniors, day-to-day activities can become difficult, even dangerous. From assisting with housework, running errands, even administering medications, the right in-home nursing service is a smart way to reduce stress and increase safety.
People wanting to learn more are encouraged to pick up a copy of our free report… "Critical Questions You Must Ask Before You Hire a Home Care Provider" Just give us a call at 619-220-7600 or visit our website at: http://www.FirstatofSanDiego.com
In Home Skilled Nursing Rancho Santa Fe
A chat with acting coach Brenna McDonough
The King of DC Media welcomes back acting coach Brenna McDonough, who will discuss effective tips for actors to book roles consistently, and how to look great on camera!
McDonough teaches on-camera workshops at Betsy Royall Casting in Baltimore and her studio in Kensington, MD.
Brenna is an accomplished actress in her own right, having appeared in the following TV commercials and films:
TELEVISION COMMERCIALS and INFOMERCIALS
Bush Gardens/Col Williamsburg
Giant Food
Close Call
Med-Star Health
Red Cross
Prudential Health
Travel Lodge
Infomercial Host
Tommy's Mom
Mother of the Bride
Hotel Executive
Fredrickson TV
Raimondi Films
Madison Media
Gray, Kirk, Van Sant
Red Cross
Noble Steed
Gray, Kirk, Van Sant
FEATURE FILM and TELEVISION
HOMICIDE "Pit Bull Sessions"
Network Reporter
Mary Tjarks
Tess's Doctor
CNN Reporter
Political analyst Kate
HBO, Barbara Kopple, Dir.
Columbia Pictures
HBO "Slapstick"
- ...
Today's Best Podcasts
Join Host Live Chats
- High Frequency Radio Network (20 chatters)
- Awakenings Radio (10 chatters)
- The Spiritual Concepts Show (10 chatters)
- simonapple04 (6 chatters)
- Dr Loren (5 chatters)
- True Psychics Network (4 chatters)
- Bible News Radio (4 chatters)
- Ciracle Radio (4 chatters)
- Critical Mass Radio station (4 chatters)
- BobBrown (3 chatters)
- nXphase Records (3 chatters)
- Witch School (2 chatters)
- Voice of Rio Grande (1 chatters)
- Author Lisa Sims (1 chatters)
- Black Whole Radio (1 chatters)
- NikiGuts (1 chatters)


text:
When I was pregnant I really loved reading books and watching movies/documentaries on pregnancy and birth. I guess it only makes sense that now that I'm a parent I love reading parenting books. I don't love reading all parenting books though, just the ones that talk about children's brain development and more gentle parenting methods that correspond with that brain development.
My favourite book so far has been The Whole-Brain Child by Daniel J. Siegel, M.D. & Tina Payne Bryson, Ph.D. I am awful at describing books (I always make them sound crazy & weird) so you can check out a description here (or Google it). Anyways, this book is amazing and I will definitely be reading it again. I actually got pretty upset while I was reading because it hit home so many times about things that I recognized from my own childhood. I'm not saying I had a terrible childhood, because I didn't, but I definitely dealt with some issues that I didn't understand and this book helped me realize what was probably going on.
I feel like The Whole-Brain Child doesn't even just apply to people who are dealing with children. Since reading it I have become more sensitive and patient about the strange things that people sometimes do. I honestly think that everyone should read it if you are at all interested in how the brain works and handles emotions.
I really can't say enough good things about The Whole-Brain Child. This is in no way a sponsored review, I bought the book with my own dollar bills, I just really loved it and I think that everyone in the world should read it. Yep, everyone, in the whole entire world.
Have you read The Whole-Brain Child? What did you think? Any other recommendations for similar books?
Have you read The Whole-Brain Child? What did you think? Any other recommendations for similar books?


text:
Filter Results
- results
- state & global data
- slides
- view as grid
- view as list
The Budget Trigger and Health Reform
No doubt it will take some time to sort out how elements of the debt deal (formally "The Budget Control Act of 2011") will all work. Delving into the details of how it affects subsidies in the Affordable Care Act (ACA) to make insurance more affordable helps to illustrate how…Perspective Read More
Mapping Premium Variation in the Individual Market
This analysis examines how premiums for individual health insurance differ around the nation, finding that premiums can vary substantially from state to state. The average per-person premium in 2010 ranged in cost from approximately $136 per month in Alabama to more than $400 per month in Vermont and Massachusetts. The…Issue Brief Read More
July Kaiser Health Tracking Poll: Public Still Divided on ACA, Few Believe the Law Will Improve Consumer Protections
Overall public opinion on the health reform law remains unchanged this month, with 42 percent of Americans holding a favorable view and 43 percent an unfavorable view. Even though previous Health Tracking polls have consistently shown that consumer protections were one of the least controversial and most widely supported provisions…Perspective Read More
What is a Mini-Med Plan?
One of the early insurance market changes in the Affordable Care Act (ACA) phases out caps that some insurance plans impose on the annual dollar amount of benefits they will cover. Plans issued or renewed after September 23, 2010 cannot have annual limits of less than $750,000, and the threshold…Perspective Read More
Health Reform and the Art of Federalism
The U.S. Department of Health and Human Services (HHS) recently announced significant changes to the premiums charged in the Pre-existing Condition Insurance Plan (PCIP), aka the "high risk pool" created by the Affordable Care Act. Premiums will now be up to 40% lower depending on the state (in some states…Perspective Read More
Peering Into the Black Box of Insurance Rating
Recently, the New York Times reported that private health insurers continue to seek large premium increases despite seeing lower than expected use of medical care and booking record profits. The story highlights a significant problem for health policy: the lack of good, public information about how health insurers manage health…Perspective Read More
Who Will be the H&R Block and TurboTax for Health Insurance?
There's been quite a bit of focus lately insofar as these issues go, anyway on health insurance agents and brokers (sometimes known in the industry as "producers"). They are pushing legislation that has been introduced in Congress and is now being studied by the National Association of Insurance Commissioners that…Perspective Read More
KFF Survey Finds that a Majority of Individuals Who Buy Their Own Insurance Report Facing a Premium Increase
People who buy their own insurance report that their insurers most recently requested premium increases averaging 20 percent, according to a new Kaiser survey examining the experiences and views of people who buy health coverage in the non-group or individual market. Overall roughly three in four people (77 percent) with…Perspective Read More
Survey of People Who Purchase Their Own Insurance
While most people in the U.S. get health insurance through their employer, about 14 million people under age 65 have coverage through the non-group or individual market, which has faced scrutiny recently in news reports about some insurers' steep rate increases and in the market reforms in the new health…Poll Finding Read More
Affordability and Health Reform: If We Mandate, Will They (and Can They) Pay?
The Alliance for Health Reform and The Commonwealth Fund co-sponsored this briefing to explore the health reform proposals being considered which may impose responsibilities on both individuals and employers to have and help pay for coverage and whether they will be able to pay the amounts above the subsidies. Questions…Event Read More


text:
Narrow your search
The Baltimore police union launches an effort to raise money for legal fees, but the fund-raising site says no go. It's the latest campaign involving alleged police misconduct that's been shuttered.
The past year of debate and strife in cities nationwide has pushed law enforcement agencies to begin adopting body cameras. The result: shares of body camera makers are soaring.
Speedy delivery service is becoming a highly sought niche in the consumer market, with Amazon, Google, Uber and others jumping into the fray.
Originally aiming to reach 22 cities by the end of 2013, Aereo's next rollout brings the list to 10.
Remember those deadly wrist blades in "Alien vs. Predator"? The folks of "Man at Arms: Reforged" have built a real blade gauntlet that looks absolutely deadly.
The online retailer expands its Prime Now rapid-delivery service to include prepared meals and baked goods for certain neighborhoods in Manhattan, starting Thursday.
Searching for sushi? Pondering a pizza? Hunting for hot dogs? Google's making it easier than ever to get it all delivered right to your door.
Technically Incorrect: A Houston mom sees surveillance video of a young man taking an iPad from a child and pushing the child. Then she thinks she recognizes the young man.
The space probe has spent the past four years collecting and beaming back data from the planet closest to the sun.
The "Man At Arms: Reforged" team makes their own Chitauri scepter, aka Loki's Staff, with metal and blue glass.


text:
Okay, granted this was for a short film being shot; it's not as if 17-going-on-47 teen bride Courtney Stodden just walks down the street in a faux fur coat flashing her bikini body to passers-by, I mean, not yet she doesn't. Give it a couple years and you might see the same along the Boulevard after dark. But, in this instance, the young Mrs. who Dr. Drew inexplicably declared to have natural chest puppies on national television, worked her under-aged magic in Hollywood giving a little show to passing pedestrians (just kidding, there are no pedestrians in Los Angeles, we meant slow moving motorists) in some kind of high-school on steroids type bodily exhibition.
We're still not exactly sure what to make of Courtney Stodden, though we imagine if we melted her down we could make some industrial products. Still, she remains but a girl, so we can't even mention other unmentionable sights you might find in these photos upon closer examination. Enjoy.


text:
Dr. Martin Seifert, Vice President Business Development and Consulting at Genomatix says: We are excited about the power and wealth of all the new data being delivered by NGS technology. We have everything in place to analyze all these data and integrate them into our ElDorado annotation database todaysomething we can do within hours of starting an analysis. The real value is realized by overlaying and correlating all this data that has been derived by different approaches, for example, the open chromatin data correlated with chromatinIP tags for several nuclear receptors, expression profiles, microRNAs and all the wealth of other information in our databases that give an excellent handle on localizing and elucidating the role of enhancers/repressors in intergenic regions.
Dr. Seifert continues: Several in-house projects which we conducted for customers demonstrate the clear superiority of our rich data content, our proprietary approaches, and open and modular architecture. With the emergence of NGS, the outstanding value of our technology is now more evident than ever!
|Contact: Klaus May
Genomatix Software GmbH


text:
- Shopping Bag ( 0 items )
From the PublisherTaylor's book is a major milepost that shows how far historians have come in exploring the significance of the frontier in American history. . . . It is a work of subtlety, complexity, and best of all, true discovery. The frontier landscape in Taylor's book . . . is inhabited by real people, who are full of conflicts and contradictions. By being sensitive to their economic, social, and spiritual aspirations, Taylor makes their world believable and meaningful. And perhaps most important, he reminds us that, no matter what kind of order proprietors and planners tried to impose on the landscape and the people themselves, the history of the American frontier has never been as neat as some people would like.—Gregory H. Nobles, Reviews in American History
A book that will changed the way we think about early American frontier settlement and the political struggles that accompanied it.—William J. Cronon, Yale University
A fascinating, richly textured story that will have a major impact on our understanding of American social history during the Revolution and early Republic.—Robert A. Gross, College of William and Mary


text:
We carry a wide range of motorcycle suspension oil from industry leading brands.
Justin in IL
Works as advertised. Not much to say about this product as it has worked great for me.Read All Reviews
David in IN
Best price beat everyone hands downRead All Reviews
Brett in MA
The oil seems to be holding up really well.Read All Reviews
scott in NV
great shock fluid added some life to my 91 cr, not advised as a cocktail.Read All Reviews
Eric in NC
I saw this product used in a KYB rebuild video on youtube. I laughed, thinking he was paying a premium for glorified contact cleaner. However I noticed the price wasn't far off from the contact cleaner I normally use, and I ordered a can because I needed to spend $7 more to get free shipping. I was wrong. This stuff works. I'll be using on suspension rebuilds from now on.Read All Reviews
Kyle in OR
I put 20 hours on this fluid and opened it up to tweak the valving again. The fluid was a bit dirty, but still in very good shape and much better than the stock fluid was at 20 hours.Read All Reviews


text:
GQ's digital edition designed specially for your device
Only £1 an issue!
By Oliver Franklin-Wallis 17 August 12
After a breathless summer of sport, it's hard to believe that football season is here again. With the Premier League kicking off this weekend, we take a look at each club's chances and the summer's key signings you should watch out for on Match Of The Day...


text:
Keep up to date with all the happenings in the world of Rugby League with our free eNewsletter!
FULL TIME at GIO Stadium, with the Bulldogs defeating the Raiders 41-34.
See how it all unfolded in...
19 hours ago - 4 Likes
HALF TIME at GIO Stadium, and the Bulldogs lead the Raiders 26-16.
Follow all the action in our liv...
21 hours ago - 3 Likes
KICK OFF in just a few minutes at GIO Stadium in the clash between the Raiders and Bulldogs.
Join u...
22 hours ago
FULL TIME at Campbelltown Stadium, with the Cowboys defeating the Tigers 8-0.
See how it all unfold...
2 days ago - 6 Likes
HALF TIME at Campbelltown Stadium, and the Cowboys lead the Tigers 2-0.
Follow all the action in ou...
2 days ago - 2 Likes
Follow us on Facebook
TONIGHT: #HoldenCup #NYCnewbri at Hunter, 4:45pm.
#NRL action 7pm with @NRLKnights v @brisbanebroncos #NRLnewbri from Hunter!
5 hours ago
PREVIEW | Let's Talk #ORIGIN Game 1! @redrok923 looks at Wednesday's series opener --> http://t.co/CuitiieQl9 http://t.co/2mMIErhdP0
.@NRL_Bulldogs survive comeback to win cracking contest over @RaidersCanberra - REPORT: http://t.co/QyYXEIbDLE by @Jackyboi90 #NRLcancby
6 hours ago
So Bulldogs fans... Got your breath back yet? #nrlcancby #leavingitlate
18 hours ago
FULL TIME at GIO Stadium, with the Bulldogs defeating the Raiders 41-34. http://t.co/XX9rxIz1MX
20 hours ago
Follow us on Twitter
© LeagueUnlimited 2015. / Privacy Policy / Disclaimer


text:
- 1 Building Fennec
- 1.1 Preparing your build environment
- 1.2 Getting the source
- 1.3 Preparing a Fennec mozconfig
- 1.4 Building and deploying the Fennec Android package
- 1.5 Mercurial and Workflow
- 1.6 Creating commits and submitting patches
- 1.7 Android NDK and SDK version notes
- 1.8 Advanced topics
- 1.9 Troubleshooting
- 2 Hacking
- 3 Testing
- 3.1 Device Managers
- 3.2 Host Builds (MOZ_HOST_BIN)
- 3.3 Test Directory
- 3.4 Reftests
- 3.5 mochitest-plain
- 3.6 mochitest-chrome
- 3.7 Robocop
- 3.8 xpcshell
- 3.9 cppunittests
- 3.10 browser-chrome
- 3.11 Running tests on the Android ARM emulator
- 3.12 Running tests in the Android 4.2 x86 emulator
- 3.13 talos
- 3.14 S1/S2 Automation
- 3.15 Eideticker
- 3.16 Trouble-shooting testing problems
- 4 Debugging
- 4.1 Using logcat
- 4.2 Using JimDB
- 4.3 Using Debug Intent
- 4.4 Getting dalvik java stack dumps using gdb
- 4.5 Debugging with jdb
- 4.6 Debugging with eclipse
- 4.7 Arguments and Environment Variables
- 4.8 PR Logging
- 4.9 Using legacy GDB (non-JimDB)
- 4.10 Reading back the framebuffer
- 4.11 Using Rendertrace (Maple)
- 4.12 Using apitrace
- 4.13 about:memory
- 4.14 Profiling
- 4.15 Debugging Java code with DDMS
- 5 Other useful tips and tricks
Building Fennec
Preparing your build environment
Run either of the following in a terminal. If you have curl installed (note that Mac OS X ships curl by default):
curl -O https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
If you have wget installed:
wget -q https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
Alternatively, if you already have a clone of the source code, you can also run
mach bootstrap
to run the setup script.
Choose to build "Firefox for Android" at the prompts. This will help you install all the build prerequisites required for building Fennec on the most popular host operating systems (including OS X and Debian-flavoured Linuxes, including Ubuntu; but sadly not including Windows).
You may need an hour or more to download and install prerequisites (Java, the Android SDK and NDK, and the Android platform itself, are very large). You may be prompted to enter your password or to accept license agreements.
NOTE: If that doesn't work, or you need more details: Follow the detailed instructions to set up a build environment on your machine. Once you have done that, follow the steps to get the source, set up your mozconfig, and build Fennec.
Getting the source
First, grab a clone of the Fennec source code repository:
hg clone http://hg.mozilla.org/mozilla-central/
The source files will be in the mozilla-central directory, which we refer to as your source directory.
Before doing anything else, it's a good idea to install and configure Mercurial as described here.
Preparing a Fennec mozconfig
Next, navigate to your source directory and create a text file called "mozconfig". The mozconfig file is what tells the Mozilla build system what to build and how your build environment is prepared. Here is the minimal mozconfig file for building Fennec; it should be named mozconfig in your source directory, as the build scripts will read from the mozconfig file in your source directory by default, although you can configure this if you need to.
# Build Firefox for Android: ac_add_options --enable-application=mobile/android ac_add_options --target=arm-linux-androideabi # With the following Android SDK and NDK: ac_add_options --with-android-sdk="/path/to/android-sdk/platforms/android-21" ac_add_options --with-android-ndk="/path/to/android-ndk-r8e"
This assumes you have followed the instructions above and are using Android platform 21 and NDK version r8e. You must use $HOME instead of ~ in your mozconfig because ~ does not get expanded.
Mozilla's build system writes all build intermediate files and output artifacts into a separate directory called the object directory. The build system will choose a reasonable default name for the object directory if you don't specify one, but it's common to specify an object directory starting with "obj" and to put it inside your source directory. Add a line like the following to your mozconfig:
mk_add_options MOZ_OBJDIR=./objdir-droid
Building and deploying the Fennec Android package
Before you start building, connect your Android device and enable USB debugging.
The following steps will build Fennec (compile and link all C/C++, Java, and JavaScript source code), prepare a fresh Fennec APK, and deploy Fennec to your Android device:
./mach build ./mach package ./mach install
The APK file can be found in your objdir-droid/dist folder, and will be called something like fennec-28.0a1.en-US.android-arm.apk. You can install this APK to your device manually using adb install or ./mach install.
The name of the app that shows up on your phone will be "Fennec $USER" (where $USER is the username under which you built the code).
To speed up subsequent builds you should build only part of the mobile/android directory using ./mach build mobile/android or ./mach build mobile/android/base, depending on where your changes are.
Mercurial and Workflow
Historically, Mozilla has used Mercurial patch queues to submit code changes for review. However, Mozilla developers are now encouraged to use a Mercurial bookmark-based workflow.
If you're a contributor and new to Mercurial, patch queues are conceptually simple and fine for getting your first few patches up; see the instructions on Mercurial patch queues.
If you're interested in using bookmarks, take a look at bookmarks-based development.
(If you want more information about bookmarks-based workflow, take a look at gps's slides; gps's blog is another good place to get information about version control at Mozilla.)
Creating commits and submitting patches
Mercurial (hg) is the the main version control system that Mozilla uses, and to submit code for review, you should be able to generate patches or commits. Be sure to run mach mercurial-setup when cloning the source code repository -- this will ensure you have good default settings and extensions.
Instructions for submitting a patch can be found here.
After writing the patch, make sure the commit message is of the correct format:
Bug <bug#> - <bug title>. r=<reviewer>
So for example, for bug 1128431, the commit message should be:
Bug 1128431 - 'Start browsing' link from onboarding v1.5 is not visible on small screen devices. r=liuche
Android NDK and SDK version notes
Members of the Fennec community are successfully building Fennec with:
- Android SDK Platform Android 5.0 (API 21)
- SDK Build Tools 21
- SDK Platform Tools 21
- Android SDK Tools 23.0.5
You will also need the "Android Support Library" and "Google Play Services". Both are listed under Extras by the android package manager.
You should ensure that the Support Library and SDK versions match. If you update the Support Library but don't switch to a later SDK, you'll get errors that mention a newer version than your SDK, like this:
Warning: android.support.v4.view.accessibility .AccessibilityNodeInfoCompatApi22: can't find referenced method 'void setTraversalAfter(android.view.View,int)' in class android.view.accessibility.AccessibilityNodeInfo
In the event that the NDK and SDK versions listed here are out of date, you can always find the canonical version numbers that Mozilla uses to build Fennec in automation. Look for the following variables:
bug 1108782 tracks listing and enforcing these version requirements in the source code.
Advanced topics
You can optionally install ccache, which can make rebuilding Firefox faster after you have built it once and don't change (much) of the C++ source code. In general, ccache is not a performance improvement if you use only one object directory, or edit only Java and/or JavaScript source code.
If you want to use ccache, add a line the following to your mozconfig:
ac_add_options --with-ccache[=/optional/path/to/ccache]
The default cache size of 1GB is not large enough for a Fennec build. To fully utilize ccache (generally meaning you can expect full builds to complete in <5 minutes from a populated cache), you'll need to change the cache size to at least 4GB. Do so by running:
ccache --max-size 4G
On Mac OS X, install ccache like:
brew install ccache
On Debian-like Linuxes, install ccache using:
sudo apt-get install mercurial ccache
Enabling C++ debugging
If you want to create a build suitable for debugging the C++ code, add:
ac_add_options --enable-debug-symbols
Building for the x86 architecture
If you want to build for x86, substitute:
ac_add_options --target=i386-linux-android
for the target specified above. Note: you cannot use ac_add_options --disable-optimize when building for x86. See bug 965870.
Building for the ARMv6 architecture
ARMv6 is no longer a supported target as of Firefox 33.
If you want to build for ARMv6 instead of ARMv7 (only required for very old, very low end phones), add:
ac_add_options --with-arch=armv6
Unsupported build flags
Do not specify these flags because the resulting build will cause out-of-memory crashes:
ac_add_options --disable-install-strip # Do not use!
Don't set CC / CXX environmental variables
If you've set the environmental variables CC and CXX (e.g. via .bash_aliases or via your mozconfig), then you probably need to unset them before building for Android, or else your build may fail with something like:
checking whether the C compiler (gcc -mandroid -fno-short-enums (etc etc)) works... no
followed by errors about "C compiler cannot create executables", "Relocations in generic ELF (EM: 40)", and "crtbegin_dynamic.o: error adding symbols: File in wrong format". This is a sign that you're compiling with your platform's native compiler (due to having CC / CXX set), instead of the android-specific GCC version that ships with the NDK. See bug 977817 for more details; as noted there, the build system may trust your custom CC & CXX variables, when you probably don't want it to.
Developing Fennec with IDEs
Fennec has support for developing using IntelliJ (Ultimate and Community Edition) and Android Studio. (We also have some legacy support for Eclipse, but you should prefer using IntelliJ or Android Studio.) Get started Developing Fennec with IDEs.
Finding relevant code
Almost all of the Fennec-specific code is in the mozilla-central source tree under:
Of particular interest to most new contributors will be:
If you are looking for something specific, use the code-search tool at http://dxr.mozilla.org/ to search for relevant pieces of code.
For the JavaScript parts of the code base, remote debugging with a desktop version of Firefox is the most effective way to see what is going on, add breakpoints, etc.
For Android Java code, if you have IntelliJ set up, the debugger works well and allows you to set breakpoints, inspect variables and objects, etc. Debugging without an IDE is much more primitive, and you can try using Android Log statements and inspecting logcat.
Coding Style
Follow the Mozilla Coding Style.
XML files (layout, resources, styles, etc)
- Each child tag should be indented with 4 spaces.
- The properties should be aligned with the first property of a tag.
- Each element should have "android:id" first, "style" (if exists) second, and the other properties follow. The root will have "xmlns:android" as first property.
- A Line break after every tag.
Common nits
Check for these nits before asking for review for a patch:
- Remove trailing whitespace
- Spacing
- Four spaces for Java indent (for main Fennec code - android-sync github project has different spacing)
- Around operators (+, -, etc.) and :
- Between comment "//" and text
- Braces for Java if statements, even if they are one line
- Comments should be full sentences (capitalization, punctuation)
- Good comments are useful and clear even for someone reading a particular area of code for the first time
- Avoid using single-letter variables in almost all cases - it makes code harder to read
Closing resources
When handling resources (like Cursors), a try/finally block should be used to ensure these are closed properly. For example:
final Cursor c = getCursor(); try { useCursorWhichMightThrowException(c); } catch (SomeSpecificException sse) { log(sse); } finally { c.close(); }
Once the try block is entered, the finally block will *always* get executed upon exit of the try block. The one exception is if there is a System.exit call inside the try block, which immediately exits the program and makes everything moot anyway. The finally block will get executed on caught and uncaught exceptions, as well as normal returns.
If you are casting the resource to something, make sure that you do the cast inside the try block, like so:
// GOOD! InputStream is = getInputStream(); try { FileInputStream fis = (FileInputStream) is; ... } finally { ... }
rather than doing this:
// BAD! FileInputStream fis = (FileInputStream) getInputStream(); try { ... } finally { ... }
This is so that in case of ClassCastExceptions you don't get a dangling open resource left behind.
Caveats for Timing
TLDR: Google recommends using SystemClock.uptimeMillis() for general purpose interval timing of user interface events or performance measurements. If you're adding stuff for timing, use SystemClock.uptimeMillis(), rather than something like new Date().getTime().
Normally in Java the default time-getter is System.currentTimeMillis() since it avoids the overhead of creating a new Date object. This is also what new Date() does under the hood. However, currentTimeMillis() and the Date object are both subject to change in unexpected ways if the user changes the time on their device, or if daylight savings comes into effect, or there's a network time update, or whatever. So Android has generously provided android.os.SystemClock which has various functions that you can use to get a better timestamp. Refer to the class javadoc and pick whichever function is most suitable for what you're trying to measure.
Multilocale builds
- Create a directory, clone mozharness, copy the config file for easy editing/usage:
mkdir multilocale cd multilocale hg clone http://hg.mozilla.org/build/mozharness cp mozharness/configs/multi_locale/standalone_mozilla-central.py myconfig.py
- Edit myconfig.py
- currently will check out m-c into a directory named 'mozilla-central' in this directory
- currently assumes your mozconfig is in this directory and named 'mozconfig'
- currently assumes your mozconfig sets your objdir name to 'objdir-droid'
- pull mozilla-central
mozharness/scripts/multil10n.py --cfg myconfig.py --pull-build-source # Alternately, you can hg clone http://hg.mozilla.org/mozilla-central
- Run the script, which will create a multilocale apk
mozharness/scripts/multil10n.py --cfg myconfig.py
And you're done.
- If you want to recompile or re-run the script, restore your objdir to en-US first!
mozharness/scripts/multil10n.py --cfg myconfig.py --restore-objdir
Also see this blog post for more information.
Single-locale language repacks
There is a script in mozharness for this (scripts/mobile_l10n.py) but it relies on buildbot information so it's not suitable for local repacks.
This assumes that $(AB_CD) is the locale you want to repack with; I tested with "ar" and "en-GB".
- clone l10n-central/$(AB_CD) so that it is a sibling of your mozilla-central directory
- I assume your object directory is "objdir-droid" and that you have built and packaged already
make -f client.mk && make -C objdir-droid package
- copy your .mozconfig to .mozconfig.l10n and add the following lines
# L10n ac_add_options --with-l10n-base=../../l10n-central # Global options ac_add_options --disable-tests mk_add_options MOZ_OBJDIR=./objdir-l10n
- cd to mozilla-central
- configure and prepare objdir-l10n
MOZCONFIG=.mozconfig.l10n make -f client.mk configure make -C objdir-l10n/config
- copy your built package into objdir-l10n
cp ./objdir-droid/dist/fennec-*en-US*.apk ./objdir-l10n/dist
- unpack. This files objdir-l10n/dist with the bits of the APK, ready for re-assembling.
make -C objdir-l10n/mobile/android/locales unpack
- compare locales (you may need to install the compare-locales tool first). This writes locale differences into objdir-l10n/merged.
compare-locales -m objdir-l10n/merged mobile/android/locales/l10n.ini ../l10n-central $(AB_CD)
- finally, re-assemble with the locale differences
LOCALE_MERGEDIR=objdir-l10n/merged make -C objdir-l10n/mobile/android/locales installers-$(AB_CD)
You should find an APK at "objdir-l10n/dist/fennec-*$(AB_CD)*.apk".
This section has instructions for running tests locally on a device of your choice. In theory, it is easy to run tests locally, but the test infrastructure is optimized and maintained primarily for the tegra boards and the panda boards used for continuous integration: It is not uncommon for device-specific bugs to creep in to the test infrastructure, causing problems when tests are run locally.
Running tests locally on non-rooted devices is particularly troublesome and sometimes impossible -- use a rooted device if at all possible.
Having trouble? Ping :gbrown on #mobile, or ask for help on #ateam.
Device Managers
Most test suites - mochitests, reftests, xpcshell tests, and others - use a "device manager" module to communicate with the remote device. There are two device manager implementations: ADB and SUT.
The ADB device manager uses the adb command from the Android SDK to communicate with the remote device. To use the ADB device manager:
- ensure the adb command is in your shell's PATH
- set environment variable DM_TRANS=adb
- do not set environment variable TEST_DEVICE, or set TEST_DEVICE= (unless you really need it)
The SUT device manager uses TCP to communicate with a remote agent, which must be installed on the device. To use the SUT device manager:
- ensure TCP connectivity between the local host and the remote device: check that they are on the same network and you can ping each from the other
- ensure the SUT agent is installed and started on the remote device
- the SUT agent APK is built alongside Fennec; just install <objdir-droid>/build/mobile/sutagent/android/sutAgentAndroid.apk
- The agent should be configured to start automatically with your phone when it boots. To start it immediately from an adb shell do: `am start -n com.mozilla.SUTAgentAndroid/.SUTAgentAndroid -a android.intent.action.MAIN`
- set environment variable DM_TRANS=sut
- set environment variable TEST_DEVICE=<ip address of remote device -- displayed by SUT agent>
Note: to run the tests you should ensure that your host machine and device are on the same network so that the device can contact the server that will run on the host.
Host Builds (MOZ_HOST_BIN)
Android mochitests and reftests are driven by test suites on a host machine running xpcshell. The Android device being driven is referred to as the target device. The test suite locates xpcshell on the host machine via the environment variable MOZ_HOST_BIN, which must point to the directory that contains the xpcshell binary (executable on the host machine), its associated executables (certutil, pk12util, ssltunnel, etc), and its shared libraries.
Quick setup
You can download prebuilt host utilities:
|Host architecture
|Download link
|Mac OS X
|Linux (64-bit)
|Linux (32-bit)
Extract the archives using tar (or tar and xzip), like:
cd ~/.mozbuild wget http://people.mozilla.org/~nalexander/host-utils/host-utils-37.0a2.en-US.mac.tar.xz tar Jxf host-utils-37.0a2.en-US.mac.tar.xz export MOZ_HOST_BIN=~/.mozbuild/host-utils-37.0a2.en-US.mac
Packaging the host utility archives listed above is easy: follow these instructions.
Advanced setup
Alternatively, if one of the prebuilt host utilities packages is not appropriate for you or does not work, you can fetch the host utils by using the getxre utility that comes with JimDB. This utility will download the correct binaries for your host machine, and set the appropriate permissions. You should prefer the prebuilt host utilities because they are more likely to be tested and are significantly smaller downloads than the intermediate packages downloaded by getxre. (getxre does what the packaging instructions describe, except it has not been updated for current Firefox package structure on Mac OS X.) In the following stanza, replace $DIR with an output directory, such as ~/.mozbuild/host-utils.
wget https://github.com/darchons/android-gdbutils/raw/master/python/getxre.py python getxre.py -d $DIR export MOZ_HOST_BIN=$DIR/bin
Alternatively, you can build desktop Firefox with a mozconfig which might be as simple as:
ac_add_options --enable-application=browser mk_add_options MOZ_OBJDIR=./objdir-desktop
Then execute:
MOZCONFIG=mozconfig.desktop ./mach build export MOZ_HOST_BIN=objdir-desktop/dist/bin
On Linux, the path to that build may also need to be in your LD_LIBRARY_PATH, unless your LD_LIBRARY_PATH contains ".":
Test Directory
All Android tests require a remote test directory: A place to store pre-configured profiles, support binaries and libraries, test files, etc. Most tests use a directory in /mnt/sdcard by default; xpcshell and cppunittests use /data/local by default (because it is usually not possible to set execute permission on files on /mnt/sdcard).
The default remote test directory is usually correct and sufficient, but sometimes the default is not appropriate for a device:
- the device may not contain an SD card, or the SD card may not be mounted
- there may not be enough free space on the default location's partition
- the default location may not be writable by the ADB shell and/or SUT agent
(If you are using a Nexus S, the trick to making your device mountable is to not allow USB Storage between your computer and your device. When you plug in your device to your computer, simply don't click the button to allow this on your device and you should be able to run your tests.)
If necessary, the default remote test directory may be changed with:
export EXTRA_TEST_ARGS=--remoteTestRoot=<remote-directory>
First, ensure that MOZ_HOST_BIN has been set according to the directions above.
TEST_PATH=<path> make -C <objdir-droid> reftest-remote
Example TEST_PATH:
- If TEST_PATH is not specified, *all* reftests will be attempted: This usually fails/hangs and is not recommended. Specify a TEST_PATH or use the --total-chunks and --this-chunk arguments to reduce the number of tests executed.
- sut recommended. Test results displayed and saved to reftest.log and reftest-remote.log.
- adb works also. Test results displayed and saved to reftest.log (additional diagnostics in reftest-remote.log).
- Ensure that the device and host machine are on the same network.
- Ensure that MOZ_HOST_BIN has been set according to the directions above.
- Ensure your device is connected and visible with "adb devices".
- Ensure that the device and host machine are on the same network <-- This is important. The device and the host need to communicate over the network to run the tests. Having the device connected to the host via USB is not sufficient.
- Ensure that Fennec has been built and installed: mach build && mach package && mach install
Running tests:
mach mochitest-plain OR mach mochitest-plain <test-dir> OR mach mochitest-plain <test-dir>/<test-name>
Use "find -name mochitest.ini" to find valid test directories.
- Currently the mach command only supports the adb device manager.
- You can also run tests using make -C $OBJDIR mochitest-remote, but this is deprecated. Use TEST_PATH=<test-dir>/<test-name> or TEST_PATH=<test-dir> to run a subset of tests.
- A rooted device is required to run the unit tests using the SUT Agent. Use ADB for unrooted devices (see [[1]]).
- Currently using ADB and using /data/local/tests on a non-rooted phone causes setting TEST_PATH to a directory rather than an individual HTML file to fail, and SpecialPowers tests to fail too - filed as bug 822652
- Ensure that MOZ_HOST_BIN has been set according to the directions above.
- Ensure your device is connected and visible with "adb devices".
- Ensure that the device and host machine are on the same network <-- This is important. The device and the host need to communicate over the network to run the tests. Having the device connected to the host via USB is not sufficient.
- Ensure that Fennec has been built and installed: mach build && mach package && mach install
Running tests:
mach mochitest-chrome OR mach mochitest-chrome <test-dir> OR mach mochitest-chrome <test-dir>/<test-name>
Use "find -name chrome.ini" to find valid test directories.
- Currently the mach command only supports the adb device manager.
- mochitest-chrome on Android is not run in continuous integration on treeherder; many tests may fail.
The Robocop test suite verifies UI behavior in native Fennec. It is built on the Robotium testing framework. To run tests locally, a separate Robocop test APK also needs to be installed.
To get tests running locally, first build and install native Fennec,
mach build mach package mach install
Next, execute mach robocop which installs the Robocop APK to the device and starts the entire testing the entire test suite. Prior to running this, ensure that MOZ_HOST_BIN has been set according to the directions above.
mach robocop
More info at Robocop and http://mxr.mozilla.org/mozilla-central/source/mobile/android/base/tests/README.rst.
If you make changes to the tests and want to see them run on a device, you need to build the tests again and reinstall.
mach build build/mobile/robocop mach robocop
This builds the tests in mobile/android/base/tests and then installs the debug-signed Robocop APK onto the device. (It's unintuitive that building mobile/android doesn't build the tests within mobile/android/base/tests.)
- Mach is self documenting! For help, try mach help robocop.
- To run one test at a time, find the test name (like "testLoad") in mobile/android/base/tests/robocop.ini and pass it as an argument, like: mach robocop testLoad.
- A rooted device is NOT required.
- SUT and ADB device managers are both supported.
- MOZ_HOST_BIN is used to launch xpcshell on the desktop to provide a web server.
- You can also run tests using make -C $OBJDIR mochitest-robocop, but this is deprecated. Use TEST_PATH=<test-name> to run just one test at a time, like: TEST_PATH=testAwesomebar make -C $OBJDIR mochitest-robocop.
- Ensure the device's screen is on
- Ensure that the device and host machine are on the same network.
- Are the phone and the desktop both using wifi? (wifi vs ethernet??)
- Are the phone and the desktop both using the same wifi network? (Mozilla vs Mozilla Guest??)
- Is the desktop environment running in a VM? If so, you likely want a "Bridged" connection -- not NAT or Host-only.
- Ensure Robocop has the correct IP address for your machine
- Make sure _SERVER_ADDR in the Robocop output is the same as your machine's IP address.
- If not, set it to your IP by running export DM_FLAGS="--remote-webserver=xxx.xxx.xxx.xxx"
- Ensure the binaries in your MOZ_HOST_BIN folder are executable, in case you pull them down from the FTP site. You might see "OSError: [Errno 13] Permission denied" if they are not executable. Use chmod to fix them. Check certutil, pk12util and ssltunnel.
- Additional tips at Auto-tools/Projects/Robocop#Frequently_found_errors
Be sure you have successfully built Fennec and generated an APK, as described above.
To run all tests referenced by the master xpcshell manifest:
mach xpcshell-test
(Currently the master manifest is restricted: not all tests are run.)
To run a subset of tests in the specified directory:
mach xpcshell-test <test-directory>
Once either of the xpcshell-tests-remote commands has completed successfully, all test files have been copied to device, and it is then possible to run a single test quickly, without setup:
mach xpcshell-test <test.js> --no-setup
- A rooted device IS required.
- Both ADB and SUT device managers are supported.
- Setup can take several minutes! When using ADB, setup is faster if unzip is available on the remote device; if your device does not have unzip, try installing busybox.
To run a single compiled code test:
cd <objdir-droid> export TEST_PATH=<test> make cppunittests-remote
For example, TEST_PATH=xpcom/tests/TestTimers, or TEST_PATH="xpcom/tests/TestTimers xpcom/tests/TestFile".
To run all the compiled code tests in a directory:
cd <objdir-droid> make -C <dir> cppunittests-remote
For example:
make -C xpcom/tests cppunittests-remote
Advanced features:
As with xpcshell tests, you can skip setup if needed:
export EXTRA_TEST_ARGS="--noSetup"
This will avoid copying any files to the device -- be sure that all necessary files are on the device before using this!
You can change the environment variables seen by the unit test:
export EXTRA_TEST_ARGS="--addEnv MYVAR=value" export EXTRA_TEST_ARGS="--addEnv MYVAR1=value1 --addEnv MYVAR2=value2" export EXTRA_TEST_ARGS="--addEnv HOME="
- Either adb or sut device manager may be used
- All files are copied to /data/local/tests by default. On some devices, you may need to create /data/local/tests and make it world writable.
Before you run tests, you will need to make sure you have packaged the tests in your object dir:
make -C <objdir-droid> package-tests
There is currently no special make command to build and run browser-chrome tests, but it should be possible to make them run by calling:
cd <objdir-droid>/_tests/testing/mochitest python runtestsremote.py --dm_trans=adb --test-path=mobile --browser-chrome --deviceIP=220.127.116.11 --app=org.mozilla.fennec_$USER --xre-path=<objdir_x86>/dist/bin/
Running tests on the Android ARM emulator
The "Android 2.3 API9 opt", "Android 4.3 API11+ opt" and "Android 4.3 API11+ Debug" tests on treeherder run in an Android ARM emulator. For best results investigating and reproducing test failures, try server is recommended: Running the same tests on the same emulator on different host hardware may very well produce different results. You can also borrow a slave: https://wiki.mozilla.org/ReleaseEngineering/How_To/Request_a_slave.
But if you really want to run tests in the emulator locally, using the same Android image used for tests on treeherder, follow these instructions.
1. Obtain the AVD definitions from tooltool. For Android 2.3, to determine the url, open http://hg.mozilla.org/mozilla-central/raw-file/default/testing/config/tooltool-manifests/androidarm/releng.manifest and you'll see something like:
[{ "size": 65331947, "digest": "9d538d8fc9e1aa2851e825386e6e947c0e076e5ff425afc853f07a18675045971b8acc5902221c8e72de0fda480c79490ed82fe4a19e4fff334ecdf1fbb04808", "algorithm": "sha512", "filename": "AVDs-armv7a-gingerbread-build-2015-03-09-ubuntu.tar.gz", "unpack": "True" }]
Now browse https://secure.pub.build.mozilla.org/tooltool/pvt/build and download '9d538d8fc9...' -- this is AVDs-armv7a-gingerbread-build-2015-03-09-ubuntu.tar.
For Android 4.3, open http://hg.mozilla.org/mozilla-central/raw-file/default/testing/config/tooltool-manifests/androidarm_4_3/releng.manifest and you'll see something like:
[{ "size": 130067232, "digest": "78648d2e769ef667377ea64d45e422f161e947303e25bec6933bca078ba57ea9118cfafa244ee844c6168bc396fa82e636455e48d57756c7c6ccce0b67efcb91", "algorithm": "sha512", "filename": "AVDs-armv7a-android-4.3.1_r1-build-2015-03-16.tar.gz", "unpack": "True" }]
Now browse https://secure.pub.build.mozilla.org/tooltool/pvt/build and download '78648d2e...' -- this is AVDs-armv7a-android-4.3.1_r1-build-2015-03-16.tar.
2. Extract the AVD archive in your .android directory:
tar xvf AVDs-armv7a-gingerbread-build-2015-03-09-ubuntu.tar -C ~/.android
tar xvf AVDs-armv7a-android-4.3.1_r1-build-2015-03-16.tar -C ~/.android
3. Use the emulator executable from any recent Android SDK. In production, the emulator from Android sdk 18 is used for Android 2.3 and the emulator from Android sdk 24 is used for Android 4.3.
4. For Android 2.3, launch the emulator with:
emulator -avd test-1 -debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket -port 5554 -qemu -m 1024 -cpu cortex-a9
For Android 4.3, launch the emulator with:
emulator -avd test-1 -debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket
Expect lots of output.
5. For Android 2.3 only, wait for sutagent to launch (sutagent cannot be used with 4.3 -- use adb instead).
Redirect ports for sutagent and set the device manager environment variables:
adb forward tcp:20700 tcp:20700 adb forward tcp:20701 tcp:20701 DM_TRANS=sut TEST_DEVICE=127.0.0.1
6. Run tests as described above.
(Or, if you want to run tests very much like on treeherder, see https://wiki.mozilla.org/ReleaseEngineering/Mozharness/How_to_run_tests_as_a_developer.)
Running tests in the Android 4.2 x86 emulator
The "Android 4.2 x86 Opt" tests on treeherder run in an Android x86 emulator. For best results investigating and reproducing Android 4.2 x86 test failures, try server is recommended: Running the same tests on the same emulator on different host hardware may very well produce different results. You can also borrow a slave: https://wiki.mozilla.org/ReleaseEngineering/How_To/Request_a_slave.
But if you really want to try running the x86 emulator locally, using the same Android image as used on treeherder, follow these instructions.
1. Obtain the AVD definitions from tooltool. To determine the url, open http://hg.mozilla.org/mozilla-central/raw-file/default/testing/config/tooltool-manifests/androidx86/releng.manifest and you'll see something like:
[{ "size": 561274118, "digest": "3b2d18eb0194d82c70c5ee17487ccbac309f9b2e9839fe7ca4a27a9a06f6338bb24394476da78559685d99151fccc85fdde03297aa73ee2f7fb3183e11925c4d", "algorithm": "sha512", "filename": "AVDs-x86-android-4.2_r1-build-2013-11-13-ubuntu.tar.gz", "unpack": "True" }]
Now browse https://secure.pub.build.mozilla.org/tooltool/pvt/build and download '3b2d18...' -- this is AVDs-x86-android-4.2_r1-build-2013-11-13-ubuntu.tar.
2. Extract the AVD definition archive in your .android directory:
tar xvf AVDs-x86-android-4.2_r1-build-2013-11-13-ubuntu.tar -C ~/.android
3. Install KVM, if necessary:
sudo apt-get install cpu-checker qemu-kvm bridge-utils
See bug 929048 for more details, if you have trouble with KVM on your host.
You may be able to use the emulator executable from any recent Android SDK. In production, a patched version of "tools-r22" SDK is used. See bug 933918 for details.
4. Launch the emulator with:
emulator -avd test-1 -debug init,console,gles,memcheck,adbserver,adbclient,adb,avd_config,socket -port 5554 -qemu -m 1024 -enable-kvm
(expect lots of output).
5. Wait for sutagent to launch.
Redirect ports for sutagent and set the device manager environment variables:
adb forward tcp:20700 tcp:20700 adb forward tcp:20701 tcp:20701 DM_TRANS=sut TEST_DEVICE=127.0.0.1
7. Run tests as described above.
(Or, if you want to run tests very much like on treeherder, see https://wiki.mozilla.org/ReleaseEngineering/Mozharness/How_to_run_tests_as_a_developer.)
- NOTE: this requires a fix for bug 1122701
- NOTE: this requires python 2.7
See also https://wiki.mozilla.org/Buildbot/Talos
hg clone http://hg.mozilla.org/build/talos talos cd talos python INSTALL.py . bin/activate cd talos <obtain your fennec apk and put it in the current directory> <obtain your robocop apk and put it in the current directory> <obtain your fennec_ids.txt and put it in the current directory> <install your fennec apk> <if running a robocop-based test, install robocop.apk> <start sutagent on the device> python remotePerfConfigurator.py --apkPath=fennec-38.0a1.en-US.android-arm.apk -v -e org.mozilla.fennec --webServer=<your local desktop IP>:8080 --noChrome --remoteDevice=<sutagent-IP> --sampleConfig=remote.config --output=local.yml --browserWait=60 --activeTests=tcheck2 --fennecIDs=fennec_ids.txt python run_tests.py --apkPath=fennec-38.0a1.en-US.android-arm.apk --noisy local.yml
For Robocop based tests (tcheck2, tprovider, etc...), we need to use the --fennecIDs flag to pass in the generated fennec_ids.txt file from the build you are testing. This file is generated during build time and has to match the fennec.apk and robocop.apk file. When this flag is used, we copy fennec_ids.txt and robotium.config (generated during configuration time) to the device and use those to run Robocop. If you are running ts, tp4, tsvg, or other traditional talos tests, there is no need for the --fennecIDs flag.
Aside: For a quick-and-dirty hacky way to run robocop-talos tests locally, see Mobile/Fennec/Android/LocalRoboTalos
S1/S2 Automation
These tests start Fennec with a URL and measure the time to throbber start, time to throbber stop, and drawing end times.
S1/S2 graphs can be viewed at: http://phonedash.mozilla.org/
Manual run instructions can be found at: https://etherpad.mozilla.org/fennec-perf-ts-take2
See also: https://wiki.mozilla.org/Mobile/Performance/S1S2-Tests
Eideticker measures perceived Firefox performance by video capturing automated browser interactions.
Eideticker graphs can be viewed at: http://eideticker.mozilla.org/
See also:
Trouble-shooting testing problems
- Does your mozconfig contain "ac_add_options --disable-tests"?
- If so, you will see something like:
make: *** No rule to make target <your-test-target>. Stop.
- Is adb in your $PATH?
- Is your device connected? Does it appear in the output from "adb devices"?
- Can you run adb shell?
Using logcat
logcat is a tool that is going to show you some logs prompted by the device. It might be a good help if you don't want to or can't run gdb. You can use it by running this command:
adb logcat -v time
You can make things appear in logcat using printf_stderr. With debug builds, NS_WARNING, NS_ERROR and NS_ASSERTIONS will show up in logcat. If you're trying to debug something, you may wish to pipe the logcat output through grep to filter out irrelevant things (most Fennec-related output will be viewable by
adb logcat -v time | grep Gecko
but remember that when attaching log output to a bug you should include unfiltered output as there may be relevant log entries under other tags.
Using other logcat apps
ICS (4.1) and below
- Install the aLogCat app. Use it to capture logs and attach the logs to bugs.
Once you have alogcat installed, just use Fennec as you would normally. Upon encountering a bug or issue, start the aLogcat app (as soon as possible after seeing the Fennec issue) and select "Share" or "Save" from the menu to send it via email or save it to the SD card. The log can then be attached to a bug or sent to a developer. As with adb logcat, it is better to have a log with timestamps than without timestamps. To enable timestamps in the log, select "Preferences" from the aLogcat menu, and change the "Format?" option to "Time".
If you need to, you can search for some kinds of Fennec-related output by using the "Filter" menu item and entering "Gecko". However, when submitting logs for bug reports, please make sure you clear the filter and include all of the available log data.
Jelly Bean (4.2) and above
- Install the LogView add-on
- Root the device and use the aLogCat app as above.
JavaScript dump()
To use the dump() function in JavaScript to write to the log:
- Go to about:config and set browser.dom.window.dump.enabled to "true"
- Run the following ADB commands:
adb shell stop adb shell setprop log.redirect-stdio true adb shell start
Using JimDB
Using Debug Intent
Note: this is not useful with JimDB. If you want to use JimDB, just start it.
In order to attach before things get running, launch with:
adb shell am start -a org.mozilla.gecko.DEBUG -n org.mozilla.fennec_foobar/.App
(Replace foobar by your username)
and just click launch once gdb is attached. If you need to debug a crash that happens before XRE_Main is called, the patch on bug 572247 may be useful.
this script [2] will attach gdbserver for you
Getting dalvik java stack dumps using gdb
(gdb) call dvmDumpAllThreads(true)
this will dump a stack trace to logcat
Note: this will only work if you have symbols for dalvik.
Debugging with jdb
JimDB can now launch JDB integration
You can also use eclipse for debugging in a similar way by setting up for debugging "Remote Java application".
Debugging with eclipse
You need to find the PID of your fennec process. Forward it to a local TCP socket as in "Debugging with jdb."
In Eclipse switch to the debug perspective. Go to Run > Debug configurations... Remote Java Application. Change the port to the TCP port you specified in your adb command. Under Source, navigate to your checkout, then into mobile/android.
Eclipse looks for source code in a specific location. You need to create the directory hierarchy:
mobile /android /org mozilla/ gecko -> ../../base
That is, in mozilla-central/mobile/android, create org/mozilla, and put the symlink gecko pointing to mozilla-central/mobile/android/base.
You may also want to add more debugging information and can do that like this:
diff --git a/config/android-common.mk b/config/android-common.mk index 4591239..a47726a 100644 --- a/config/android-common.mk +++ b/config/android-common.mk @@ -70,6 +70,6 @@ JAVAC_FLAGS = \ -classpath $(JAVA_CLASSPATH) \ -bootclasspath $(JAVA_BOOTCLASSPATH) \ -encoding UTF8 \ - -g:source,lines \ + -g:source,lines,vars \ -Werror \ $(NULL)
Arguments and Environment Variables
If you need to set an environment variable at run time, append --es env# VAR=VAL to your activity manager command where # is the ordered number of variables for example:
adb shell am start -a android.activity.MAIN -n org.mozilla.fennec_$USER/.App --es env0 VAR=val --es env1 FOO=bar
If you need to pass arguments at run time, append --es args "<your-args>" to your activity manager command. For example, to launch with a specific profile:
adb shell am start -a android.activity.MAIN -n org.mozilla.fennec_$USER/.App --es args "--profile /mnt/sdcard/myprofile"
To launch with a specific URL, use the am -d option to set the intent's data URI:
adb shell am start -a android.activity.MAIN -n org.mozilla.fennec_$USER/.App -d 'http://www.mozilla.org'
PR Logging
You can use the env vars as described above to enable NSPR logging:
adb shell am start -a android.activity.MAIN -n org.mozilla.fennec_$USER/.App --es env0 NSPR_LOG_MODULES=all:5 --es env1 NSPR_LOG_FILE=/mnt/sdcard/log.txt
If no file is specified, logging is directed to the android logs:
adb shell am start -a android.activity.MAIN -n org.mozilla.fennec_$USER/.App --es env0 NSPR_LOG_MODULES=all:5
Look for lines marked "PRLog" in the adb logcat output.
Using legacy GDB (non-JimDB)
Reading back the framebuffer
If you need to verify what is in the back buffer at a particular time, you can cleverly call functions from gdb to allocate memory, read back, and write that to disk.
You need to know the size of your framebuffer a priori; in this case, it's 480x699.
You also need to know what the GL enum values are, because unless you compile with -ggdb, you don't have #defines available to you in the debugger. Very helpful information: GL_RGBA = 0x1908, GL_UNSIGNED_BYTE = 0x1401. The rest you can find in gfx/gl/GLDefs.h.
You should be able to call glReadPixels directly, but in my experience that causes Fennec to crash. However, if you have a GLContext* lying around, as you often do, you can work around that problem.
(gdb) set $m = (int*)malloc(480*699*4) (gdb) call aManager->mGLContext.mRawPtr->fReadPixels(0, 0, 480, 699, 0x1908, 0x1401, (void*)$m) (gdb) set $f = fopen("/sdcard/outputfile", "wb+") (gdb) call fwrite($m, 1, 480*699*4, $f) $7 = 1342080 (gdb) call fclose($f) $8 = 0
Now there is a file called /sdcard/outputfile that you can adb pull. But since it's just raw RGBA values, you need to be able to wrap that in PNG headers to display it. Jeff Muizelaar wrote a header called minpng.h that you can use to do so.
Get Jeff's minpng.h, and put it in a directory along with a driver c program:
#include "minpng.h" int main(int argc, char* argv[]) { FILE* f = fopen(argv[1], "rb"); int w = atoi(argv[2]); int h = atoi(argv[3]); char* d = (char*) malloc(w * h * 4); fread(d, w * h * 4, 1, f); fclose(f); write_png(argv[4], d, w, h); }
Compile and run:
$ gcc -o minpng minpng.c $ ./minpng outputfile 480 699 output.png
Using Rendertrace (Maple)
Rendertrace is a utility that will dump layer position and timing information (such as drawing, upload) to the console. This information can pasted into the rendertrace web front end to visualize the layer position and event timeline. This will let you understand where you're gecko is spending its time and why were checkerboarding.
To enable go in 'gfx/layers/RenderTrace.h' and uncomment '#define MOZ_RENDERTRACE'. Rebuild and run 'adb logcat | grep RENDERTRACE', paste the result in http://people.mozilla.org/~bgirard/rendertrace.html and hit 'reload'. For details talk to BenWa.
Using apitrace
Apitrace is a tool for tracing GL/EGL calls for debugging purposes. It basically uses an interim shared library called libapitrace that contains shadow gl* and egl* functions, which then get logged and then passed through to the real driver.
Use apitrace from https://github.com/apitrace/apitrace to build for desktop and android.
apt-get install libegl1-mesa-dev libgles1-mesa-dev libgles2-mesa-dev libqt4-dev cmake git clone https://github.com/gw280/apitrace.git cd apitrace # Build for Android cmake -DANDROID_NDK=/path/to/your/ndk -DCMAKE_TOOLCHAIN_FILE=android/android.toolchain.cmake -DANDROID_API_LEVEL=9 -Bbuild-android -H. make -C build-android -j8 # Build for desktop cmake -H. -Bbuild make -C build -j8 export EGL_SOFTWARE=true ./build/eglretrace -v /path/to/your/apitrace_log.trace
The Android build will create egltrace.so in build-android/wrappers, which you can then push to your device to /data/local:
adb push build-android/wrappers/egltrace.so /data/local/tmp
Restarting Fennec will cause it to load the apitrace library and the apitrace log will be saved to /data/data/org.mozilla.fennec_username/firefox.trace
You can then adb pull /data/data/org.mozilla.fennec_username/firefox.trace and analyse it on your desktop.
You can also use qapitrace as a GUI to inspect your trace files. (be sure to switch qapitrace to the EGL api using the options dialog)
These instructions provide a trace that does not include the Java GL code. To get traces including java code is more complicated. You need to use the patch from this bug https://bugzilla.mozilla.org/show_bug.cgi?id=749859 and this version of https://github.com/ideak/apitrace/tree/dev. Further, you'll need to build your own image/modify the current one to replace /init.rc. You also need to disable hardware acceleration of the UI (https://bug746703.bugzilla.mozilla.org/attachment.cgi?id=619009) Ask jrmuizel for more information if you want to do this.
about:memory provides heaps (ha!) of useful memory information.
You can obtain a snapshot of memory info from a running Fennec instance using:
adb shell am broadcast -a org.mozilla.gecko.MEMORY_DUMP
This dumps a json file to the SD card and prints out the exact filename to logcat. You can pull the json file to desktop using
adb pull <absolute-path-to-file>
and view it in firefox's about:memory: use the "Read reports from a file" option at the bottom of the about:memory page.
See https://wiki.mozilla.org/Mobile/Fennec/Android/Profiling.
Debugging Java code with DDMS
See http://developer.android.com/tools/debugging/ddms.html
Other useful tips and tricks
There are some addons which may be useful for development purposes. See Mobile/Fennec/Android/Development/Addons.
Tweaking UI prefs
By default, all of these prefs are set to "-1" in Fennec, meaning they take the values listed below, which are maintained in Axis.java.
Fractional values are specified in 1/1000th of a value; to specify a value of 0.3, write 300.
Note: You need to restart Fennec after changing these values.
|Default value
|This fraction in 1000ths of velocity remains after every animation frame when the velocity is low.
|This fraction in 1000ths of velocity remains after every animation frame when the velocity is high.
|Below this velocity (in pixels per frame), the friction changes from friction_fast to friction_slow.
|The maximum velocity change factor between events, per ms, in 1000ths.
|The rate of deceleration when the surface has overscrolled, in 1000ths.
|The fraction of the surface which can be overscrolled before it must snap back, in 1000ths.
|The minimum amount of space that must be present for an axis to be considered scrollable, in 1/1000ths of pixels.
|The strategy we use to determine how display ports are calculated. 0 = fixed margin, 1 = velocity bias, 2 = dynamic resolution, 3 = no margins
|When gfx.displayport.strategy = 0 (fixed margin), the 1000th of each dimension of the viewport the displayport is sized to.
| When gfx.displayport.strategy = 0 (fixed margin), the 1000th of the width of the viewport the horizontal danger zone is set to.
|When gfx.displayport.strategy = 0 (fixed margin), the 1000th of the height of the viewport the vertical danger zone is set to.
|When gfx.displayport.strategy = 1 (velocity bias), the 1000th of each dimension of the viewport the displayport is sized to.
|When gfx.displayport.strategy = 1 (velocity bias), the threshold for velocity, in pixels/frame, when multiplied by the screen DPI.
|When gfx.displayport.strategy = 1 (velocity bias), the fraction of the buffer (in 1000ths) to be kept in the direction opposite the direction of the scroll.
Invalidate the JavaScript startup cache
To make life easier for developers, in local development builds only, bug 976216 invalidates the JavaScript startup cache every time Firefox for Android starts. On non-local development builds (including TBPL builds and try builds), the JavaScript startup cache is not invalidated at startup.
Background: JavaScript files and modules (like
mobile/android. See bug 695145 for the details of this build ID handling. If you happen to be building a non-local development build in some way, you might need to invalidate the JavaScript startup cache by touching
toolkit/xre/nsAndroidStartup.cpp and rebuilding libxul.
killer script
#!/bin/sh if [ $# -ne 1 ] then echo "usage: $0 packagename.of.your.activity" echo "for example:" echo " $0 org.mozilla.fennec" exit fi p=`adb shell ps | grep $1 | awk '{print $2}'` if [ "$p" = "" ]; then echo "ERROR: That doesn't seem to be a running process. Please make sure your" echo "application has been started and that you are using the correct" echo "namespace argument." exit fi adb shell run-as $1 kill $p
This is an example .gdbinit that uses the symbols from a locally built rom and automatically attaches to gdbserver. Note that putting a .gdbinit file inside a directory will make gdb load it thus you will not pollute your regular gdb init with those configurations.
set solib-search-path /home/blassey/android/system/out/target/product/passion/symbols/system/bin:/home/blassey/android/system/out/target/product/passion/symbols/system/lib/:/home/blassey/src/ndk5-m-c/objdir-droid-dbg/dist/bin set solib-absolute-prefix /home/blassey/android/system/out/target/product/passion/symbols/system/lib/ target remote localhost:12345
Rooting Android devices
Sign a Fennec build
Nightly builds are available unsigned, so that you can sign them with your local debug key and install them on top of your own debug builds (without uninstalling and losing your profile). To sign and install the unsigned nightly build:
wget http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android-r7/gecko-unsigned-unaligned.apk jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android -keypass android gecko-unsigned-unaligned.apk androiddebugkey zipalign -f -v 4 gecko-unsigned-unaligned.apk gecko-signed-aligned.apk adb install -r gecko-signed-aligned.apk
Or you can also re-sign a signed build. If "fennec.apk" is signed already, this will remove the signature and replace it with your own. The result will be saved as "fennec-resigned.apk":
zip fennec.apk -d META-INF/* jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android -keypass android fennec.apk androiddebugkey zipalign -f -v 4 fennec.apk fennec-resigned.apk
If you get this error when you try to sign a package:
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 16716 but got 16964 bytes)
You should to follow some steps to complete your task:
* rename the .apk to .zip * unzip the file in some folder * remove the METAINF folder * zip the remaining files * change the name .zip to .apk * sign again
To verify if everything is alright use the command
jarsigner -verbose -verify


text:
Muniemaker Palmas 100's
6 x 46 - Natural - Box of 50
Muniemaker Palmas 100's cigars have been the favorite, all Connecticut-grown and made cigars for over 115 years. Since the days of the horse drawn trolley, bowler hats and 5 cent beer, Muniemaker Palmas 100's cigars have been best sellers, and when you smoke one you'll understand why. They have a distinctively peppery, 'all-American' flavor, plus, they're reasonably priced, making them one of the better budget cigar values we carry. Buy American and smoke American by ordering a box of Muniemaker cigars now.
Decent cigar, has nice flavours of cedar, spice, leather, coffee. Draw way too tight, some suck my cheeks in when I draw. Tasted awful out of the box, they came dry and have a fermented filler so they were harsh and sour. but after a few days in the humidor they smoothed out and I could enjoy what is a nice decent flavour.
This is a great cigar offered for the $$$$. Smoked Cuban, Dominican ect and for the price you can't go wrong. The only problem is the tight draw, but it beats the hell out of many other expensive cigars that are handrolled and much more expensive.


text:
Nice, France
My Rating
Very nice time we spent at this trip. Was the beautiful weather. The comfortable boat, friendly staff, great views of the Cote d'Azur. Enough time to explore St Tropez, visit the market, take the sun and swim at the beach of St. Tropez. It was amazing experience. Thank you.
My Photos
Some content licensed under a Creative Commons Attribution 3.0 License.
© 1997–2015 Viator, Inc. 330206 All rights reserved. Viator is a registered trademark of Viator, Inc.
is a Service Mark of Viator, Inc. Travel with an Insider is a Service Mark of Viator, Inc.
Use of this website constitutes acceptance of Viator's Terms & Conditions.
Viator uses cookies to improve your experience on our website. Learn more about how we use cookies and how to change your cookie settings | Close message


text:
October 23rd, 2014 - Valory Irene Groping Fantasy | Link This Post
Big Ass, Big Boobs, Hosted, Valory Irene
We've all had fantasies about groping Valory Irene, today our dream comes half true with this POV groping set. She looks pretty excited to have her boobs worshipped which is great because I am thinking about putting up a shrine to Valory's perfect mammories! Hahaha!


text:
Just seeing that bsa have removed a lot of sites from there listing because these sites have low traffic.
Sites have been removed without any warning(emails to the owners of these sites).
The rejection email says that a site must have at least 50.000 views, but there listing shows sites with 20.000 views.
We have used bsa for some time now but because of this action we are looking for a better way, because a couple of site with low traffic has been removed, the bad part is that these sites have been generating income with BSA for some time now.
Anybody any good idea's for an replament tool?
Just our 2 cents
I've been trying to signup to bsa for years.. for my non-design site and they always decline me, even though my traffic is huge.
I'm now using oiopublisher.com, you keep 100% advertising revenues to yourself.
Multiple payment gateways, inline ads, text links, banner ads, subscription, affiliate, stats.. api key to link your website to their marketplace for advertisers to see.
It's THE BEST replacement tool!
Helpful Information
- Please read our community guidelines. Self promotion and discussion of piracy is not allowed.
- Open a support ticket if you would like specific help with your account, deposits or purchases.
- Item Support by authors is optional and may vary. Please see the Support tab on each item page.
Most of all, enjoy your time here. Thank you for being a valued Envato community member.


text:
Wonderful, very special, this was plaed on my wife's grave marker. She loved to collect angles. so this is just perfect!
The overall look and details are good, but I haven't had a chance to see how well it holds up to the elements in the yard. Got it in a timely manner.


text:
Ron Pearlman
Revolving Door (0)
Sightings (1)
This Weekend at LAFF: Drive Premiere and Attempts at Schmoozing - Posted June 20, 2011
Drive made its much-hyped debut over the weekend at the LA Film Festival and this Fishie was on site to check out premiere. (Unfortunately, he's not much of a photographer, so the above LA Times interview will have to suffice for visual imagery in lieu of his horrible, poorly lit photos.)... [FishbowlLA]


text:
Sorry, no definitions found.
Sorry, no etymologies found.
Sorry, no example sentences found.
Log in or sign up to add your own related words.
Log in or sign up to get involved in the conversation. It's quick and easy.
gangerh commented on the word strumdudgeon
Playing the air guitar?
April 12, 2008


text:
All we had to do was purchase the software and several licenses and see how we liked it. We could do the implementation ourselves, at our pace. Overall, xTuple gave us alternatives that no other vendor could.
What's in a name? Or why "xTuple"?
Good question. Renaming a company and launching a new brand is not something anyone should undertake lightly. But we felt that with the expanded line of products and services, and a broadening of our target audience to include companies who might not do much actual manufacturing, the time was right. We were looking for something exciting, that speaks powerfully to the possibility for exponential growth in the key business metrics that are important to our customers. Double (2x), quadruple (4x), quintuple (5x) ... xTuple.
There is also, we confess, a bit of a geek-insider joke (there always is, with software companies). In computer science and mathematics, a "tuple" is a name for any two or more points of data you wish to analyze. In fact, in database circles, rows of the database are often referred to as tuples. So it's ex-tuple, from the database. Get it? You don't? Well, never mind! :)
Subscribe to updates
Webinars, classroom training, distance learning, meetups and conferences