Commit 2e00483a authored by Allen Bauer's avatar Allen Bauer Committed by Commit Bot

Added check for existance of the FindBarController before causing it to be...

Added check for existance of the FindBarController before causing it to be created on demand. This should prevent a startup performance regression.

Bug: 783350
Change-Id: Idbf4243e22db833fba8123c6b9e828c8c953ff12
Reviewed-on: https://chromium-review.googlesource.com/764030Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarEvan Stade <estade@chromium.org>
Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517441}
parent 79a6ac50
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/find_bar/find_bar_controller.h"
#include "chrome/test/base/in_process_browser_test.h"
using FindBarControllerTest = InProcessBrowserTest;
// Creating the FindBarController on startup can result in a startup performance
// regression. This test ensures that the FindBarController isn't created until
// truly needed. See https://crbug.com/783350.
IN_PROC_BROWSER_TEST_F(FindBarControllerTest,
NoFindBarControllerOnBrowserCreate) {
// FindBarController should not be created on browser start.
EXPECT_FALSE(browser()->HasFindBarController());
// GetFindBarController should create the FindBarController on demand.
EXPECT_NE(nullptr, browser()->GetFindBarController());
// This should now indicate that there is now a FindBarController instance.
EXPECT_TRUE(browser()->HasFindBarController());
}
......@@ -764,8 +764,13 @@ bool LocationBarView::RefreshSaveCreditCardIconView() {
}
bool LocationBarView::RefreshFindBarIcon() {
if (!find_bar_icon_ || !browser_ || !browser_->window())
// |browser_| may be nullptr since some unit tests pass it in for the
// Browser*. |browser_->window()| may return nullptr because Update() is
// called while BrowserWindow is being constructed.
if (!find_bar_icon_ || !browser_ || !browser_->window() ||
!browser_->HasFindBarController()) {
return false;
}
const bool was_visible = find_bar_icon_->visible();
find_bar_icon_->SetVisible(
browser_->GetFindBarController()->find_bar()->IsFindBarVisible());
......
......@@ -731,6 +731,7 @@ test("browser_tests") {
"../browser/ui/extensions/extension_message_bubble_browsertest.cc",
"../browser/ui/extensions/extension_message_bubble_browsertest.h",
"../browser/ui/extensions/hosted_app_browsertest.cc",
"../browser/ui/find_bar/find_bar_controller_browsertest.cc",
"../browser/ui/find_bar/find_bar_host_browsertest.cc",
"../browser/ui/hung_renderer_browsertest.cc",
"../browser/ui/javascript_dialogs/javascript_dialog_browsertest.cc",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment