/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #pragma once #include "mozwrlbase.h" #include #include #include #include #include class MetroWidget; namespace mozilla { namespace widget { namespace winrt { class FrameworkView; class MetroApp : public Microsoft::WRL::RuntimeClass { InspectableClass(L"MetroApp", TrustLevel::BaseTrust) typedef ABI::Windows::UI::Core::CoreDispatcherPriority CoreDispatcherPriority; typedef ABI::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs LaunchActivatedEventArgs; typedef ABI::Windows::ApplicationModel::ISuspendingEventArgs ISuspendingEventArgs; typedef ABI::Windows::ApplicationModel::Core::IFrameworkView IFrameworkView; typedef ABI::Windows::ApplicationModel::Core::ICoreApplication ICoreApplication; public: // IFrameworkViewSource STDMETHODIMP CreateView(IFrameworkView **viewProvider); // ICoreApplication event HRESULT OnSuspending(IInspectable* aSender, ISuspendingEventArgs* aArgs); HRESULT OnResuming(IInspectable* aSender, IInspectable* aArgs); // nsIWinMetroUtils tile related async callbacks HRESULT OnAsyncTileCreated(ABI::Windows::Foundation::IAsyncOperation* aOperation, AsyncStatus aStatus); void Initialize(); void CoreExit(); void ShutdownXPCOM(); // Shared pointers between framework and widget static FrameworkView* GetView(); static void SetBaseWidget(MetroWidget* aPtr); static void PostSuspendResumeProcessNotification(bool aIsSuspend); static void PostSleepWakeNotification(bool aIsSuspend); private: EventRegistrationToken mSuspendEvent; EventRegistrationToken mResumeEvent; }; } } }