Chromium Code Reviews| Index: chrome/browser/extensions/api/developer_private/developer_private_apitest.cc |
| diff --git a/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc b/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc |
| index 68f1b2f3d90d4275feb1d4e0f76d7188a2b476ca..4074f50aa024dc1a8d85965827fc9d14816274ce 100644 |
| --- a/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc |
| +++ b/chrome/browser/extensions/api/developer_private/developer_private_apitest.cc |
| @@ -8,7 +8,9 @@ |
| #include "chrome/browser/extensions/api/developer_private/developer_private_api.h" |
| #include "chrome/browser/extensions/extension_apitest.h" |
| #include "chrome/browser/extensions/extension_function_test_utils.h" |
| +#include "chrome/browser/extensions/extension_tab_util.h" |
| #include "chrome/common/chrome_paths.h" |
| +#include "content/public/browser/render_frame_host.h" |
| #include "extensions/browser/app_window/app_window.h" |
| #include "extensions/browser/app_window/app_window_registry.h" |
| @@ -81,4 +83,53 @@ IN_PROC_BROWSER_TEST_F(DeveloperPrivateApiTest, InspectAppWindowView) { |
| (*app_windows.begin())->web_contents())); |
| } |
| +IN_PROC_BROWSER_TEST_F(DeveloperPrivateApiTest, InspectEmbeddedOptionsPage) { |
| + base::FilePath dir; |
| + PathService::Get(chrome::DIR_TEST_DATA, &dir); |
| + // Load an extension that only has an embedded options_ui page. |
| + const Extension* extension = |
| + LoadExtension(dir.AppendASCII("extensions/delayed_install/v1")); |
|
Devlin
2015/12/01 00:58:20
nit: typically prefer .AppendASCII rather than pla
robwu
2015/12/01 17:19:57
Done.
|
| + ASSERT_TRUE(extension); |
| + |
| + // Open the embedded options page |
|
Devlin
2015/12/01 00:58:20
nitty nit: end in a '.'
robwu
2015/12/01 17:19:57
Done.
|
| + ASSERT_TRUE(ExtensionTabUtil::OpenOptionsPage(extension, browser())); |
| + WaitForExtensionNotIdle(extension->id()); |
| + |
| + // Get the info about the extension, including the inspectable views. |
| + scoped_refptr<UIThreadExtensionFunction> function( |
| + new api::DeveloperPrivateGetExtensionInfoFunction()); |
| + scoped_ptr<base::Value> result( |
| + extension_function_test_utils::RunFunctionAndReturnSingleResult( |
| + function.get(), base::StringPrintf("[\"%s\"]", |
| + extension->id().c_str()), |
| + browser())); |
| + ASSERT_TRUE(result); |
| + scoped_ptr<api::developer_private::ExtensionInfo> info = |
| + api::developer_private::ExtensionInfo::FromValue(*result); |
| + ASSERT_TRUE(info); |
| + |
| + // The embedded options page should show up. |
| + ASSERT_EQ(1u, info->views.size()); |
| + api::developer_private::ExtensionView* view = info->views[0].get(); |
| + ASSERT_TRUE(view); |
| + ASSERT_EQ(api::developer_private::VIEW_TYPE_EXTENSION_OPTIONS, view->type); |
| + |
| + // Inspect the embedded options page. |
| + function = new api::DeveloperPrivateOpenDevToolsFunction(); |
| + extension_function_test_utils::RunFunction( |
| + function.get(), |
| + base::StringPrintf("[{\"renderViewId\": %d, \"renderProcessId\": %d}]", |
| + view->render_view_id, |
| + view->render_process_id), |
| + browser(), extension_function_test_utils::NONE); |
| + |
| + // Verify that dev tools opened. |
| + content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( |
| + view->render_process_id, view->render_view_id); |
| + ASSERT_TRUE(rfh); |
| + content::WebContents* wc = content::WebContents::FromRenderFrameHost(rfh); |
| + ASSERT_TRUE(wc); |
| + EXPECT_TRUE(DevToolsWindow::GetInstanceForInspectedWebContents(wc)); |
| +} |
| + |
| } // namespace extensions |