mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Auto merge of #27466 - paulrouget:erg, r=jdm
Do not instanciate random ServoControls That's embarrassing. We would create a new instance of Servo every time we would call `ServoControl()` (instead of `servoControl()`)… so very often.
This commit is contained in:
commit
346bf9c031
2 changed files with 34 additions and 36 deletions
|
@ -30,14 +30,14 @@ BrowserPage::BrowserPage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::BindServoEvents() {
|
void BrowserPage::BindServoEvents() {
|
||||||
servoControl().OnURLChanged(
|
servoView().OnURLChanged(
|
||||||
[=](const auto &, hstring url) { urlTextbox().Text(url); });
|
[=](const auto &, hstring url) { urlTextbox().Text(url); });
|
||||||
servoControl().OnTitleChanged([=](const auto &, hstring title) {});
|
servoView().OnTitleChanged([=](const auto &, hstring title) {});
|
||||||
servoControl().OnHistoryChanged([=](bool back, bool forward) {
|
servoView().OnHistoryChanged([=](bool back, bool forward) {
|
||||||
backButton().IsEnabled(back);
|
backButton().IsEnabled(back);
|
||||||
forwardButton().IsEnabled(forward);
|
forwardButton().IsEnabled(forward);
|
||||||
});
|
});
|
||||||
servoControl().OnLoadStarted([=] {
|
servoView().OnLoadStarted([=] {
|
||||||
urlbarLoadingIndicator().IsActive(true);
|
urlbarLoadingIndicator().IsActive(true);
|
||||||
transientLoadingIndicator().IsIndeterminate(true);
|
transientLoadingIndicator().IsIndeterminate(true);
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ void BrowserPage::BindServoEvents() {
|
||||||
stopButton().Visibility(Visibility::Visible);
|
stopButton().Visibility(Visibility::Visible);
|
||||||
devtoolsButton().IsEnabled(true);
|
devtoolsButton().IsEnabled(true);
|
||||||
});
|
});
|
||||||
servoControl().OnLoadEnded([=] {
|
servoView().OnLoadEnded([=] {
|
||||||
urlbarLoadingIndicator().IsActive(false);
|
urlbarLoadingIndicator().IsActive(false);
|
||||||
transientLoadingIndicator().IsIndeterminate(false);
|
transientLoadingIndicator().IsIndeterminate(false);
|
||||||
reloadButton().IsEnabled(true);
|
reloadButton().IsEnabled(true);
|
||||||
|
@ -55,17 +55,16 @@ void BrowserPage::BindServoEvents() {
|
||||||
stopButton().IsEnabled(false);
|
stopButton().IsEnabled(false);
|
||||||
stopButton().Visibility(Visibility::Collapsed);
|
stopButton().Visibility(Visibility::Collapsed);
|
||||||
});
|
});
|
||||||
servoControl().OnCaptureGesturesStarted([=] {
|
servoView().OnCaptureGesturesStarted([=] {
|
||||||
servoControl().Focus(FocusState::Programmatic);
|
servoView().Focus(FocusState::Programmatic);
|
||||||
navigationBar().IsHitTestVisible(false);
|
navigationBar().IsHitTestVisible(false);
|
||||||
});
|
});
|
||||||
servoControl().OnCaptureGesturesEnded(
|
servoView().OnCaptureGesturesEnded(
|
||||||
[=] { navigationBar().IsHitTestVisible(true); });
|
[=] { navigationBar().IsHitTestVisible(true); });
|
||||||
urlTextbox().GotFocus(std::bind(&BrowserPage::OnURLFocused, this, _1));
|
urlTextbox().GotFocus(std::bind(&BrowserPage::OnURLFocused, this, _1));
|
||||||
servoControl().OnMediaSessionMetadata(
|
servoView().OnMediaSessionMetadata(
|
||||||
[=](hstring title, hstring artist, hstring album) {});
|
[=](hstring title, hstring artist, hstring album) {});
|
||||||
servoControl().OnMediaSessionPlaybackStateChange([=](const auto &,
|
servoView().OnMediaSessionPlaybackStateChange([=](const auto &, int state) {
|
||||||
int state) {
|
|
||||||
if (state == Servo::MediaSessionPlaybackState::None) {
|
if (state == Servo::MediaSessionPlaybackState::None) {
|
||||||
mediaControls().Visibility(Visibility::Collapsed);
|
mediaControls().Visibility(Visibility::Collapsed);
|
||||||
return;
|
return;
|
||||||
|
@ -78,7 +77,7 @@ void BrowserPage::BindServoEvents() {
|
||||||
? Visibility::Collapsed
|
? Visibility::Collapsed
|
||||||
: Visibility::Visible);
|
: Visibility::Visible);
|
||||||
});
|
});
|
||||||
servoControl().OnDevtoolsStatusChanged(
|
servoView().OnDevtoolsStatusChanged(
|
||||||
[=](DevtoolsStatus status, unsigned int port, hstring token) {
|
[=](DevtoolsStatus status, unsigned int port, hstring token) {
|
||||||
mDevtoolsStatus = status;
|
mDevtoolsStatus = status;
|
||||||
mDevtoolsPort = port;
|
mDevtoolsPort = port;
|
||||||
|
@ -86,7 +85,7 @@ void BrowserPage::BindServoEvents() {
|
||||||
});
|
});
|
||||||
Window::Current().VisibilityChanged(
|
Window::Current().VisibilityChanged(
|
||||||
[=](const auto &, const VisibilityChangedEventArgs &args) {
|
[=](const auto &, const VisibilityChangedEventArgs &args) {
|
||||||
servoControl().ChangeVisibility(args.Visible());
|
servoView().ChangeVisibility(args.Visible());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,11 +103,11 @@ void BrowserPage::LoadFXRURI(Uri uri) {
|
||||||
std::wstring raw{uri.RawUri()};
|
std::wstring raw{uri.RawUri()};
|
||||||
if (scheme == FXR_SCHEME) {
|
if (scheme == FXR_SCHEME) {
|
||||||
auto raw2 = raw.substr(FXR_SCHEME_SLASH_SLASH.size());
|
auto raw2 = raw.substr(FXR_SCHEME_SLASH_SLASH.size());
|
||||||
servoControl().LoadURIOrSearch(raw2);
|
servoView().LoadURIOrSearch(raw2);
|
||||||
SetTransientMode(false);
|
SetTransientMode(false);
|
||||||
} else if (scheme == FXRMIN_SCHEME) {
|
} else if (scheme == FXRMIN_SCHEME) {
|
||||||
auto raw2 = raw.substr(FXRMIN_SCHEME_SLASH_SLASH.size());
|
auto raw2 = raw.substr(FXRMIN_SCHEME_SLASH_SLASH.size());
|
||||||
servoControl().LoadURIOrSearch(raw2);
|
servoView().LoadURIOrSearch(raw2);
|
||||||
SetTransientMode(true);
|
SetTransientMode(true);
|
||||||
} else {
|
} else {
|
||||||
log(L"Unexpected URL: ", uri.RawUri().c_str());
|
log(L"Unexpected URL: ", uri.RawUri().c_str());
|
||||||
|
@ -116,42 +115,42 @@ void BrowserPage::LoadFXRURI(Uri uri) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::SetTransientMode(bool transient) {
|
void BrowserPage::SetTransientMode(bool transient) {
|
||||||
servoControl().SetTransientMode(transient);
|
servoView().SetTransientMode(transient);
|
||||||
navigationBar().Visibility(transient ? Visibility::Collapsed
|
navigationBar().Visibility(transient ? Visibility::Collapsed
|
||||||
: Visibility::Visible);
|
: Visibility::Visible);
|
||||||
transientLoadingIndicator().Visibility(transient ? Visibility::Visible
|
transientLoadingIndicator().Visibility(transient ? Visibility::Visible
|
||||||
: Visibility::Collapsed);
|
: Visibility::Collapsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::SetArgs(hstring args) { servoControl().SetArgs(args); }
|
void BrowserPage::SetArgs(hstring args) { servoView().SetArgs(args); }
|
||||||
|
|
||||||
void BrowserPage::Shutdown() { servoControl().Shutdown(); }
|
void BrowserPage::Shutdown() { servoView().Shutdown(); }
|
||||||
|
|
||||||
/**** USER INTERACTIONS WITH UI ****/
|
/**** USER INTERACTIONS WITH UI ****/
|
||||||
|
|
||||||
void BrowserPage::OnBackButtonClicked(IInspectable const &,
|
void BrowserPage::OnBackButtonClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().GoBack();
|
servoView().GoBack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::OnForwardButtonClicked(IInspectable const &,
|
void BrowserPage::OnForwardButtonClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().GoForward();
|
servoView().GoForward();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::OnReloadButtonClicked(IInspectable const &,
|
void BrowserPage::OnReloadButtonClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().Reload();
|
servoView().Reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::OnStopButtonClicked(IInspectable const &,
|
void BrowserPage::OnStopButtonClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().Stop();
|
servoView().Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::OnHomeButtonClicked(IInspectable const &,
|
void BrowserPage::OnHomeButtonClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().GoHome();
|
servoView().GoHome();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Given a pref, update its associated UI control.
|
// Given a pref, update its associated UI control.
|
||||||
|
@ -188,7 +187,7 @@ void BrowserPage::BuildPrefList() {
|
||||||
auto resourceLoader = ResourceLoader::GetForCurrentView();
|
auto resourceLoader = ResourceLoader::GetForCurrentView();
|
||||||
auto resetStr =
|
auto resetStr =
|
||||||
resourceLoader.GetString(L"devtoolsPreferenceResetButton/Content");
|
resourceLoader.GetString(L"devtoolsPreferenceResetButton/Content");
|
||||||
for (auto pref : ServoControl().Preferences()) {
|
for (auto pref : servoView().Preferences()) {
|
||||||
auto value = pref.Value();
|
auto value = pref.Value();
|
||||||
auto type = value.as<IPropertyValue>().Type();
|
auto type = value.as<IPropertyValue>().Type();
|
||||||
std::optional<Controls::Control> ctrl;
|
std::optional<Controls::Control> ctrl;
|
||||||
|
@ -196,8 +195,8 @@ void BrowserPage::BuildPrefList() {
|
||||||
auto checkbox = Controls::CheckBox();
|
auto checkbox = Controls::CheckBox();
|
||||||
checkbox.IsChecked(unbox_value<bool>(value));
|
checkbox.IsChecked(unbox_value<bool>(value));
|
||||||
checkbox.Click([=](const auto &, auto const &) {
|
checkbox.Click([=](const auto &, auto const &) {
|
||||||
auto upref = ServoControl().SetBoolPref(
|
auto upref = servoView().SetBoolPref(pref.Key(),
|
||||||
pref.Key(), checkbox.IsChecked().GetBoolean());
|
checkbox.IsChecked().GetBoolean());
|
||||||
UpdatePref(upref, checkbox);
|
UpdatePref(upref, checkbox);
|
||||||
});
|
});
|
||||||
ctrl = checkbox;
|
ctrl = checkbox;
|
||||||
|
@ -206,7 +205,7 @@ void BrowserPage::BuildPrefList() {
|
||||||
textbox.Text(unbox_value<hstring>(value));
|
textbox.Text(unbox_value<hstring>(value));
|
||||||
textbox.KeyUp([=](const auto &, Input::KeyRoutedEventArgs const &e) {
|
textbox.KeyUp([=](const auto &, Input::KeyRoutedEventArgs const &e) {
|
||||||
if (e.Key() == Windows::System::VirtualKey::Enter) {
|
if (e.Key() == Windows::System::VirtualKey::Enter) {
|
||||||
auto upref = ServoControl().SetStringPref(pref.Key(), textbox.Text());
|
auto upref = servoView().SetStringPref(pref.Key(), textbox.Text());
|
||||||
UpdatePref(upref, textbox);
|
UpdatePref(upref, textbox);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -220,7 +219,7 @@ void BrowserPage::BuildPrefList() {
|
||||||
Inline);
|
Inline);
|
||||||
nbox.ValueChanged([=](const auto &, const auto &) {
|
nbox.ValueChanged([=](const auto &, const auto &) {
|
||||||
int val = (int)nbox.Value();
|
int val = (int)nbox.Value();
|
||||||
auto upref = ServoControl().SetIntPref(pref.Key(), val);
|
auto upref = servoView().SetIntPref(pref.Key(), val);
|
||||||
UpdatePref(upref, nbox);
|
UpdatePref(upref, nbox);
|
||||||
});
|
});
|
||||||
ctrl = nbox;
|
ctrl = nbox;
|
||||||
|
@ -228,8 +227,7 @@ void BrowserPage::BuildPrefList() {
|
||||||
auto nbox = Microsoft::UI::Xaml::Controls::NumberBox();
|
auto nbox = Microsoft::UI::Xaml::Controls::NumberBox();
|
||||||
nbox.Value(unbox_value<double>(value));
|
nbox.Value(unbox_value<double>(value));
|
||||||
nbox.ValueChanged([=](const auto &, const auto &) {
|
nbox.ValueChanged([=](const auto &, const auto &) {
|
||||||
auto upref =
|
auto upref = servoView().SetIntPref(pref.Key(), (int64_t)nbox.Value());
|
||||||
ServoControl().SetIntPref(pref.Key(), (int64_t)nbox.Value());
|
|
||||||
UpdatePref(upref, (Controls::Control &)nbox);
|
UpdatePref(upref, (Controls::Control &)nbox);
|
||||||
});
|
});
|
||||||
ctrl = nbox;
|
ctrl = nbox;
|
||||||
|
@ -254,7 +252,7 @@ void BrowserPage::BuildPrefList() {
|
||||||
reset.Content(winrt::box_value(resetStr));
|
reset.Content(winrt::box_value(resetStr));
|
||||||
reset.IsEnabled(!pref.IsDefault());
|
reset.IsEnabled(!pref.IsDefault());
|
||||||
reset.Click([=](const auto &, auto const &) {
|
reset.Click([=](const auto &, auto const &) {
|
||||||
auto upref = ServoControl().ResetPref(pref.Key());
|
auto upref = servoView().ResetPref(pref.Key());
|
||||||
UpdatePref(upref, *ctrl);
|
UpdatePref(upref, *ctrl);
|
||||||
});
|
});
|
||||||
stack.Children().Append(reset);
|
stack.Children().Append(reset);
|
||||||
|
@ -351,21 +349,21 @@ void BrowserPage::OnJSInputEdited(IInspectable const &,
|
||||||
void BrowserPage::OnURLEdited(IInspectable const &,
|
void BrowserPage::OnURLEdited(IInspectable const &,
|
||||||
Input::KeyRoutedEventArgs const &e) {
|
Input::KeyRoutedEventArgs const &e) {
|
||||||
if (e.Key() == Windows::System::VirtualKey::Enter) {
|
if (e.Key() == Windows::System::VirtualKey::Enter) {
|
||||||
servoControl().Focus(FocusState::Programmatic);
|
servoView().Focus(FocusState::Programmatic);
|
||||||
auto input = urlTextbox().Text();
|
auto input = urlTextbox().Text();
|
||||||
auto uri = servoControl().LoadURIOrSearch(input);
|
auto uri = servoView().LoadURIOrSearch(input);
|
||||||
urlTextbox().Text(uri);
|
urlTextbox().Text(uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BrowserPage::OnMediaControlsPlayClicked(IInspectable const &,
|
void BrowserPage::OnMediaControlsPlayClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().SendMediaSessionAction(
|
servoView().SendMediaSessionAction(
|
||||||
static_cast<int32_t>(Servo::MediaSessionActionType::Play));
|
static_cast<int32_t>(Servo::MediaSessionActionType::Play));
|
||||||
}
|
}
|
||||||
void BrowserPage::OnMediaControlsPauseClicked(IInspectable const &,
|
void BrowserPage::OnMediaControlsPauseClicked(IInspectable const &,
|
||||||
RoutedEventArgs const &) {
|
RoutedEventArgs const &) {
|
||||||
servoControl().SendMediaSessionAction(
|
servoView().SendMediaSessionAction(
|
||||||
static_cast<int32_t>(Servo::MediaSessionActionType::Pause));
|
static_cast<int32_t>(Servo::MediaSessionActionType::Pause));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,7 @@
|
||||||
<ProgressRing x:Name="urlbarLoadingIndicator" Margin="10,0"/>
|
<ProgressRing x:Name="urlbarLoadingIndicator" Margin="10,0"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<local:ServoControl Grid.Row="1" TabIndex="0" x:Name="servoControl"/>
|
<local:ServoControl Grid.Row="1" TabIndex="0" x:Name="servoView"/>
|
||||||
<muxc:TabView x:Name="toolbox" IsAddTabButtonVisible="False" Grid.Row="2" Visibility="Collapsed" Height="300">
|
<muxc:TabView x:Name="toolbox" IsAddTabButtonVisible="False" Grid.Row="2" Visibility="Collapsed" Height="300">
|
||||||
<muxc:TabView.TabStripFooter>
|
<muxc:TabView.TabStripFooter>
|
||||||
<Grid>
|
<Grid>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue