[ui] Removed unrelated functionality from frontendLocalState.
Change-Id: Ic1dd36506f67d5d23b04c94c8cce04237e079f24
diff --git a/ui/src/base/dom_utils.ts b/ui/src/base/dom_utils.ts
index d7c7582..5caf9d98 100644
--- a/ui/src/base/dom_utils.ts
+++ b/ui/src/base/dom_utils.ts
@@ -82,3 +82,25 @@
return {x: e.offsetX, y: e.offsetY};
}
+
+function calculateScrollbarWidth() {
+ const outer = document.createElement('div');
+ outer.style.overflowY = 'scroll';
+ const inner = document.createElement('div');
+ outer.appendChild(inner);
+ document.body.appendChild(outer);
+ const width =
+ outer.getBoundingClientRect().width - inner.getBoundingClientRect().width;
+ document.body.removeChild(outer);
+ return width;
+}
+
+let cachedScrollBarWidth: number|undefined = undefined;
+
+// Calculate the space a scrollbar takes up.
+export function getScrollbarWidth() {
+ if (cachedScrollBarWidth === undefined) {
+ cachedScrollBarWidth = calculateScrollbarWidth();
+ }
+ return cachedScrollBarWidth;
+}
diff --git a/ui/src/frontend/frontend_local_state.ts b/ui/src/frontend/frontend_local_state.ts
index 86c30db..a649966 100644
--- a/ui/src/frontend/frontend_local_state.ts
+++ b/ui/src/frontend/frontend_local_state.ts
@@ -26,7 +26,6 @@
VisibleState,
} from '../common/state';
import {raf} from '../core/raf_scheduler';
-import {HttpRpcState} from '../trace_processor/http_rpc_engine';
import {globals} from './globals';
import {ratelimit} from './rate_limiters';
@@ -47,20 +46,6 @@
return current;
}
-// Calculate the space a scrollbar takes up so that we can subtract it from
-// the canvas width.
-function calculateScrollbarWidth() {
- const outer = document.createElement('div');
- outer.style.overflowY = 'scroll';
- const inner = document.createElement('div');
- outer.appendChild(inner);
- document.body.appendChild(outer);
- const width =
- outer.getBoundingClientRect().width - inner.getBoundingClientRect().width;
- document.body.removeChild(outer);
- return width;
-}
-
// Immutable object describing a (high precision) time window, providing methods
// for common mutation operations (pan, zoom), and accessors for common
// properties such as spans and durations in several formats.
@@ -155,17 +140,10 @@
private visibleWindow = new TimeWindow();
private _timeScale = this.visibleWindow.createTimeScale(0, 0);
private _windowSpan = PxSpan.ZERO;
- showPanningHint = false;
- showCookieConsent = false;
- scrollToTrackKey?: string|number;
- httpRpcState: HttpRpcState = {connected: false};
- newVersionAvailable = false;
// This is used to calculate the tracks within a Y range for area selection.
areaY: Range = {};
- private scrollBarWidth?: number;
-
private _visibleState: VisibleState = {
lastUpdate: 0,
start: Time.ZERO,
@@ -179,18 +157,6 @@
// and a |timeScale| have a notion of time range. That should live in one
// place only.
- getScrollbarWidth() {
- if (this.scrollBarWidth === undefined) {
- this.scrollBarWidth = calculateScrollbarWidth();
- }
- return this.scrollBarWidth;
- }
-
- setHttpRpcState(httpRpcState: HttpRpcState) {
- this.httpRpcState = httpRpcState;
- raf.scheduleFullRedraw();
- }
-
zoomVisibleWindow(ratio: number, centerPoint: number) {
this.visibleWindow = this.visibleWindow.zoom(ratio, centerPoint);
this._timeScale = this.visibleWindow.createTimeScale(
@@ -231,7 +197,6 @@
assertTrue(
end >= start,
`Impossible select area: start [${start}] >= end [${end}]`);
- this.showPanningHint = true;
this._selectedArea = {start, end, tracks};
raf.scheduleFullRedraw();
}
diff --git a/ui/src/frontend/globals.ts b/ui/src/frontend/globals.ts
index 7323ba5..435bf99 100644
--- a/ui/src/frontend/globals.ts
+++ b/ui/src/frontend/globals.ts
@@ -47,6 +47,7 @@
import {setPerfHooks} from '../core/perf';
import {raf} from '../core/raf_scheduler';
import {Engine} from '../trace_processor/engine';
+import {HttpRpcState} from '../trace_processor/http_rpc_engine';
import {Analytics, initAnalytics} from './analytics';
import {BottomTabList} from './bottom_tab';
@@ -283,6 +284,11 @@
private _utcOffset = Time.ZERO;
private _openQueryHandler?: OpenQueryHandler;
+ scrollToTrackKey?: string|number;
+ httpRpcState: HttpRpcState = {connected: false};
+ newVersionAvailable = false;
+ showPanningHint = false;
+
// TODO(hjd): Remove once we no longer need to update UUID on redraw.
private _publishRedraw?: () => void = undefined;
diff --git a/ui/src/frontend/panel_container.ts b/ui/src/frontend/panel_container.ts
index 14550e7..5497d8e 100644
--- a/ui/src/frontend/panel_container.ts
+++ b/ui/src/frontend/panel_container.ts
@@ -15,6 +15,7 @@
import m from 'mithril';
import {Trash} from '../base/disposable';
+import {getScrollbarWidth} from '../base/dom_utils';
import {assertExists, assertFalse} from '../base/logging';
import {SimpleResizeObserver} from '../base/resize_observer';
import {
@@ -333,8 +334,7 @@
// On non-MacOS if there is a solid scroll bar it can cover important
// pixels, reduce the size of the canvas so it doesn't overlap with
// the scroll bar.
- this.parentWidth =
- clientRect.width - globals.frontendLocalState.getScrollbarWidth();
+ this.parentWidth = clientRect.width - getScrollbarWidth();
this.parentHeight = clientRect.height;
return this.parentHeight !== oldHeight || this.parentWidth !== oldWidth;
}
diff --git a/ui/src/frontend/publish.ts b/ui/src/frontend/publish.ts
index 8ed0c2d..d23be62 100644
--- a/ui/src/frontend/publish.ts
+++ b/ui/src/frontend/publish.ts
@@ -25,6 +25,7 @@
import {MetricResult} from '../common/metric_data';
import {CurrentSearchResults, SearchSummary} from '../common/search_data';
import {raf} from '../core/raf_scheduler';
+import {HttpRpcState} from '../trace_processor/http_rpc_engine';
import {
CounterDetails,
@@ -81,6 +82,11 @@
globals.publishRedraw();
}
+export function publishHttpRpcState(httpRpcState: HttpRpcState) {
+ globals.httpRpcState = httpRpcState;
+ raf.scheduleFullRedraw();
+}
+
export function publishCounterDetails(click: CounterDetails) {
globals.counterDetails = click;
globals.publishRedraw();
@@ -216,3 +222,8 @@
globals.ftracePanelData = data;
globals.publishRedraw();
}
+
+export function publishShowPanningHint() {
+ globals.showPanningHint = true;
+ globals.publishRedraw();
+}
diff --git a/ui/src/frontend/rpc_http_dialog.ts b/ui/src/frontend/rpc_http_dialog.ts
index c2a64a2..54796b8 100644
--- a/ui/src/frontend/rpc_http_dialog.ts
+++ b/ui/src/frontend/rpc_http_dialog.ts
@@ -22,6 +22,7 @@
import {globals} from './globals';
import {showModal} from './modal';
+import {publishHttpRpcState} from './publish';
const CURRENT_API_VERSION =
TraceProcessorApiVersion.TRACE_PROCESSOR_CURRENT_API_VERSION;
@@ -79,7 +80,7 @@
// having to open a trace).
export async function CheckHttpRpcConnection(): Promise<void> {
const state = await HttpRpcEngine.checkConnection();
- globals.frontendLocalState.setHttpRpcState(state);
+ publishHttpRpcState(state);
if (!state.connected) return;
const tpStatus = assertExists(state.status);
diff --git a/ui/src/frontend/scroll_helper.ts b/ui/src/frontend/scroll_helper.ts
index dccad06..b514b61 100644
--- a/ui/src/frontend/scroll_helper.ts
+++ b/ui/src/frontend/scroll_helper.ts
@@ -135,7 +135,7 @@
// group and scroll to the track or just scroll to the track group.
if (openGroup) {
// After the track exists in the dom, it will be scrolled to.
- globals.frontendLocalState.scrollToTrackKey = trackKey;
+ globals.scrollToTrackKey = trackKey;
globals.dispatch(Actions.toggleTrackGroupCollapsed({trackGroupId}));
return;
} else {
diff --git a/ui/src/frontend/service_worker_controller.ts b/ui/src/frontend/service_worker_controller.ts
index a6082fe..de5323e 100644
--- a/ui/src/frontend/service_worker_controller.ts
+++ b/ui/src/frontend/service_worker_controller.ts
@@ -88,7 +88,7 @@
// Ctrl+Shift+R). In these cases, we are already at the last
// version.
if (sw !== this._initialWorker && this._initialWorker) {
- globals.frontendLocalState.newVersionAvailable = true;
+ globals.newVersionAvailable = true;
}
}
}
diff --git a/ui/src/frontend/sidebar.ts b/ui/src/frontend/sidebar.ts
index c0c23bf..6d3e79b 100644
--- a/ui/src/frontend/sidebar.ts
+++ b/ui/src/frontend/sidebar.ts
@@ -631,7 +631,7 @@
// RPC server is shut down after we load the UI and cached httpRpcState)
// this will eventually become consistent once the engine is created.
if (mode === undefined) {
- if (globals.frontendLocalState.httpRpcState.connected &&
+ if (globals.httpRpcState.connected &&
globals.state.newEngineMode === 'USE_HTTP_RPC_IF_AVAILABLE') {
mode = 'HTTP_RPC';
} else {
diff --git a/ui/src/frontend/topbar.ts b/ui/src/frontend/topbar.ts
index 70aed74..4bea985 100644
--- a/ui/src/frontend/topbar.ts
+++ b/ui/src/frontend/topbar.ts
@@ -45,7 +45,7 @@
m('button.notification-btn.preferred',
{
onclick: () => {
- globals.frontendLocalState.newVersionAvailable = false;
+ globals.newVersionAvailable = false;
raf.scheduleFullRedraw();
},
},
@@ -61,7 +61,7 @@
// does not persist for iFrames. The host is responsible for communicating
// to users that they can press '?' for help.
if (globals.embeddedMode || dismissed === 'true' ||
- !globals.frontendLocalState.showPanningHint) {
+ !globals.showPanningHint) {
return;
}
return m(
@@ -72,7 +72,7 @@
m('button.hint-dismiss-button',
{
onclick: () => {
- globals.frontendLocalState.showPanningHint = false;
+ globals.showPanningHint = false;
localStorage.setItem(DISMISSED_PANNING_HINT_KEY, 'true');
raf.scheduleFullRedraw();
},
@@ -113,9 +113,7 @@
return m(
'.topbar',
{class: globals.state.sidebarVisible ? '' : 'hide-sidebar'},
- globals.frontendLocalState.newVersionAvailable ?
- m(NewVersionNotification) :
- omnibox,
+ globals.newVersionAvailable ? m(NewVersionNotification) : omnibox,
m(Progress),
m(HelpPanningNotification),
m(TraceErrorIcon));
diff --git a/ui/src/frontend/track_panel.ts b/ui/src/frontend/track_panel.ts
index c877ad1..56318d1 100644
--- a/ui/src/frontend/track_panel.ts
+++ b/ui/src/frontend/track_panel.ts
@@ -297,9 +297,9 @@
}
oncreate({attrs}: m.CVnode<TrackComponentAttrs>) {
- if (globals.frontendLocalState.scrollToTrackKey === attrs.trackState.key) {
+ if (globals.scrollToTrackKey === attrs.trackState.key) {
verticalScrollToTrack(attrs.trackState.key);
- globals.frontendLocalState.scrollToTrackKey = undefined;
+ globals.scrollToTrackKey = undefined;
}
}
}
diff --git a/ui/src/frontend/viewer_page.ts b/ui/src/frontend/viewer_page.ts
index 8aeabde..57aa0a3 100644
--- a/ui/src/frontend/viewer_page.ts
+++ b/ui/src/frontend/viewer_page.ts
@@ -14,6 +14,7 @@
import m from 'mithril';
+import {getScrollbarWidth} from '../base/dom_utils';
import {clamp} from '../base/math_utils';
import {Time} from '../base/time';
import {Actions} from '../common/actions';
@@ -28,6 +29,7 @@
import {createPage} from './pages';
import {PanAndZoomHandler} from './pan_and_zoom_handler';
import {AnyAttrsVnode, PanelContainer} from './panel_container';
+import {publishShowPanningHint} from './publish';
import {TickmarkPanel} from './tickmark_panel';
import {TimeAxisPanel} from './time_axis_panel';
import {TimeSelectionPanel} from './time_selection_panel';
@@ -96,9 +98,7 @@
const updateDimensions = () => {
const rect = vnode.dom.getBoundingClientRect();
frontendLocalState.updateLocalLimits(
- 0,
- rect.width - TRACK_SHELL_WIDTH -
- frontendLocalState.getScrollbarWidth());
+ 0, rect.width - TRACK_SHELL_WIDTH - getScrollbarWidth());
};
updateDimensions();
@@ -193,6 +193,7 @@
);
frontendLocalState.areaY.start = dragStartY;
frontendLocalState.areaY.end = currentY;
+ publishShowPanningHint();
}
raf.scheduleRedraw();
},