diff options
author | Paul Rouget <me@paulrouget.com> | 2020-07-16 06:47:48 +0200 |
---|---|---|
committer | Paul Rouget <me@paulrouget.com> | 2020-07-16 06:47:48 +0200 |
commit | 2ac0ccb4d2a847f6c7b54ed01e8f094f5550eda0 (patch) | |
tree | da53a47dd1b15fbf74ef3b64a995a94cf587642b | |
parent | ef4f5e526487f57d2c29d4e7779c79e1dfa7cb85 (diff) | |
download | servo-2ac0ccb4d2a847f6c7b54ed01e8f094f5550eda0.tar.gz servo-2ac0ccb4d2a847f6c7b54ed01e8f094f5550eda0.zip |
Make it possible to run fxr:// url in non-kiosk mode
-rw-r--r-- | support/hololens/ServoApp/App.cpp | 5 | ||||
-rw-r--r-- | support/hololens/ServoApp/BrowserPage.cpp | 18 | ||||
-rw-r--r-- | support/hololens/ServoApp/BrowserPage.h | 10 | ||||
-rw-r--r-- | support/hololens/ServoApp/Package.appxmanifest | 6 |
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> |