3 changed files with 428 additions and 2 deletions
-
227src/core/hle/service/am/applets/web_browser.cpp
-
25src/core/hle/service/am/applets/web_browser.h
-
178src/core/hle/service/am/applets/web_types.h
@ -0,0 +1,178 @@ |
|||||
|
// Copyright 2020 yuzu Emulator Project |
||||
|
// Licensed under GPLv2 or any later version |
||||
|
// Refer to the license.txt file included. |
||||
|
|
||||
|
#pragma once |
||||
|
|
||||
|
#include <array> |
||||
|
#include <unordered_map> |
||||
|
#include <vector> |
||||
|
|
||||
|
#include "common/common_funcs.h" |
||||
|
#include "common/common_types.h" |
||||
|
#include "common/swap.h" |
||||
|
|
||||
|
namespace Service::AM::Applets { |
||||
|
|
||||
|
enum class WebAppletVersion : u32_le { |
||||
|
Version0 = 0x0, // Only used by WifiWebAuthApplet |
||||
|
Version131072 = 0x20000, // 1.0.0 - 2.3.0 |
||||
|
Version196608 = 0x30000, // 3.0.0 - 4.1.0 |
||||
|
Version327680 = 0x50000, // 5.0.0 - 5.1.0 |
||||
|
Version393216 = 0x60000, // 6.0.0 - 7.0.1 |
||||
|
Version524288 = 0x80000, // 8.0.0+ |
||||
|
}; |
||||
|
|
||||
|
enum class ShimKind : u32 { |
||||
|
Shop = 1, |
||||
|
Login = 2, |
||||
|
Offline = 3, |
||||
|
Share = 4, |
||||
|
Web = 5, |
||||
|
Wifi = 6, |
||||
|
Lobby = 7, |
||||
|
}; |
||||
|
|
||||
|
enum class WebExitReason : u32 { |
||||
|
EndButtonPressed = 0, |
||||
|
BackButtonPressed = 1, |
||||
|
ExitRequested = 2, |
||||
|
CallbackURL = 3, |
||||
|
WindowClosed = 4, |
||||
|
ErrorDialog = 7, |
||||
|
}; |
||||
|
|
||||
|
enum class WebArgInputTLVType : u16 { |
||||
|
InitialURL = 0x1, |
||||
|
CallbackURL = 0x3, |
||||
|
CallbackableURL = 0x4, |
||||
|
ApplicationID = 0x5, |
||||
|
DocumentPath = 0x6, |
||||
|
DocumentKind = 0x7, |
||||
|
SystemDataID = 0x8, |
||||
|
ShareStartPage = 0x9, |
||||
|
Whitelist = 0xA, |
||||
|
News = 0xB, |
||||
|
UserID = 0xE, |
||||
|
AlbumEntry0 = 0xF, |
||||
|
ScreenShotEnabled = 0x10, |
||||
|
EcClientCertEnabled = 0x11, |
||||
|
PlayReportEnabled = 0x13, |
||||
|
BootDisplayKind = 0x17, |
||||
|
BackgroundKind = 0x18, |
||||
|
FooterEnabled = 0x19, |
||||
|
PointerEnabled = 0x1A, |
||||
|
LeftStickMode = 0x1B, |
||||
|
KeyRepeatFrame1 = 0x1C, |
||||
|
KeyRepeatFrame2 = 0x1D, |
||||
|
BootAsMediaPlayerInverted = 0x1E, |
||||
|
DisplayURLKind = 0x1F, |
||||
|
BootAsMediaPlayer = 0x21, |
||||
|
ShopJumpEnabled = 0x22, |
||||
|
MediaAutoPlayEnabled = 0x23, |
||||
|
LobbyParameter = 0x24, |
||||
|
ApplicationAlbumEntry = 0x26, |
||||
|
JsExtensionEnabled = 0x27, |
||||
|
AdditionalCommentText = 0x28, |
||||
|
TouchEnabledOnContents = 0x29, |
||||
|
UserAgentAdditionalString = 0x2A, |
||||
|
AdditionalMediaData0 = 0x2B, |
||||
|
MediaPlayerAutoCloseEnabled = 0x2C, |
||||
|
PageCacheEnabled = 0x2D, |
||||
|
WebAudioEnabled = 0x2E, |
||||
|
YouTubeVideoWhitelist = 0x31, |
||||
|
FooterFixedKind = 0x32, |
||||
|
PageFadeEnabled = 0x33, |
||||
|
MediaCreatorApplicationRatingAge = 0x34, |
||||
|
BootLoadingIconEnabled = 0x35, |
||||
|
PageScrollIndicatorEnabled = 0x36, |
||||
|
MediaPlayerSpeedControlEnabled = 0x37, |
||||
|
AlbumEntry1 = 0x38, |
||||
|
AlbumEntry2 = 0x39, |
||||
|
AlbumEntry3 = 0x3A, |
||||
|
AdditionalMediaData1 = 0x3B, |
||||
|
AdditionalMediaData2 = 0x3C, |
||||
|
AdditionalMediaData3 = 0x3D, |
||||
|
BootFooterButton = 0x3E, |
||||
|
OverrideWebAudioVolume = 0x3F, |
||||
|
OverrideMediaAudioVolume = 0x40, |
||||
|
BootMode = 0x41, |
||||
|
WebSessionEnabled = 0x42, |
||||
|
MediaPlayerOfflineEnabled = 0x43, |
||||
|
}; |
||||
|
|
||||
|
enum class WebArgOutputTLVType : u16 { |
||||
|
ShareExitReason = 0x1, |
||||
|
LastURL = 0x2, |
||||
|
LastURLSize = 0x3, |
||||
|
SharePostResult = 0x4, |
||||
|
PostServiceName = 0x5, |
||||
|
PostServiceNameSize = 0x6, |
||||
|
PostID = 0x7, |
||||
|
PostIDSize = 0x8, |
||||
|
MediaPlayerAutoClosedByCompletion = 0x9, |
||||
|
}; |
||||
|
|
||||
|
enum class DocumentKind : u32 { |
||||
|
OfflineHtmlPage = 1, |
||||
|
ApplicationLegalInformation = 2, |
||||
|
SystemDataPage = 3, |
||||
|
}; |
||||
|
|
||||
|
enum class ShareStartPage : u32 { |
||||
|
Default, |
||||
|
Settings, |
||||
|
}; |
||||
|
|
||||
|
enum class BootDisplayKind : u32 { |
||||
|
Default, |
||||
|
White, |
||||
|
Black, |
||||
|
}; |
||||
|
|
||||
|
enum class BackgroundKind : u32 { |
||||
|
Default, |
||||
|
}; |
||||
|
|
||||
|
enum class LeftStickMode : u32 { |
||||
|
Pointer, |
||||
|
Cursor, |
||||
|
}; |
||||
|
|
||||
|
enum class WebSessionBootMode : u32 { |
||||
|
AllForeground, |
||||
|
AllForegroundInitiallyHidden, |
||||
|
}; |
||||
|
|
||||
|
struct WebArgHeader { |
||||
|
u16 total_tlv_entries{}; |
||||
|
INSERT_PADDING_BYTES(2); |
||||
|
ShimKind shim_kind{}; |
||||
|
}; |
||||
|
static_assert(sizeof(WebArgHeader) == 0x8, "WebArgHeader has incorrect size."); |
||||
|
|
||||
|
struct WebArgInputTLV { |
||||
|
WebArgInputTLVType input_tlv_type{}; |
||||
|
u16 arg_data_size{}; |
||||
|
INSERT_PADDING_WORDS(1); |
||||
|
}; |
||||
|
static_assert(sizeof(WebArgInputTLV) == 0x8, "WebArgInputTLV has incorrect size."); |
||||
|
|
||||
|
struct WebArgOutputTLV { |
||||
|
WebArgOutputTLVType output_tlv_type{}; |
||||
|
u16 arg_data_size{}; |
||||
|
INSERT_PADDING_WORDS(1); |
||||
|
}; |
||||
|
static_assert(sizeof(WebArgOutputTLV) == 0x8, "WebArgOutputTLV has incorrect size."); |
||||
|
|
||||
|
struct WebCommonReturnValue { |
||||
|
WebExitReason exit_reason{}; |
||||
|
INSERT_PADDING_WORDS(1); |
||||
|
std::array<char, 0x1000> last_url{}; |
||||
|
u64 last_url_size{}; |
||||
|
}; |
||||
|
static_assert(sizeof(WebCommonReturnValue) == 0x1010, "WebCommonReturnValue has incorrect size."); |
||||
|
|
||||
|
using WebArgInputTLVMap = std::unordered_map<WebArgInputTLVType, std::vector<u8>>; |
||||
|
|
||||
|
} // namespace Service::AM::Applets |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue