aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Rouget <me@paulrouget.com>2020-07-16 06:47:48 +0200
committerPaul Rouget <me@paulrouget.com>2020-07-16 06:47:48 +0200
commit2ac0ccb4d2a847f6c7b54ed01e8f094f5550eda0 (patch)
treeda53a47dd1b15fbf74ef3b64a995a94cf587642b
parentef4f5e526487f57d2c29d4e7779c79e1dfa7cb85 (diff)
downloadservo-2ac0ccb4d2a847f6c7b54ed01e8f094f5550eda0.tar.gz
servo-2ac0ccb4d2a847f6c7b54ed01e8f094f5550eda0.zip
Make it possible to run fxr:// url in non-kiosk mode
-rw-r--r--support/hololens/ServoApp/App.cpp5
-rw-r--r--support/hololens/ServoApp/BrowserPage.cpp18
-rw-r--r--support/hololens/ServoApp/BrowserPage.h10
-rw-r--r--support/hololens/ServoApp/Package.appxmanifest6
4 files changed, 24 insertions, 15 deletions
diff --git a/support/hololens/ServoApp/App.cpp b/support/hololens/ServoApp/App.cpp
index 22b6f4586f4..721324ae120 100644
--- a/support/hololens/ServoApp/App.cpp
+++ b/support/hololens/ServoApp/App.cpp
@@ -95,10 +95,7 @@ void App::OnActivated(IActivatedEventArgs const &args) {
rootFrame = content.try_as<Frame>();
}
auto page = rootFrame.Content().try_as<BrowserPage>();
- page->LoadServoURI(protocolActivatedEventArgs.Uri());
- // If Servo was opened as a result of clicking on a fxr:// URL,
- // we activate transient mode.
- page->SetTransientMode(!isRunning);
+ page->LoadFXRURI(protocolActivatedEventArgs.Uri());
}
}
diff --git a/support/hololens/ServoApp/BrowserPage.cpp b/support/hololens/ServoApp/BrowserPage.cpp
index 6f6bb5a98b5..04b0b3ae85c 100644
--- a/support/hololens/ServoApp/BrowserPage.cpp
+++ b/support/hololens/ServoApp/BrowserPage.cpp
@@ -99,16 +99,20 @@ void BrowserPage::OnURLKeyboardAccelerator(
urlTextbox().Focus(FocusState::Programmatic);
}
-void BrowserPage::LoadServoURI(Uri uri) {
+void BrowserPage::LoadFXRURI(Uri uri) {
auto scheme = uri.SchemeName();
-
- if (scheme != SERVO_SCHEME) {
+ std::wstring raw{uri.RawUri()};
+ if (scheme == FXR_SCHEME) {
+ auto raw2 = raw.substr(FXR_SCHEME_SLASH_SLASH.size());
+ servoControl().LoadURIOrSearch(raw2);
+ SetTransientMode(false);
+ } else if (scheme == FXRMIN_SCHEME) {
+ auto raw2 = raw.substr(FXRMIN_SCHEME_SLASH_SLASH.size());
+ servoControl().LoadURIOrSearch(raw2);
+ SetTransientMode(true);
+ } else {
log(L"Unexpected URL: ", uri.RawUri().c_str());
- return;
}
- std::wstring raw{uri.RawUri()};
- auto raw2 = raw.substr(SERVO_SCHEME_SLASH_SLASH.size());
- servoControl().LoadURIOrSearch(raw2);
}
void BrowserPage::SetTransientMode(bool transient) {
diff --git a/support/hololens/ServoApp/BrowserPage.h b/support/hololens/ServoApp/BrowserPage.h
index bd575e55739..2f800a516ac 100644
--- a/support/hololens/ServoApp/BrowserPage.h
+++ b/support/hololens/ServoApp/BrowserPage.h
@@ -17,8 +17,10 @@ using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::UI::Xaml;
using namespace winrt::Windows::UI::Xaml::Media;
-static const hstring SERVO_SCHEME = L"fxr";
-static const hstring SERVO_SCHEME_SLASH_SLASH = L"fxr://";
+static const hstring FXR_SCHEME = L"fxr";
+static const hstring FXR_SCHEME_SLASH_SLASH = L"fxr://";
+static const hstring FXRMIN_SCHEME = L"fxrmin";
+static const hstring FXRMIN_SCHEME_SLASH_SLASH = L"fxrmin://";
struct BrowserPage : BrowserPageT<BrowserPage>, public servo::DevtoolsDelegate {
public:
@@ -37,8 +39,7 @@ public:
OnURLKeyboardAccelerator(IInspectable const &,
Input::KeyboardAcceleratorInvokedEventArgs const &);
void Shutdown();
- void LoadServoURI(Uri uri);
- void SetTransientMode(bool);
+ void LoadFXRURI(Uri uri);
void SetArgs(hstring);
void OnMediaControlsPlayClicked(IInspectable const &,
RoutedEventArgs const &);
@@ -52,6 +53,7 @@ public:
Collections::IObservableVector<IInspectable> ConsoleLogs() { return mLogs; };
private:
+ void SetTransientMode(bool);
void UpdatePref(ServoApp::Pref, Controls::Control);
void BindServoEvents();
void BuildPrefList();
diff --git a/support/hololens/ServoApp/Package.appxmanifest b/support/hololens/ServoApp/Package.appxmanifest
index cea93282edf..c934a92c447 100644
--- a/support/hololens/ServoApp/Package.appxmanifest
+++ b/support/hololens/ServoApp/Package.appxmanifest
@@ -38,6 +38,12 @@
<uap:DisplayName>Firefox Reality URL</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
+ <uap:Extension Category="windows.protocol">
+ <uap:Protocol Name="fxrmin">
+ <uap:Logo>Assets\StoreLogo.png</uap:Logo>
+ <uap:DisplayName>Firefox Reality URL (Kiosk mode)</uap:DisplayName>
+ </uap:Protocol>
+ </uap:Extension>
</Extensions>
</Application>
</Applications>