Commit 54613402 authored by Abhijeet Kandalkar's avatar Abhijeet Kandalkar Committed by Chromium LUCI CQ

[lacros] Frameheaders should be drawn only if custom-frame is enabled

When toplevel window uses a native frame, the server-side decoration is
set and when toplevel window uses a custom frame, the client-side
decoration is set. UseCustomFrame() decides on which frame (native or
custom) to be used for a window.

Devtool chooses a native frame but also draws frame header
(client-side decoration) causing a duplicate decoration for a devtool
window.

BrowserFrame::ShouldDrawFrameHeader always returns `true` assuming
that custom frame is used but instead, this function should check frame
type before drawing a frame header.

Bug: 1155551
Change-Id: I903a194ecf875f51d5ade726b57651c57bd7b028
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2573711Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Cr-Commit-Position: refs/heads/master@{#836680}
parent 6d0e7d79
......@@ -2766,6 +2766,8 @@ static_library("ui") {
sources += [
"views/chrome_browser_main_extra_parts_views_lacros.cc",
"views/chrome_browser_main_extra_parts_views_lacros.h",
"views/frame/browser_frame_lacros.cc",
"views/frame/browser_frame_lacros.h",
"views/frame/immersive_mode_controller_chromeos.cc",
"views/frame/immersive_mode_controller_chromeos.h",
"window_sizer/window_sizer_chromeos.cc",
......
......@@ -4,6 +4,7 @@ sky@chromium.org
per-file *_ash*=jamescook@chromium.org
per-file *_chromeos*=jamescook@chromium.org
per-file *_lacros*=jamescook@chromium.org
per-file *x11*=thomasanderson@chromium.org
per-file desktop_linux_browser_frame_view*=thomasanderson@chromium.org
per-file immersive_mode_controller*=pkotwicz@chromium.org
......
// Copyright 2020 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/views/frame/browser_frame_lacros.h"
BrowserFrameLacros::BrowserFrameLacros(BrowserView* browser_view)
: BrowserFrame(browser_view) {}
// In Lacros, windows that use 'custom frame' should draw their own
// frame header (ie client-side window decoration). This is the case of
// the lacros/chrome browser windows, for instance.
// On the other hand, windows like devtools do not use a "custom frame"
// and hence defer its frame header drawing to the host WindowManager
// (ie server-side window decoration).
bool BrowserFrameLacros::ShouldDrawFrameHeader() const {
return UseCustomFrame();
}
// Copyright 2020 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.
#ifndef CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_LACROS_H_
#define CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_LACROS_H_
#include "chrome/browser/ui/views/frame/browser_frame.h"
class BrowserView;
// BrowserFrameLacros provides the frame for Lacros browser windows.
class BrowserFrameLacros : public BrowserFrame {
public:
explicit BrowserFrameLacros(BrowserView* browser_view);
// BrowserFrame
bool ShouldDrawFrameHeader() const override;
protected:
~BrowserFrameLacros() override = default;
};
#endif // CHROME_BROWSER_UI_VIEWS_FRAME_BROWSER_FRAME_LACROS_H_
......@@ -9,6 +9,9 @@
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/ui/views/frame/custom_tab_browser_frame.h"
#endif
#if BUILDFLAG(IS_CHROMEOS_LACROS)
#include "chrome/browser/ui/views/frame/browser_frame_lacros.h"
#endif
#include "chrome/browser/ui/views/frame/native_browser_frame_factory.h"
#include "chrome/grit/chromium_strings.h"
#include "components/safe_browsing/core/password_protection/metrics_util.h"
......@@ -32,6 +35,9 @@ BrowserWindow* BrowserWindow::CreateBrowserWindow(
#if BUILDFLAG(IS_CHROMEOS_ASH)
if (view->browser()->is_type_custom_tab())
browser_frame = new CustomTabBrowserFrame(view);
#endif
#if BUILDFLAG(IS_CHROMEOS_LACROS)
browser_frame = new BrowserFrameLacros(view);
#endif
if (!browser_frame)
browser_frame = new BrowserFrame(view);
......
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