From a707432b00f5a5e54dfaffd1f76125988650ec4d Mon Sep 17 00:00:00 2001 From: Paul Rouget Date: Wed, 25 Mar 2020 13:19:50 +0100 Subject: [PATCH] Add a devtools button --- .../hololens/ServoApp/Assets/UI/devtools.png | Bin 0 -> 2372 bytes support/hololens/ServoApp/BrowserPage.cpp | 25 ++++++++++++++++++ support/hololens/ServoApp/BrowserPage.h | 4 +++ support/hololens/ServoApp/BrowserPage.xaml | 7 ++++- support/hololens/ServoApp/ServoApp.vcxproj | 1 + .../ServoApp/ServoApp.vcxproj.filters | 3 +++ .../ServoApp/ServoControl/ServoControl.cpp | 18 +++---------- .../ServoApp/ServoControl/ServoControl.h | 11 ++++++++ .../ServoApp/ServoControl/ServoControl.idl | 8 ++++++ 9 files changed, 62 insertions(+), 15 deletions(-) create mode 100644 support/hololens/ServoApp/Assets/UI/devtools.png diff --git a/support/hololens/ServoApp/Assets/UI/devtools.png b/support/hololens/ServoApp/Assets/UI/devtools.png new file mode 100644 index 0000000000000000000000000000000000000000..e26f69b7887e3f95427b8d7cc3102d25c2e99ae9 GIT binary patch literal 2372 zcmai$do&a7AICRi(_AK2awp_gO6rT;V$9aXW#oR>RjdtTlx3>P`nhDNg!pE}SSV3$ z%e8b-7|JE)P7PUeTluZ;Kfl{KzwddT=kxiT^M0P!=X0LtoacO!ogE#dpo&lc03d}% z*sYgO5Ad0k(dRg2oaW03g1OwzF{~=6)OTD_1_F(z(1ycAvZL zy{%?n;LA4s^S$1;&&Ro;j5_Xkx=bh;0h8sCMmcLOH#|Cu>?NMYA$A7`^K4~#Er+Nn zdPXuz$wu3~3+SOsVxMPUHs$Vwew$kk-fOA6`pMYXyxXGtE6Mux7WXT6>r*Ug=3ZW2 z9uS?O^{?4e(19^22+M_)i)MrF0B(`BBY#bMjhQa(9|J7Gah2_=KIe`idk>DOutY1t zbs}|{aVz8Em9RmOK$R#?gx|#$xt5AakS~%eSpI=~B2J2|0!)C%eRe%?dn1aI$K6~j z6lbHytj3Um7F-;CJq2Xa`~H|qjWqC!*r-f655p2;)#^rH!a#zWa*7AVe3Yj0($9K{ z4vPqqcyi65;VDZb)cy_erI;Qk-jSMpEt?uZoI+(Dk2Z|cHCHRSU++pmxa-9NQp2^ z%%NXQ6pK(7fwBw-IHr>l>mzi{AJf<9{_}r9a$y!iG}bgzyIJFoh!yg$n0_3+898XP zz@PpiJ69f%PRbbAm*%clwt%vJEtORLRGgT>lWTMw=@$%XH1-Xktv~viWzw~yR(OQg zLiZ~)9<4Ey5MCQ<;E#Dk>mXmHky>CYUCZIrrbYC~&9Y79IUT`)$I3&dLz{XHi6Ju< z$PIMBvuAd3u;5Q!TWK%9yo`Aj*W_uMX(HH`E)2(>t~xhE-#5RKeJUEURD>Q>A1h}IqUnq5nZ8Zl7 zAj<}Q0x0rnRYb0l{|_Kj9Y3`z-J}>BnEgj9@UXiRNOoYQRB1LyVJWBY$D&u18f<;I5WO0SEMdZi=V#NRollxXJ_AIL#n0oDP!dF zo5nslO*a~=?EJ(1S9Gr7-#dpT8UEyxPJi9~b8^Og-!gaNtiJ`m~ z42K7sQY=(G~-(Z&jm zpIrN_4ecM&z<{Ipp7AQljt`8{Qz0ipU+x-dnEHH)+}*qNG}A+55k#_ERzb|?BM6d2 zuLpS1_0lF4Ylv0Oi)7#l%<#}@C^4I}^aDy&>Wd08iHF#y8>~dFMu(LQ0llEUdBR=8 z0jp%D`ZrIgGV3a;wEW@p%M8Q4X{~`7oL8xzYmf$;4#Lkm`gzb1dLNdBJY z2My9sdRb>!)(ci-1Jvbw5J{MEd!#k!I^tV>uEl=)Bjq(!!)IL_Nyv?4W9SbZf%r$X z$8FO0f7sFmURB^pec4+6#J+(e;XB&3$rz`ipbDp~FYqq*NYMjStEV|5Omyl(BIl3u zr8>Qp?3GEv6p9^a%3)7Khinvb)E94=Mm^`dPRxJnN-}V0IAW7h@1Unf(Zt3V3W}Yv zk`BW!YJUfUx7%w~f!Ud(id|F#hv5xKWi_wg*4`=R(VQ~84OZ*-mgcpA5 zrcbwE(b65FkXrXci|bCv9>3|6#({i)|J_(fl!r}4XaCLyyz=}v+}Di5CRx;$^$LSN z3D#;t`;^Iz2wHC!9=@j0y1X)yN6ai+iSRZ{jo_P;PerZT%3NMHnM7y|;NJ4xsRdEv zoG6&9Z%!xUvNYN7ddRakWOH(>0?)j@nEVBx)^h8GR0{J($TR#HnEG>*wrz7%YFNY< zQy4=ydZ*QB;0EiQE*2ucnV;O55a4>9^A5zz&3)rLD2h{SPtkY1|7Tt2D3g+ZNz(Hq zerA9GkKy>8Y^-v08NMdiMs>ASEvlpQBvPVs?gHn+@3wyIJ~$RkH6Jo8sWbk1Z#6I{ zc!#-dmF)@O)#AFDWF*S5{#0keMUJ$Gem4#Uq#&RNlrah8=^~Oz@IccdK&yt>E@?g1 ze@OiyrbYSxNB>(XVYmfP7#=@1rSRYAzdiat1+lUwp`Xte!pC}*1 zbuW$V=M?&uK8_dO)a>y!%Ov - + + + + diff --git a/support/hololens/ServoApp/ServoApp.vcxproj b/support/hololens/ServoApp/ServoApp.vcxproj index 6d729b3661b..a39b23f4737 100644 --- a/support/hololens/ServoApp/ServoApp.vcxproj +++ b/support/hololens/ServoApp/ServoApp.vcxproj @@ -903,6 +903,7 @@ + diff --git a/support/hololens/ServoApp/ServoApp.vcxproj.filters b/support/hololens/ServoApp/ServoApp.vcxproj.filters index 0e78db725be..caff136e123 100644 --- a/support/hololens/ServoApp/ServoApp.vcxproj.filters +++ b/support/hololens/ServoApp/ServoApp.vcxproj.filters @@ -154,6 +154,9 @@ Assets\UI + + Assets\UI + diff --git a/support/hololens/ServoApp/ServoControl/ServoControl.cpp b/support/hololens/ServoApp/ServoControl/ServoControl.cpp index 6f21ab41dc1..cf3393f976e 100644 --- a/support/hololens/ServoApp/ServoControl/ServoControl.cpp +++ b/support/hololens/ServoApp/ServoControl/ServoControl.cpp @@ -11,8 +11,6 @@ using namespace winrt::Windows::UI::Core; using namespace winrt::Windows::Foundation; using namespace winrt::Windows::System; using namespace winrt::Windows::Devices::Input; -using namespace winrt::Windows::UI::Notifications; -using namespace winrt::Windows::Data::Xml::Dom; using namespace concurrency; using namespace winrt::servo; @@ -560,18 +558,10 @@ std::optional ServoControl::OnServoPromptInput(winrt::hstring message, void ServoControl::OnServoDevtoolsStarted(bool success, const unsigned int port) { - auto toastTemplate = ToastTemplateType::ToastText01; - auto toastXml = ToastNotificationManager::GetTemplateContent(toastTemplate); - auto toastTextElements = toastXml.GetElementsByTagName(L"text"); - std::wstring message; - if (success) { - message = L"DevTools server has started on port " + std::to_wstring(port); - } else { - message = L"Error: could not start DevTools"; - } - toastTextElements.Item(0).InnerText(message); - auto toast = ToastNotification(toastXml); - ToastNotificationManager::CreateToastNotifier().Show(toast); + RunOnUIThread([=] { + auto status = success ? DevtoolsStatus::Running : DevtoolsStatus::Failed; + mOnDevtoolsStatusChangedEvent(status, port); + }); } template void ServoControl::RunOnUIThread(Callable cb) { diff --git a/support/hololens/ServoApp/ServoControl/ServoControl.h b/support/hololens/ServoApp/ServoControl/ServoControl.h index 16b34b77349..685f038311b 100644 --- a/support/hololens/ServoApp/ServoControl/ServoControl.h +++ b/support/hololens/ServoApp/ServoControl/ServoControl.h @@ -44,6 +44,14 @@ struct ServoControl : ServoControlT, public servo::ServoDelegate { mOnHistoryChangedEvent.remove(token); } + winrt::event_token + OnDevtoolsStatusChanged(DevtoolsStatusChangedDelegate const &handler) { + return mOnDevtoolsStatusChangedEvent.add(handler); + }; + void OnDevtoolsStatusChanged(winrt::event_token const &token) noexcept { + mOnDevtoolsStatusChangedEvent.remove(token); + } + winrt::event_token OnLoadStarted(EventDelegate const &handler) { return mOnLoadStartedEvent.add(handler); }; @@ -116,10 +124,13 @@ struct ServoControl : ServoControlT, public servo::ServoDelegate { winrt::hstring, bool); virtual void OnServoDevtoolsStarted(bool success, const unsigned int port); + DevtoolsStatus GetDevtoolsStatus(); + private: winrt::event> mOnURLChangedEvent; winrt::event> mOnTitleChangedEvent; winrt::event mOnHistoryChangedEvent; + winrt::event mOnDevtoolsStatusChangedEvent; winrt::event mOnLoadStartedEvent; winrt::event mOnLoadEndedEvent; winrt::event mOnCaptureGesturesStartedEvent; diff --git a/support/hololens/ServoApp/ServoControl/ServoControl.idl b/support/hololens/ServoApp/ServoControl/ServoControl.idl index 8e1c60df574..5e5da81bc29 100644 --- a/support/hololens/ServoApp/ServoControl/ServoControl.idl +++ b/support/hololens/ServoApp/ServoControl/ServoControl.idl @@ -3,6 +3,13 @@ namespace ServoApp { delegate void EventDelegate(); delegate void HistoryChangedDelegate(Boolean back, Boolean forward); delegate void MediaSessionMetadataDelegate(String title, String artist, String album); + delegate void DevtoolsStatusChangedDelegate(DevtoolsStatus status, UInt32 port); + + enum DevtoolsStatus { + Running = 0, + Stopped, + Failed, + }; runtimeclass ServoControl : Windows.UI.Xaml.Controls.Control { ServoControl(); @@ -20,6 +27,7 @@ namespace ServoApp { event EventDelegate OnLoadEnded; event EventDelegate OnCaptureGesturesStarted; event EventDelegate OnCaptureGesturesEnded; + event DevtoolsStatusChangedDelegate OnDevtoolsStatusChanged; event HistoryChangedDelegate OnHistoryChanged; event Windows.Foundation.EventHandler OnTitleChanged; event Windows.Foundation.EventHandler OnURLChanged;