The last riot at Foxconn started with a dispute in between a worker and a local restaurant owner. Ended with a 1000 man riot. Nothing to do with Foxconn worker rights.
Such riots can't be equivocated with workers flighting for greater rights. They aren't. They want more money. Most the disputes are about broken promises of overtime work, as the workers make their best money from overtime. The workers don't live anywhere near the factories. They just work there for a few years to take money back to the villages where their families and friends live. They want money to improve families living conditions, not the factory that they don't give a damn about. They would trade factory conditions for more money almost any time, as the factory conditions are just temporary for them. They want to reach their goal of saving $X, go home, and enjoy their lives with their family and friends.
What I am saying is not universal in China. The Chinese government controls migration and in some locations factories can only employ local people. In such factories labour costs are much higher and workers do receive much better working conditions. This story is not about such a factory.