[Webapps] Open new windows in a different Activity

* SingleTabModeTabHelper is introduced to keep track of tabs that are disallowed from opening new windows.  It observes when renderers are created or deleted and updates the global mapping accordingly.

* ChromeContentBrowserClient::CanCreateWindow() is made to do an additional check after popups have been blocked to see if a new window should be allowed.  Some restructuring has been put in to reuse the parameter classes it was using.

* Some logic from PopupBlockerTabHelper is pulled out to help create NavigateParams into PopupBlockerParams that get passed onto the TabAndroid and eventually the TabModel under clank/, which fires an Intent to open the URL in Chrome.

BUG=271540

Review URL: https://chromiumcodereview.appspot.com/24014002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222595 0039d316-1c4b-4281-b951-d872f2087c98
10 files changed