Adding "teleport windows to user X" context menu

This adds the teleport items to the context menu. At the same time I was also adding a GetUserID function to the SessionStateController to avoid adding the sanitization of the user names all over the place.

BUG=306143
TEST=visual, a few things got handled by unit tests

Review URL: https://codereview.chromium.org/27217003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229607 0039d316-1c4b-4281-b951-d872f2087c98
This is the reorganization that's a necessary precursor to implementing the HTTP fallback for M32.

Here's what's changed:

- There's now a DataReductionProxySettings base class that DataReductionProxySettingsAndroid inherits from. All functionality that's not platform-specific is now in the superclass.

- In general, DataReductionProxySettingsAndroid methods that accept or return Java types are now wrappers which call a superclass method with the same name but a different method signature.

- Many private methods moved to protected so the subclasses can use them.

- This implementation assumes fixed proxy configuiration is the default, and DataReductionProxySettingsAndroid overrides that to use an inline PAC data URL. Some method names have changed accordingly.

- The UMA used by DataReductionProxySettingsAndroid are obsolete but haven't been corrected; the superclass uses the current correct UMA. The |at_startup| param for SetProxyConfigs() is only provided to support these older histograms and isn't used in the superclass implementation. 

- Unit tests were also factored apart. There's some duplicated code in the test classes that I'll clean up later.

- I moved to using defined(SPDY_PROXY_AUTH_ORIGIN) as the preprocessor gate for data reduction proxy features, rather than defined(OS_ANDROID) || defined(OS_IOS). However, I suspect we will actually want to move to an independent flag (DATA_REDUCTION_PROXY_FEATURE_AVAILABLE or something if we want to keep the authentication stuff separate. Regardless, we should move away from platform-specific flags.

I tried to keep functional changes to a minimum; I believe this is the extent of them:
- LOG()s were either removed or turned to D/VLOG()s.
- The probe URL isn't blocked in the configs; instead the probe request sets LOAD_BYPASS_PROXY
- Host-level bypasses use the system proxy bypass list rather than (on Android) adding more PAC clauses. 
- URL pattern bypasses are still supported on Android; in the base class they are converted into host bypasses (so bypassing foo.bar.com/baz/* will just bypass all of foo.bar.com instead).
- Profiles are fetched by the non-deprecated GetLastUsedProfile()
- By default, RFC1918 and RFC4193 private addresses are bypassed.
- By default, http://www.google.com/complete/search* is not bypassed; however, it is on Android.
- The bug in GetProxyCheckURL where the proxy server URL is returned when the probe URL is set on the command line is fixed. 

I expect the API will evolve further as the HTTP fallback is implemented and the class is integrated with other platforms.

Review URL: https://codereview.chromium.org/27221002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229608 0039d316-1c4b-4281-b951-d872f2087c98
Provide approximate type functions for SkMatrix44.

Skia's SkMatrix44 class provides methods for computing the type of a matrix
using exact computations, i.e. matrix values must be of exactly some value.
However, in some cases some inaccuracy can be tolerated. This patch provides
methods for computing approximate types in a centralized place
(cc/base/math_util.c,hh). It replaces any other approximate type computation
with calls to the new methods.

BUG=293787

Review URL: https://codereview.chromium.org/27223008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229609 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 229608
SVN changes up to revision 229609
Do not run MSE related tests when MSE is not available.

BUG=304956
TEST=This make MSE related tests doesn't run on unsupported platform/devices.

Review URL: https://codereview.chromium.org/27230004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@229610 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 229610