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")); |
+ ASSERT_TRUE(extension); |
+ |
+ // Open the embedded options page |
+ 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 |