Split OAuth2 into different strategies for ChromeApp versus web page. Create web page OAuth2 strategy. Create EasyOAuth2 that auto selects the appropriate strategy. Move OAuthXhrFactory and related models out of ChromeApp.js Split ajsonp into ajsonp and getJsonpCallback so that jsonp style callbacks can be used for other purposes.