summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordimich@chromium.org <dimich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-14 01:01:14 +0000
committerdimich@chromium.org <dimich@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-14 01:01:14 +0000
commit11050e6894430cdd326ff0138f8a590c64b5a157 (patch)
treee642f9cdca8dac2150f2553342eea2c47ab03487 /chrome
parent0a86afaaa91e199a209f6dff3d678146ef8d0a91 (diff)
downloadchromium_src-11050e6894430cdd326ff0138f8a590c64b5a157.zip
chromium_src-11050e6894430cdd326ff0138f8a590c64b5a157.tar.gz
chromium_src-11050e6894430cdd326ff0138f8a590c64b5a157.tar.bz2
Add activation/deactivation test for Panels.
Also fix Activation/Deactivation code for Linux and Mac so the test passes TEST=PanelBrowserTest.Activation Review URL: http://codereview.chromium.org/8221013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105430 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/ui/gtk/browser_window_gtk.cc7
-rw-r--r--chrome/browser/ui/gtk/browser_window_gtk.h3
-rw-r--r--chrome/browser/ui/panels/base_panel_browser_test.cc28
-rw-r--r--chrome/browser/ui/panels/panel_browser_window_gtk.cc12
-rw-r--r--chrome/browser/ui/panels/panel_browser_window_gtk.h5
-rw-r--r--chrome/browser/ui/panels/panel_browsertest.cc234
-rw-r--r--chrome/chrome_tests.gypi6
7 files changed, 188 insertions, 107 deletions
diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc
index 7d4846f..fdcc4c6 100644
--- a/chrome/browser/ui/gtk/browser_window_gtk.cc
+++ b/chrome/browser/ui/gtk/browser_window_gtk.cc
@@ -2198,10 +2198,15 @@ bool BrowserWindowGtk::HandleTitleBarLeftMousePress(
gboolean BrowserWindowGtk::OnFocusIn(GtkWidget* widget,
GdkEventFocus* event) {
- BrowserList::SetLastActive(browser_.get());
+ HandleFocusIn(widget, event);
return FALSE;
}
+void BrowserWindowGtk::HandleFocusIn(GtkWidget* widget,
+ GdkEventFocus* event) {
+ BrowserList::SetLastActive(browser_.get());
+}
+
gboolean BrowserWindowGtk::OnFocusOut(GtkWidget* widget,
GdkEventFocus* event) {
return FALSE;
diff --git a/chrome/browser/ui/gtk/browser_window_gtk.h b/chrome/browser/ui/gtk/browser_window_gtk.h
index 3073b47..0a75640 100644
--- a/chrome/browser/ui/gtk/browser_window_gtk.h
+++ b/chrome/browser/ui/gtk/browser_window_gtk.h
@@ -263,6 +263,9 @@ class BrowserWindowGtk : public BrowserWindow,
virtual void DrawCustomFrame(cairo_t* cr, GtkWidget* widget,
GdkEventExpose* event);
+ // 'focus-in-event' handler.
+ virtual void HandleFocusIn(GtkWidget* widget, GdkEventFocus* event);
+
// Returns the size of the window frame around the client content area.
gfx::Size GetNonClientFrameSize() const;
diff --git a/chrome/browser/ui/panels/base_panel_browser_test.cc b/chrome/browser/ui/panels/base_panel_browser_test.cc
index a3ab898..f6f2b1f 100644
--- a/chrome/browser/ui/panels/base_panel_browser_test.cc
+++ b/chrome/browser/ui/panels/base_panel_browser_test.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/ui/panels/base_panel_browser_test.h"
+#include "chrome/browser/ui/browser_list.h"
+
#include "base/command_line.h"
#include "base/mac/scoped_nsautorelease_pool.h"
#include "base/message_loop.h"
@@ -249,10 +251,32 @@ Panel* BasePanelBrowserTest::CreatePanelWithParams(
}
Panel* panel = static_cast<Panel*>(panel_browser->window());
- if (params.show_flag == SHOW_AS_ACTIVE)
+
+ if (params.show_flag == SHOW_AS_ACTIVE) {
panel->Show();
- else
+ } else {
+#if defined(OS_LINUX)
+ std::string wm_name;
+ bool has_name = ui::GetWindowManagerName(&wm_name);
+ // On bots, we might have a simple window manager which always activates new
+ // windows, and can't always deactivate them. Activate previously active
+ // window back to ensure the new window is inactive.
+ // IceWM has a name string like "IceWM 1.3.6 (Linux 2.6.24-23-server/x86)"
+ if (has_name && wm_name.find("IceWM") != std::string::npos) {
+ Browser* last_active_browser = BrowserList::GetLastActive();
+ EXPECT_TRUE(last_active_browser);
+ EXPECT_NE(last_active_browser, panel->browser());
+ panel->ShowInactive(); // Shows as active anyways in icewm.
+ MessageLoopForUI::current()->RunAllPending();
+ // Restore focus where it was. It will deactivate the new panel.
+ last_active_browser->window()->Activate();
+ } else {
+ panel->ShowInactive();
+ }
+#else
panel->ShowInactive();
+#endif
+ }
MessageLoopForUI::current()->RunAllPending();
// More waiting, because gaining or losing focus may require inter-process
// asynchronous communication, and it is not enough to just run the local
diff --git a/chrome/browser/ui/panels/panel_browser_window_gtk.cc b/chrome/browser/ui/panels/panel_browser_window_gtk.cc
index 5fc7878..482b24c 100644
--- a/chrome/browser/ui/panels/panel_browser_window_gtk.cc
+++ b/chrome/browser/ui/panels/panel_browser_window_gtk.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/panels/panel_browser_window_gtk.h"
+#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/panels/panel.h"
#include "chrome/browser/ui/panels/panel_manager.h"
#include "chrome/browser/ui/panels/panel_settings_menu_model.h"
@@ -85,8 +86,6 @@ void PanelBrowserWindowGtk::Init() {
// minimize etc. can only be done from the panel UI.
gtk_window_set_skip_taskbar_hint(window(), TRUE);
- g_signal_connect(titlebar_widget(), "focus-in-event",
- G_CALLBACK(OnFocusInThunk), this);
g_signal_connect(titlebar_widget(), "button-press-event",
G_CALLBACK(OnTitlebarButtonPressEventThunk), this);
g_signal_connect(titlebar_widget(), "button-release-event",
@@ -263,6 +262,8 @@ void PanelBrowserWindowGtk::ClosePanel() {
}
void PanelBrowserWindowGtk::ActivatePanel() {
+ if (IsActive())
+ return;
Activate();
}
@@ -559,10 +560,12 @@ gboolean PanelBrowserWindowGtk::OnTitlebarButtonReleaseEvent(
return TRUE;
}
-gboolean PanelBrowserWindowGtk::OnFocusIn(GtkWidget* widget,
+void PanelBrowserWindowGtk::HandleFocusIn(GtkWidget* widget,
GdkEventFocus* event) {
+ BrowserWindowGtk::HandleFocusIn(widget, event);
+
if (!is_drawing_attention_)
- return FALSE;
+ return;
is_drawing_attention_ = false;
UpdateTitleBar();
@@ -570,7 +573,6 @@ gboolean PanelBrowserWindowGtk::OnFocusIn(GtkWidget* widget,
disableMinimizeUntilTime_ =
base::Time::Now() + kSuspendMinimizeOnClickIntervalMs;
- return FALSE;
}
void PanelBrowserWindowGtk::OnDragBegin(GtkWidget* widget,
diff --git a/chrome/browser/ui/panels/panel_browser_window_gtk.h b/chrome/browser/ui/panels/panel_browser_window_gtk.h
index ac76bb2..0957e87 100644
--- a/chrome/browser/ui/panels/panel_browser_window_gtk.h
+++ b/chrome/browser/ui/panels/panel_browser_window_gtk.h
@@ -54,6 +54,9 @@ class PanelBrowserWindowGtk : public BrowserWindowGtk,
virtual void DrawCustomFrame(cairo_t* cr, GtkWidget* widget,
GdkEventExpose* event) OVERRIDE;
virtual void ActiveWindowChanged(GdkWindow* active_window) OVERRIDE;
+ // 'focus-in-event' handler.
+ virtual void HandleFocusIn(GtkWidget* widget,
+ GdkEventFocus* event) OVERRIDE;
// Overridden from NativePanel:
@@ -113,8 +116,6 @@ class PanelBrowserWindowGtk : public BrowserWindowGtk,
OnTitlebarButtonPressEvent, GdkEventButton*);
CHROMEGTK_CALLBACK_1(PanelBrowserWindowGtk, gboolean,
OnTitlebarButtonReleaseEvent, GdkEventButton*);
- CHROMEGTK_CALLBACK_1(PanelBrowserWindowGtk, gboolean, OnFocusIn,
- GdkEventFocus*);
// drag-begin is emitted when the drag is started. We connect so that we can
// set the drag icon to a transparent pixbuf.
diff --git a/chrome/browser/ui/panels/panel_browsertest.cc b/chrome/browser/ui/panels/panel_browsertest.cc
index 3122111..20dd241 100644
--- a/chrome/browser/ui/panels/panel_browsertest.cc
+++ b/chrome/browser/ui/panels/panel_browsertest.cc
@@ -935,9 +935,146 @@ IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestore) {
PanelManager::GetInstance()->RemoveAll();
}
-// Exclude linux_cromeos, linux_view and linux bots. The panels created inactive
+// TODO(dimich): Enable on chromeos.
+#if defined(TOOLKIT_GTK) || defined(OS_MACOSX) || defined(OS_WIN)
+#define MAYBE_ActivatePanelOrTabbedWindow ActivatePanelOrTabbedWindow
+#else
+#define MAYBE_ActivatePanelOrTabbedWindow DISABLED_ActivatePanelOrTabbedWindow
+#endif
+
+IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_ActivatePanelOrTabbedWindow) {
+ CreatePanelParams params1("Inactive", gfx::Rect(), SHOW_AS_INACTIVE);
+ Panel* panel1 = CreatePanelWithParams(params1);
+ CreatePanelParams params2("Active", gfx::Rect(), SHOW_AS_ACTIVE);
+ Panel* panel2 = CreatePanelWithParams(params2);
+
+ ASSERT_FALSE(panel1->IsActive());
+ ASSERT_TRUE(panel2->IsActive());
+ // Activate main tabbed window.
+ browser()->window()->Activate();
+ WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE);
+
+ // Activate a panel.
+ panel2->Activate();
+ WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE);
+
+ // Activate the main tabbed window back.
+ browser()->window()->Activate();
+ WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE);
+ // Close the main tabbed window. That should move focus back to panel.
+ CloseWindowAndWait(browser());
+ WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE);
+
+ // Activate another panel.
+ panel1->Activate();
+ WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE);
+ WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE);
+
+ // Switch focus between panels.
+ panel2->Activate();
+ WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE);
+ WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE);
+
+ // Close active panel, focus should move to the remaining one.
+ CloseWindowAndWait(panel2->browser());
+ WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE);
+ panel1->Close();
+}
+
+// TODO(jianli): To be enabled for other platforms.
+#if defined(OS_WIN)
+#define MAYBE_ActivateDeactivateBasic ActivateDeactivateBasic
+#else
+#define MAYBE_ActivateDeactivateBasic DISABLED_ActivateDeactivateBasic
+#endif
+IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_ActivateDeactivateBasic) {
+ // Create an active panel.
+ Panel* panel = CreatePanel("PanelTest");
+ scoped_ptr<NativePanelTesting> native_panel_testing(
+ NativePanelTesting::Create(panel->native_panel()));
+ EXPECT_TRUE(panel->IsActive());
+ EXPECT_TRUE(native_panel_testing->VerifyActiveState(true));
+
+ // Deactivate the panel.
+ panel->Deactivate();
+ WaitForPanelActiveState(panel, SHOW_AS_INACTIVE);
+ EXPECT_FALSE(panel->IsActive());
+ EXPECT_TRUE(native_panel_testing->VerifyActiveState(false));
+
+ // Reactivate the panel.
+ panel->Activate();
+ WaitForPanelActiveState(panel, SHOW_AS_ACTIVE);
+ EXPECT_TRUE(panel->IsActive());
+ EXPECT_TRUE(native_panel_testing->VerifyActiveState(true));
+}
+
+// TODO(jianli): To be enabled for other platforms.
+#if defined(OS_WIN)
+#define MAYBE_ActivateDeactivateMultiple ActivateDeactivateMultiple
+#else
+#define MAYBE_ActivateDeactivateMultiple DISABLED_ActivateDeactivateMultiple
+#endif
+IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_ActivateDeactivateMultiple) {
+ BrowserWindow* tabbed_window = BrowserList::GetLastActive()->window();
+
+ // Create 4 panels in the following screen layout:
+ // P3 P2 P1 P0
+ const int kNumPanels = 4;
+ std::string panel_name_base("PanelTest");
+ for (int i = 0; i < kNumPanels; ++i) {
+ CreatePanelWithBounds(panel_name_base + base::IntToString(i),
+ gfx::Rect(0, 0, 100, 100));
+ }
+ const std::vector<Panel*>& panels = PanelManager::GetInstance()->panels();
+
+ std::vector<bool> expected_active_states;
+ std::vector<bool> last_active_states;
+
+ // The last created panel, P3, should be active.
+ expected_active_states = ProduceExpectedActiveStates(3);
+ EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
+ EXPECT_FALSE(tabbed_window->IsActive());
+
+ // Activating P1 should cause P3 to lose focus.
+ panels[1]->Activate();
+ last_active_states = expected_active_states;
+ expected_active_states = ProduceExpectedActiveStates(1);
+ WaitForPanelActiveStates(last_active_states, expected_active_states);
+ EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
+
+ // Minimizing inactive panel P2 should not affect other panels' active states.
+ panels[2]->SetExpansionState(Panel::MINIMIZED);
+ EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
+ EXPECT_FALSE(tabbed_window->IsActive());
+
+ // Minimizing active panel P1 should activate last active panel P3.
+ panels[1]->SetExpansionState(Panel::MINIMIZED);
+ last_active_states = expected_active_states;
+ expected_active_states = ProduceExpectedActiveStates(3);
+ WaitForPanelActiveStates(last_active_states, expected_active_states);
+ EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
+ EXPECT_FALSE(tabbed_window->IsActive());
+
+ // Minimizing active panel P3 should activate last active panel P0.
+ panels[3]->SetExpansionState(Panel::MINIMIZED);
+ last_active_states = expected_active_states;
+ expected_active_states = ProduceExpectedActiveStates(0);
+ WaitForPanelActiveStates(last_active_states, expected_active_states);
+ EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
+ EXPECT_FALSE(tabbed_window->IsActive());
+
+ // Minimizing active panel P0 should activate last active tabbed window.
+ panels[0]->SetExpansionState(Panel::MINIMIZED);
+ last_active_states = expected_active_states;
+ expected_active_states = ProduceExpectedActiveStates(-1); // -1 means none.
+ WaitForPanelActiveStates(last_active_states, expected_active_states);
+ EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
+ EXPECT_TRUE(tabbed_window->IsActive());
+}
+
+// Exclude linux_cromeos and linux_view bots. The panels created inactive
// appear to be active there. Need more investigation.
-#if defined(OS_WIN) || defined(OS_MACOSX)
+#if defined(TOOLKIT_GTK) || defined(OS_WIN) || defined(OS_MACOSX)
#define MAYBE_DrawAttentionBasic DrawAttentionBasic
#define MAYBE_DrawAttentionWhileMinimized DrawAttentionWhileMinimized
#define MAYBE_DrawAttentionResetOnActivate DrawAttentionResetOnActivate
@@ -1003,7 +1140,7 @@ IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_DrawAttentionWhileMinimized) {
}
IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionWhenActive) {
- CreatePanelParams params("Initially Inactive", gfx::Rect(), SHOW_AS_ACTIVE);
+ CreatePanelParams params("Initially Active", gfx::Rect(), SHOW_AS_ACTIVE);
Panel* panel = CreatePanelWithParams(params);
scoped_ptr<NativePanelTesting> native_panel_testing(
NativePanelTesting::Create(panel->native_panel()));
@@ -1042,97 +1179,6 @@ IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_DrawAttentionResetOnActivate) {
panel->Close();
}
-// TODO(jianli): To be enabled for other platforms.
-#if defined(OS_WIN)
-#define MAYBE_ActivateDeactivateBasic ActivateDeactivateBasic
-#else
-#define MAYBE_ActivateDeactivateBasic DISABLED_ActivateDeactivateBasic
-#endif
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_ActivateDeactivateBasic) {
- // Create an active panel.
- Panel* panel = CreatePanel("PanelTest");
- scoped_ptr<NativePanelTesting> native_panel_testing(
- NativePanelTesting::Create(panel->native_panel()));
- EXPECT_TRUE(panel->IsActive());
- EXPECT_TRUE(native_panel_testing->VerifyActiveState(true));
-
- // Deactivate the panel.
- panel->Deactivate();
- WaitForPanelActiveState(panel, SHOW_AS_INACTIVE);
- EXPECT_FALSE(panel->IsActive());
- EXPECT_TRUE(native_panel_testing->VerifyActiveState(false));
-
- // Reactivate the panel.
- panel->Activate();
- WaitForPanelActiveState(panel, SHOW_AS_ACTIVE);
- EXPECT_TRUE(panel->IsActive());
- EXPECT_TRUE(native_panel_testing->VerifyActiveState(true));
-}
-
-// TODO(jianli): To be enabled for other platforms.
-#if defined(OS_WIN)
-#define MAYBE_ActivateDeactivateMultiple ActivateDeactivateMultiple
-#else
-#define MAYBE_ActivateDeactivateMultiple DISABLED_ActivateDeactivateMultiple
-#endif
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_ActivateDeactivateMultiple) {
- BrowserWindow* tabbed_window = BrowserList::GetLastActive()->window();
-
- // Create 4 panels in the following screen layout:
- // P3 P2 P1 P0
- const int kNumPanels = 4;
- std::string panel_name_base("PanelTest");
- for (int i = 0; i < kNumPanels; ++i) {
- CreatePanelWithBounds(panel_name_base + base::IntToString(i),
- gfx::Rect(0, 0, 100, 100));
- }
- const std::vector<Panel*>& panels = PanelManager::GetInstance()->panels();
-
- std::vector<bool> expected_active_states;
- std::vector<bool> last_active_states;
-
- // The last created panel, P3, should be active.
- expected_active_states = ProduceExpectedActiveStates(3);
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
- EXPECT_FALSE(tabbed_window->IsActive());
-
- // Activating P1 should cause P3 to lose focus.
- panels[1]->Activate();
- last_active_states = expected_active_states;
- expected_active_states = ProduceExpectedActiveStates(1);
- WaitForPanelActiveStates(last_active_states, expected_active_states);
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
-
- // Minimizing inactive panel P2 should not affect other panels' active states.
- panels[2]->SetExpansionState(Panel::MINIMIZED);
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
- EXPECT_FALSE(tabbed_window->IsActive());
-
- // Minimizing active panel P1 should activate last active panel P3.
- panels[1]->SetExpansionState(Panel::MINIMIZED);
- last_active_states = expected_active_states;
- expected_active_states = ProduceExpectedActiveStates(3);
- WaitForPanelActiveStates(last_active_states, expected_active_states);
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
- EXPECT_FALSE(tabbed_window->IsActive());
-
- // Minimizing active panel P3 should activate last active panel P0.
- panels[3]->SetExpansionState(Panel::MINIMIZED);
- last_active_states = expected_active_states;
- expected_active_states = ProduceExpectedActiveStates(0);
- WaitForPanelActiveStates(last_active_states, expected_active_states);
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
- EXPECT_FALSE(tabbed_window->IsActive());
-
- // Minimizing active panel P0 should activate last active tabbed window.
- panels[0]->SetExpansionState(Panel::MINIMIZED);
- last_active_states = expected_active_states;
- expected_active_states = ProduceExpectedActiveStates(-1); // -1 means none.
- WaitForPanelActiveStates(last_active_states, expected_active_states);
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates());
- EXPECT_TRUE(tabbed_window->IsActive());
-}
-
class PanelDownloadTest : public PanelBrowserTest {
public:
PanelDownloadTest() : PanelBrowserTest() { }
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 8b59d40..36cd220 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -134,6 +134,8 @@
'browser/sync/syncable/syncable_mock.cc',
'browser/sync/syncable/syncable_mock.h',
'browser/ui/browser.h',
+ 'browser/ui/panels/base_panel_browser_test.cc',
+ 'browser/ui/panels/base_panel_browser_test.h',
'browser/ui/tab_contents/test_tab_contents_wrapper.cc',
'browser/ui/tab_contents/test_tab_contents_wrapper.h',
'common/pref_store_observer_mock.cc',
@@ -513,6 +515,7 @@
'browser/npapi_interactive_test.cc',
'browser/ui/gtk/bookmarks/bookmark_bar_gtk_interactive_uitest.cc',
'browser/ui/omnibox/omnibox_view_browsertest.cc',
+ 'browser/ui/panels/panel_browsertest.cc',
'browser/ui/views/bookmarks/bookmark_bar_view_test.cc',
'browser/ui/views/button_dropdown_test.cc',
'browser/ui/views/find_bar_host_interactive_uitest.cc',
@@ -2475,10 +2478,7 @@
'browser/ui/gtk/view_id_util_browsertest.cc',
'browser/ui/intents/web_intent_picker_controller_browsertest.cc',
'browser/ui/login/login_prompt_browsertest.cc',
- 'browser/ui/panels/base_panel_browser_test.cc',
- 'browser/ui/panels/base_panel_browser_test.h',
'browser/ui/panels/panel_app_browsertest.cc',
- 'browser/ui/panels/panel_browsertest.cc',
'browser/ui/panels/panel_browser_view_browsertest.cc',
'browser/ui/views/browser_actions_container_browsertest.cc',
'browser/ui/views/dom_view_browsertest.cc',