Chromium Code Reviews| Index: chrome/browser/extensions/platform_app_browsertest_util.h |
| diff --git a/chrome/browser/extensions/platform_app_browsertest_util.h b/chrome/browser/extensions/platform_app_browsertest_util.h |
| index 3d3a2a7d40efd36e9d4d74b9e443b0147b72f2b3..a3d9cc64c0d4808fde42501f60b4e20daa711162 100644 |
| --- a/chrome/browser/extensions/platform_app_browsertest_util.h |
| +++ b/chrome/browser/extensions/platform_app_browsertest_util.h |
| @@ -7,6 +7,9 @@ |
| #include "chrome/browser/extensions/extension_apitest.h" |
| +#include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/browser_list.h" |
| +#include "chrome/browser/ui/browser_window.h" |
| namespace content { |
| @@ -19,9 +22,43 @@ class ShellWindow; |
| namespace extensions { |
| class Extension; |
| +class MockExternalUrlController : public content::WebContentsDelegate { |
|
Mihai Parparita -not on Chrome
2012/10/12 23:00:17
This doesn't need to be defined in the header, it
|
| + public: |
| + MockExternalUrlController() {} |
| + |
| + private: |
| + // content::WebContentsDelegate implementation. |
| + virtual content::WebContents* OpenURLFromTab( |
| + content::WebContents* source, |
| + const content::OpenURLParams& params) OVERRIDE { |
| + // Delete useless web content first to |
| + // avoid a potential leak in a render process host. |
| + delete source; |
| + |
| + // Force to open in a new tab. |
| + WindowOpenDisposition disposition = params.disposition; |
| + content::OpenURLParams new_tab_params = params; |
| + new_tab_params.disposition = |
| + disposition == NEW_BACKGROUND_TAB ? disposition : NEW_FOREGROUND_TAB; |
| + for (BrowserList::const_iterator i = BrowserList::begin(); |
| + i != BrowserList::end(); ++i) { |
| + if ((*i)->is_type_tabbed()) { |
| + Browser* browser = *i; |
| + content::WebContents* new_tab = browser->OpenURL(new_tab_params); |
| + browser->window()->Show(); |
| + return new_tab; |
| + } |
| + } |
| + return NULL; |
| + } |
| + |
| + DISALLOW_COPY_AND_ASSIGN(MockExternalUrlController); |
| +}; |
| + |
| class PlatformAppBrowserTest : public ExtensionApiTest { |
| public: |
| virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; |
| + virtual void SetUpOnMainThread() OVERRIDE; |
| protected: |
| // Runs the app named |name| out of the platform_apps subdirectory. Waits |
| @@ -66,6 +103,8 @@ class PlatformAppBrowserTest : public ExtensionApiTest { |
| // Closes |window| and waits until it's gone. |
| void CloseShellWindow(ShellWindow* window); |
| + |
| + scoped_ptr<MockExternalUrlController> mock_external_url_controller_; |
| }; |
| } |