Add SetMinimumWidgetSize to Glic API
This will be used to enforce the minimum size on the glic widget for manual resizing. Bug: 400522982 Change-Id: Ibc90a13f7cb55f479491837047d286b64632e105 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6352391 Reviewed-by: Alex Gough <ajgo@chromium.org> Commit-Queue: Sana Akbani <sanaakbani@google.com> Reviewed-by: Dan Harrington <harringtond@chromium.org> Cr-Commit-Position: refs/heads/main@{#1432455}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
1328599438
commit
b2a84ed9d9
chrome/browser
glic
glic.mojomglic_page_handler.ccglic_widget.ccglic_widget.hglic_window_controller.ccglic_window_controller.h
resources
glic
tools/metrics/histograms/metadata/glic
@@ -344,6 +344,10 @@ interface WebClientHandler {
|
|||||||
// like <h1> should have style 'user-select: none'.
|
// like <h1> should have style 'user-select: none'.
|
||||||
SetPanelDraggableAreas(array<gfx.mojom.Rect> draggable_areas) => ();
|
SetPanelDraggableAreas(array<gfx.mojom.Rect> draggable_areas) => ();
|
||||||
|
|
||||||
|
// Sets the minimum possible size that a user can manually resize to for the
|
||||||
|
// widget hosting the WebUI.
|
||||||
|
SetMinimumPanelSize(gfx.mojom.Size size);
|
||||||
|
|
||||||
// Set the state of the Microphone permission pref:
|
// Set the state of the Microphone permission pref:
|
||||||
// prefs::kGlicMicrophoneEnabled. Returns when the browser has stored the new
|
// prefs::kGlicMicrophoneEnabled. Returns when the browser has stored the new
|
||||||
// pref value.
|
// pref value.
|
||||||
|
@@ -338,6 +338,10 @@ class GlicWebClientHandler : public glic::mojom::WebClientHandler,
|
|||||||
std::move(callback).Run();
|
std::move(callback).Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetMinimumPanelSize(const gfx::Size& size) override {
|
||||||
|
glic_service_->window_controller().SetMinimumWidgetSize(size);
|
||||||
|
}
|
||||||
|
|
||||||
void SetMicrophonePermissionState(
|
void SetMicrophonePermissionState(
|
||||||
bool enabled,
|
bool enabled,
|
||||||
SetMicrophonePermissionStateCallback callback) override {
|
SetMicrophonePermissionStateCallback callback) override {
|
||||||
|
@@ -89,4 +89,16 @@ display::Display GlicWidget::GetDisplay() {
|
|||||||
return display::Screen::GetScreen()->GetPrimaryDisplay();
|
return display::Screen::GetScreen()->GetPrimaryDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GlicWidget::SetMinimumSize(const gfx::Size& size) {
|
||||||
|
minimum_widget_size_ = size;
|
||||||
|
// TODO(sanaakbani): Set this to a more reasonable minimum fallback size.
|
||||||
|
minimum_widget_size_.SetToMax(gfx::Size(1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
gfx::Size GlicWidget::GetMinimumSize() const {
|
||||||
|
return base::FeatureList::IsEnabled(features::kGlicUserResize)
|
||||||
|
? minimum_widget_size_
|
||||||
|
: gfx::Size();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace glic
|
} // namespace glic
|
||||||
|
@@ -32,8 +32,17 @@ class GlicWidget : public views::Widget {
|
|||||||
// Get the most-overlapping display.
|
// Get the most-overlapping display.
|
||||||
display::Display GetDisplay();
|
display::Display GetDisplay();
|
||||||
|
|
||||||
|
// Sets the minimum size for the widget. Used for manual resize.
|
||||||
|
void SetMinimumSize(const gfx::Size& size);
|
||||||
|
|
||||||
|
// views:Widget:
|
||||||
|
// Gets the minimum size a user can resize to for the widget.
|
||||||
|
gfx::Size GetMinimumSize() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit GlicWidget(InitParams params);
|
explicit GlicWidget(InitParams params);
|
||||||
|
|
||||||
|
gfx::Size minimum_widget_size_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace glic
|
} // namespace glic
|
||||||
|
@@ -923,6 +923,14 @@ void GlicWindowController::SetDraggableAreas(
|
|||||||
glic_view->SetDraggableAreas(draggable_areas);
|
glic_view->SetDraggableAreas(draggable_areas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GlicWindowController::SetMinimumWidgetSize(const gfx::Size& size) {
|
||||||
|
if (!GetGlicWidget()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
glic_widget_->SetMinimumSize(size);
|
||||||
|
}
|
||||||
|
|
||||||
void GlicWindowController::Close() {
|
void GlicWindowController::Close() {
|
||||||
GlicWindowController::CloseInternal(std::nullopt);
|
GlicWindowController::CloseInternal(std::nullopt);
|
||||||
}
|
}
|
||||||
|
@@ -113,6 +113,10 @@ class GlicWindowController : public views::WidgetObserver,
|
|||||||
// Sets the areas of the view from which it should be draggable.
|
// Sets the areas of the view from which it should be draggable.
|
||||||
void SetDraggableAreas(const std::vector<gfx::Rect>& draggable_areas);
|
void SetDraggableAreas(const std::vector<gfx::Rect>& draggable_areas);
|
||||||
|
|
||||||
|
// Sets the minimum widget size that the widget will allow the user to resize
|
||||||
|
// to.
|
||||||
|
void SetMinimumWidgetSize(const gfx::Size& size);
|
||||||
|
|
||||||
// Close the panel but keep the glic WebContents alive in the background.
|
// Close the panel but keep the glic WebContents alive in the background.
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
|
@@ -159,6 +159,16 @@ export declare interface GlicBrowserHost {
|
|||||||
*/
|
*/
|
||||||
setWindowDraggableAreas(areas: DraggableArea[]): Promise<void>;
|
setWindowDraggableAreas(areas: DraggableArea[]): Promise<void>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the minimum possible size a user can resize to for the glic window.
|
||||||
|
*
|
||||||
|
* All provided values will go through sanity checks (e.g. checking min
|
||||||
|
* values for height and width) and may be adjusted. The web client should
|
||||||
|
* expect that the provided values may not be applied verbatim. Note: This
|
||||||
|
* will not affect the current glic window size.
|
||||||
|
*/
|
||||||
|
setMinimumWidgetSize?(width: number, height: number): Promise<void>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetches page context for the currently focused tab, optionally including
|
* Fetches page context for the currently focused tab, optionally including
|
||||||
* more expensive-to-generate data.
|
* more expensive-to-generate data.
|
||||||
|
@@ -313,6 +313,11 @@ class GlicBrowserHostImpl implements GlicBrowserHost {
|
|||||||
'glicBrowserSetWindowDraggableAreas', {areas});
|
'glicBrowserSetWindowDraggableAreas', {areas});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setMinimumWidgetSize(width: number, height: number): Promise<void> {
|
||||||
|
return this.sender.requestWithResponse(
|
||||||
|
'glicBrowserSetMinimumWidgetSize', {size: {width, height}});
|
||||||
|
}
|
||||||
|
|
||||||
getPanelState(): ObservableValueImpl<PanelState> {
|
getPanelState(): ObservableValueImpl<PanelState> {
|
||||||
return this.panelState;
|
return this.panelState;
|
||||||
}
|
}
|
||||||
|
@@ -345,6 +345,12 @@ class HostMessageHandler implements HostMessageHandlerInterface {
|
|||||||
return this.handler.setPanelDraggableAreas(request.areas);
|
return this.handler.setPanelDraggableAreas(request.areas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glicBrowserSetMinimumWidgetSize(request: {
|
||||||
|
size: {width: number, height: number},
|
||||||
|
}) {
|
||||||
|
return this.handler.setMinimumPanelSize(request.size);
|
||||||
|
}
|
||||||
|
|
||||||
glicBrowserSetMicrophonePermissionState(request: {enabled: boolean}) {
|
glicBrowserSetMicrophonePermissionState(request: {enabled: boolean}) {
|
||||||
return this.handler.setMicrophonePermissionState(request.enabled);
|
return this.handler.setMicrophonePermissionState(request.enabled);
|
||||||
}
|
}
|
||||||
|
@@ -97,6 +97,14 @@ export declare interface HostRequestTypes {
|
|||||||
areas: DraggableArea[],
|
areas: DraggableArea[],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
glicBrowserSetMinimumWidgetSize: {
|
||||||
|
request: {
|
||||||
|
size: {
|
||||||
|
width: number,
|
||||||
|
height: number,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
glicBrowserSetMicrophonePermissionState: {
|
glicBrowserSetMicrophonePermissionState: {
|
||||||
request: {
|
request: {
|
||||||
enabled: boolean,
|
enabled: boolean,
|
||||||
@@ -238,6 +246,7 @@ type HostRequestEnumNamesType = {
|
|||||||
CaptureScreenshot: 0,
|
CaptureScreenshot: 0,
|
||||||
ResizeWindow: 0,
|
ResizeWindow: 0,
|
||||||
SetWindowDraggableAreas: 0,
|
SetWindowDraggableAreas: 0,
|
||||||
|
SetMinimumWidgetSize: 0,
|
||||||
SetMicrophonePermissionState: 0,
|
SetMicrophonePermissionState: 0,
|
||||||
SetLocationPermissionState: 0,
|
SetLocationPermissionState: 0,
|
||||||
SetTabContextPermissionState: 0,
|
SetTabContextPermissionState: 0,
|
||||||
|
@@ -75,6 +75,7 @@ chromium-metrics-reviews@google.com.
|
|||||||
<variant name="SetContextAccessIndicator"/>
|
<variant name="SetContextAccessIndicator"/>
|
||||||
<variant name="SetLocationPermissionState"/>
|
<variant name="SetLocationPermissionState"/>
|
||||||
<variant name="SetMicrophonePermissionState"/>
|
<variant name="SetMicrophonePermissionState"/>
|
||||||
|
<variant name="SetMinimumWidgetSize"/>
|
||||||
<variant name="SetSyntheticExperimentState"/>
|
<variant name="SetSyntheticExperimentState"/>
|
||||||
<variant name="SetTabContextPermissionState"/>
|
<variant name="SetTabContextPermissionState"/>
|
||||||
<variant name="SetWindowDraggableAreas"/>
|
<variant name="SetWindowDraggableAreas"/>
|
||||||
|
Reference in New Issue
Block a user