| Index: chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| diff --git a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| index 020a11f50d9ab11b69fa315bf2d47a47702b2762..7c0e3f87f7e2bb15dfb29cf5102c43fc35419ecb 100644
|
| --- a/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| +++ b/chrome/browser/ui/toolbar/browser_actions_bar_browsertest.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/bind_helpers.h"
|
| #include "base/macros.h"
|
| #include "base/run_loop.h"
|
| +#include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
|
| #include "chrome/browser/extensions/browser_action_test_util.h"
|
| #include "chrome/browser/extensions/extension_action.h"
|
| @@ -636,3 +637,44 @@ IN_PROC_BROWSER_TEST_F(BrowserActionsBarBrowserTest, RemovePoppedOutAction) {
|
| EXPECT_EQ(1, browser_actions_bar()->NumberOfBrowserActions());
|
| EXPECT_FALSE(toolbar_actions_bar->popped_out_action());
|
| }
|
| +
|
| +// A test that runs in incognito mode.
|
| +class BrowserActionsBarIncognitoTest : public BrowserActionsBarBrowserTest {
|
| + public:
|
| + void SetUpCommandLine(base::CommandLine* command_line) override {
|
| + BrowserActionsBarBrowserTest::SetUpCommandLine(command_line);
|
| + command_line->AppendSwitch("incognito");
|
| + }
|
| +};
|
| +
|
| +// Tests that first loading an extension action in an incognito profile, then
|
| +// removing the incognito profile and using the extension action in a normal
|
| +// profile doesn't crash.
|
| +// Regression test for crbug.com/663726.
|
| +IN_PROC_BROWSER_TEST_F(BrowserActionsBarIncognitoTest, IncognitoMode) {
|
| + EXPECT_TRUE(browser()->profile()->IsOffTheRecord());
|
| + const extensions::Extension* extension = LoadExtensionIncognito(
|
| + test_data_dir_.AppendASCII("api_test/browser_action_with_icon"));
|
| + ASSERT_TRUE(extension);
|
| + Browser* second_browser =
|
| + new Browser(Browser::CreateParams(profile()->GetOriginalProfile()));
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_FALSE(second_browser->profile()->IsOffTheRecord());
|
| +
|
| + content::WindowedNotificationObserver window_close_observer(
|
| + chrome::NOTIFICATION_BROWSER_CLOSED, content::Source<Browser>(browser()));
|
| + browser()->window()->Close();
|
| + window_close_observer.Wait();
|
| +
|
| + std::vector<ToolbarActionViewController*> actions =
|
| + second_browser->window()->GetToolbarActionsBar()->GetActions();
|
| + ASSERT_EQ(1u, actions.size());
|
| + gfx::Image icon = actions[0]->GetIcon(
|
| + second_browser->tab_strip_model()->GetActiveWebContents(),
|
| + gfx::Size(ToolbarActionsBar::IconWidth(false),
|
| + ToolbarActionsBar::IconHeight()));
|
| + const gfx::ImageSkia* skia = icon.ToImageSkia();
|
| + ASSERT_TRUE(skia);
|
| + // Force the image to try and load a representation.
|
| + skia->GetRepresentation(2.0);
|
| +}
|
|
|