Index: chrome/browser/extensions/platform_app_browsertest_util.cc |
diff --git a/chrome/browser/extensions/platform_app_browsertest_util.cc b/chrome/browser/extensions/platform_app_browsertest_util.cc |
index a722eb590f43465756c4dcc0d13fa7a596aad27a..2795469610a83fd9694b1618ccb95b8ad02a4001 100644 |
--- a/chrome/browser/extensions/platform_app_browsertest_util.cc |
+++ b/chrome/browser/extensions/platform_app_browsertest_util.cc |
@@ -10,6 +10,8 @@ |
#include "chrome/browser/extensions/extension_function_test_utils.h" |
#include "chrome/browser/extensions/shell_window_registry.h" |
#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_list.h" |
+#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/extensions/application_launch.h" |
#include "chrome/browser/ui/extensions/shell_window.h" |
#include "chrome/common/chrome_switches.h" |
@@ -22,11 +24,53 @@ namespace utils = extension_function_test_utils; |
namespace extensions { |
+MockExternalUrlController::MockExternalUrlController() { |
+} |
+ |
+MockExternalUrlController::~MockExternalUrlController() { |
+} |
+ |
+content::WebContents* MockExternalUrlController::OpenURLFromTab( |
+ content::WebContents* source, |
+ const content::OpenURLParams& params) { |
+ // 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; |
+} |
+ |
+PlatformAppBrowserTest::PlatformAppBrowserTest() { |
+} |
+ |
+PlatformAppBrowserTest::~PlatformAppBrowserTest() { |
+} |
+ |
void PlatformAppBrowserTest::SetUpCommandLine(CommandLine* command_line) { |
ExtensionBrowserTest::SetUpCommandLine(command_line); |
command_line->AppendSwitch(switches::kEnableExperimentalExtensionApis); |
} |
+void PlatformAppBrowserTest::SetUpOnMainThread() { |
+ mock_external_url_controller_.reset(new MockExternalUrlController()); |
+ ShellWindow::SetExternalUrlControllerForTesting( |
+ mock_external_url_controller_.get()); |
+} |
+ |
const Extension* PlatformAppBrowserTest::LoadAndLaunchPlatformApp( |
const char* name) { |
content::WindowedNotificationObserver app_loaded_observer( |