+
Games
-
+
Updates
-
-
-
-
-
-
Installing...
-
-
Preparing...
-
-
-
-
-
-
-
-
diff --git a/src/main/assets/scripts/layout.lua b/src/main/assets/scripts/layout.lua
new file mode 100644
index 0000000..bedfde6
--- /dev/null
+++ b/src/main/assets/scripts/layout.lua
@@ -0,0 +1,103 @@
+-- Layout System for Virtual Smartphone
+-- Provides reusable UI component helpers
+-- Requires navigation.lua to be loaded first
+
+-- Icon paths (relative to assets/)
+local ICON_PATH = "../../icons/"
+
+-- Default icons
+local icons = {
+ back = ICON_PATH .. "back.tga",
+ home = ICON_PATH .. "home.tga",
+ menu = ICON_PATH .. "menu.tga",
+ search = ICON_PATH .. "search.tga",
+ more = ICON_PATH .. "more.tga",
+ close = ICON_PATH .. "close.tga",
+ wifi = ICON_PATH .. "wifi.tga",
+ signal = ICON_PATH .. "signal.tga",
+ battery = ICON_PATH .. "battery.tga"
+}
+
+-- Get current time formatted as HH:MM
+local function getCurrentTime()
+ -- In sandbox, we might not have os.date, use a default
+ if os and os.date then
+ return os.date("%H:%M")
+ end
+ return "12:30"
+end
+
+-- Update status bar time
+function updateStatusTime(doc)
+ local timeEl = doc:GetElementById("status-time")
+ if timeEl then
+ timeEl.inner_rml = getCurrentTime()
+ end
+end
+
+-- Initialize status bar with current time
+-- Call from document onload
+function initStatusBar(doc)
+ updateStatusTime(doc)
+
+ -- Set up timer to update time every minute if timers are available
+ if setTimeout then
+ local function updateLoop()
+ updateStatusTime(doc)
+ setTimeout(updateLoop, 60000)
+ end
+ setTimeout(updateLoop, 60000)
+ end
+end
+
+-- Initialize app bar back button
+-- Call from document onload
+function initAppBar(doc)
+ local backBtn = doc:GetElementById("app-bar-back")
+ if backBtn then
+ -- Back button is handled via onclick in RML
+ -- This is for any additional setup
+ end
+end
+
+-- Initialize system navigation bar
+-- Call from document onload
+function initSystemNav(doc)
+ -- Navigation buttons are handled via onclick in RML
+ -- This is for any additional setup
+end
+
+-- Full layout initialization
+-- Call from document onload: initLayout(document)
+function initLayout(doc)
+ initStatusBar(doc)
+ initAppBar(doc)
+ initSystemNav(doc)
+ print("Layout initialized")
+end
+
+-- Handle back button press (for app bar or system nav)
+function onBackPressed()
+ if canGoBack and canGoBack() then
+ goBack()
+ else
+ -- If at root, go home
+ if goHome then
+ goHome()
+ end
+ end
+end
+
+-- Handle home button press
+function onHomePressed()
+ if goHome then
+ goHome()
+ end
+end
+
+-- Handle recent apps button press (placeholder)
+function onRecentPressed()
+ print("Recent apps pressed (not implemented)")
+end
+
+print("Layout system loaded")
diff --git a/src/main/assets/ui/layout.rcss b/src/main/assets/ui/layout.rcss
new file mode 100644
index 0000000..edf6ad9
--- /dev/null
+++ b/src/main/assets/ui/layout.rcss
@@ -0,0 +1,270 @@
+/* ==============================================
+ Layout Components: Reusable App Layout Structure
+ System status bar, app bar, navigation bar
+ ============================================== */
+
+/* ============== System Status Bar ============== */
+/* Top bar showing time, signal, wifi, battery */
+
+.system-status-bar {
+ height: 36px;
+ padding: 0 16px;
+ background-color: transparent;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 16px;
+ color: #FFFFFF;
+ z-index: 1000;
+}
+
+.system-status-bar.bg-surface {
+ background-color: #1E1E1E;
+}
+
+.system-status-time {
+ font-weight: 500;
+ font-size: 16px;
+}
+
+.system-status-icons {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+}
+
+.system-status-icons img {
+ width: 24px;
+ height: 24px;
+ pointer-events: none;
+}
+
+/* ============== App Bar ============== */
+/* Title bar with back button and optional actions */
+
+.app-bar {
+ height: 72px;
+ padding: 0 8px;
+ background-color: #1E1E1E;
+ display: flex;
+ align-items: center;
+ z-index: 900;
+}
+
+.app-bar.transparent {
+ background-color: transparent;
+}
+
+.app-bar.primary {
+ background-color: #121212;
+}
+
+.app-bar-back {
+ width: 56px;
+ height: 56px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ border-radius: 28px;
+}
+
+.app-bar-back:hover {
+ background-color: rgba(255, 255, 255, 0.1);
+}
+
+.app-bar-back:active {
+ background-color: rgba(255, 255, 255, 0.2);
+}
+
+.app-bar-back img {
+ width: 32px;
+ height: 32px;
+ pointer-events: none;
+}
+
+.app-bar-title {
+ flex: 1;
+ font-size: 24px;
+ font-weight: 500;
+ color: #FFFFFF;
+ padding-left: 8px;
+}
+
+.app-bar-actions {
+ display: flex;
+ gap: 4px;
+}
+
+.app-bar-action {
+ width: 56px;
+ height: 56px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ border-radius: 28px;
+}
+
+.app-bar-action:hover {
+ background-color: rgba(255, 255, 255, 0.1);
+}
+
+.app-bar-action:active {
+ background-color: rgba(255, 255, 255, 0.2);
+}
+
+.app-bar-action img {
+ width: 28px;
+ height: 28px;
+ pointer-events: none;
+}
+
+/* ============== System Navigation Bar ============== */
+/* Bottom bar with back, home, and recent buttons */
+
+.system-nav-bar {
+ height: 56px;
+ background-color: #0A0A0A;
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ z-index: 1000;
+}
+
+.system-nav-bar.transparent {
+ background-color: rgba(10, 10, 10, 0.9);
+}
+
+.system-nav-btn {
+ width: 72px;
+ height: 48px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ border-radius: 24px;
+}
+
+.system-nav-btn:hover {
+ background-color: rgba(255, 255, 255, 0.1);
+}
+
+.system-nav-btn:active {
+ background-color: rgba(255, 255, 255, 0.2);
+}
+
+.system-nav-btn img {
+ width: 28px;
+ height: 28px;
+ pointer-events: none;
+ opacity: 0.8;
+}
+
+/* Home button - pill shape */
+.system-nav-home {
+ width: 96px;
+ height: 8px;
+ background-color: #FFFFFF;
+ border-radius: 4px;
+ cursor: pointer;
+ opacity: 0.6;
+}
+
+.system-nav-home:hover {
+ opacity: 0.8;
+}
+
+.system-nav-home:active {
+ opacity: 1.0;
+}
+
+/* ============== Screen Layout ============== */
+/* Standard app screen structure */
+
+.app-screen {
+ width: 100%;
+ height: 100%;
+ background-color: #121212;
+ display: flex;
+ flex-direction: column;
+}
+
+.app-content {
+ flex: 1;
+ overflow: auto;
+ display: flex;
+ flex-direction: column;
+}
+
+/* Content padding for nav bar */
+.app-content.with-nav {
+ padding-bottom: 56px;
+}
+
+/* Content padding for dock */
+.app-content.with-dock {
+ padding-bottom: 100px;
+}
+
+/* ============== Combined Header ============== */
+/* Status bar + App bar combined */
+
+.app-header {
+ display: flex;
+ flex-direction: column;
+ background-color: #1E1E1E;
+}
+
+.app-header.transparent {
+ background-color: transparent;
+}
+
+.app-header .system-status-bar {
+ background-color: transparent;
+}
+
+/* ============== Notification Badge ============== */
+
+.notification-badge {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ min-width: 20px;
+ height: 20px;
+ background-color: #CF6679;
+ border-radius: 10px;
+ font-size: 12px;
+ font-weight: 600;
+ color: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0 6px;
+}
+
+/* ============== Recording Indicator ============== */
+/* Shown when camera/mic is active */
+
+.recording-indicator {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ width: 12px;
+ height: 12px;
+ background-color: #F44336;
+ border-radius: 6px;
+ animation: recording-pulse 1.5s ease-in-out infinite;
+}
+
+@keyframes recording-pulse {
+ 0%, 100% { opacity: 1.0; }
+ 50% { opacity: 0.4; }
+}
+
+/* ============== Divider ============== */
+
+.header-divider {
+ height: 1px;
+ background-color: #333333;
+}
diff --git a/tests/README.md b/tests/README.md
new file mode 100644
index 0000000..2380475
--- /dev/null
+++ b/tests/README.md
@@ -0,0 +1,55 @@
+# UI Test Files
+
+This directory contains JSON action playback tests for the Mosis Designer.
+
+## Running Tests
+
+```bash
+# From designer/build directory
+./Release/mosis-designer.exe --simulator --test-apps base-apps \
+ --playback ../../tests/test_settings.json \
+ --screenshot-after ../../tests/screenshots/result.png
+```
+
+## Test Files
+
+| File | Description |
+|------|-------------|
+| `test_home_only.json` | Wait and capture home screen |
+| `test_settings.json` | Navigate to Settings app |
+| `test_browser.json` | Navigate to Browser (dock) |
+| `test_messages.json` | Navigate to Messages app |
+| `test_messages_v2.json` | Messages with corrected coordinates |
+| `test_music.json` | Navigate to Music app |
+| `test_store.json` | Navigate to Mosis Store |
+| `test_navigation.json` | Multi-app navigation sequence |
+
+## Screenshots
+
+Captured screenshots are in `screenshots/`:
+- `screenshot_home_fresh.png` - Home screen
+- `screenshot_browser.png` - Browser app
+- `screenshot_messages_fixed.png` - Messages app
+- `screenshot_music_fixed.png` - Music app
+- `screenshot_settings_fixed.png` - Settings app
+- `screenshot_store_fixed.png` - Mosis Store
+
+## Hierarchy Dumps
+
+- `hierarchy_fresh.json` - Full UI element tree with bounds
+- `hierarchy_dump.json` - Previous hierarchy capture
+
+Use hierarchy dumps to find element coordinates for new tests.
+
+## Prerequisites
+
+Before running tests with `base-apps`, ensure shared assets exist at `MosisService/` root:
+
+```bash
+# Copy shared assets (run from MosisService/)
+cp -r src/main/assets/ui .
+cp -r src/main/assets/scripts .
+cp -r src/main/assets/icons .
+```
+
+See `docs/TESTING-FRAMEWORK.md` for full documentation.
diff --git a/tests/hierarchy_dump.json b/tests/hierarchy_dump.json
new file mode 100644
index 0000000..c80ff18
--- /dev/null
+++ b/tests/hierarchy_dump.json
@@ -0,0 +1,2583 @@
+{
+ "documents": [
+ {
+ "body": {
+ "bounds": {
+ "height": 960.0,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 36.0,
+ "width": 508.0,
+ "x": 16.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 40.0,
+ "x": 16.0,
+ "y": 8.399999618530273
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 22.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar-time"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 88.0,
+ "x": 436.0,
+ "y": 6.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 436.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 468.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 500.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar-icons"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 844.0,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 36.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 357.5999755859375,
+ "width": 500.0,
+ "x": 20.0,
+ "y": 56.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 357.5999755859375,
+ "width": 500.0,
+ "x": 20.0,
+ "y": 56.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 59.0,
+ "x": 53.0,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 53.0,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 54.0,
+ "x": 180.5,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 180.5,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 270.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 296.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 308.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 64.0,
+ "x": 300.5,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 300.5,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 395.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 421.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 433.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 45.0,
+ "x": 435.0,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 435.0,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 42.0,
+ "x": 61.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 61.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 68.0,
+ "x": 173.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 173.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 270.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 296.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 308.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 43.0,
+ "x": 311.0,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 311.0,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 395.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 421.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 433.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 94.0,
+ "x": 410.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 410.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 314.3999938964844
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 57.0,
+ "x": 54.0,
+ "y": 386.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 54.0,
+ "y": 400.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 314.3999938964844
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 84.0,
+ "x": 165.5,
+ "y": 386.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 165.5,
+ "y": 400.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-grid-section"
+ ],
+ "id": "installed-apps",
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-grid"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "home-content"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 100.0,
+ "width": 460.0,
+ "x": 40.0,
+ "y": 860.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 61.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 73.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-phone",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 176.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 188.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-messages",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 291.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 303.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-contacts",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 406.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 418.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-browser",
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "home-screen"
+ ],
+ "tag": "body",
+ "visible": true
+ },
+ "title": "Virtual Smartphone - Home",
+ "url": "D|\\Dev\\Mosis\\MosisService\\src\\main\\assets\\apps\\home\\home.rml"
+ },
+ {
+ "body": {
+ "bounds": {
+ "height": 178.39999389648438,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "system-status-time"
+ ],
+ "id": "status-time",
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "system-status-icons"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "system-status-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 524.0,
+ "x": 8.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 8.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 18.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 64.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 74.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn",
+ "disabled"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.0,
+ "width": 268.0,
+ "x": 136.0,
+ "y": 36.900001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 136.0,
+ "y": 46.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 136.0,
+ "y": 56.0
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-secure-icon"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.0,
+ "width": 260.0,
+ "x": 144.0,
+ "y": 36.900001525878906
+ },
+ "classes": [
+ "browser-url"
+ ],
+ "tag": "input",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-url-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 428.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 438.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 484.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 494.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-toolbar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 28.80000114440918,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 78.4000015258789
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 32.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-text"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-link"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-text"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 32.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-url"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-desc"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-item"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-url"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-desc"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-item"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-content"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 508.0,
+ "x": 16.0,
+ "y": 122.4000015258789
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 32.0,
+ "width": 111.0,
+ "x": 24.0,
+ "y": 130.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 65.5,
+ "y": 130.39999389648438
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 79.5,
+ "y": 162.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 79.5,
+ "y": 170.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 12.0,
+ "width": 111.0,
+ "x": 151.0,
+ "y": 140.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 146.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 154.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tabs-indicator"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 152.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 160.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 32.0,
+ "width": 111.0,
+ "x": 278.0,
+ "y": 130.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 319.5,
+ "y": 130.39999389648438
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 333.5,
+ "y": 162.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 333.5,
+ "y": 170.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 32.0,
+ "width": 111.0,
+ "x": 405.0,
+ "y": 130.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 446.5,
+ "y": 130.39999389648438
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 460.5,
+ "y": 162.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 460.5,
+ "y": 170.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-bottom-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-screen"
+ ],
+ "tag": "body",
+ "visible": true
+ },
+ "title": "Browser",
+ "url": "D|/Dev/Mosis/MosisService/base-apps/com.mosis.browser/browser.rml"
+ }
+ ],
+ "elements": {
+ "bounds": {
+ "height": 178.39999389648438,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "system-status-time"
+ ],
+ "id": "status-time",
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 0.0,
+ "y": 7.200000286102295
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "system-status-icons"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "system-status-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 524.0,
+ "x": 8.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 8.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 18.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 64.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 74.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn",
+ "disabled"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.0,
+ "width": 268.0,
+ "x": 136.0,
+ "y": 36.900001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 136.0,
+ "y": 46.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 136.0,
+ "y": 56.0
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-secure-icon"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.0,
+ "width": 260.0,
+ "x": 144.0,
+ "y": 36.900001525878906
+ },
+ "classes": [
+ "browser-url"
+ ],
+ "tag": "input",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-url-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 428.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 438.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 484.0,
+ "y": 22.400001525878906
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 494.0,
+ "y": 32.400001525878906
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-nav-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-toolbar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 28.80000114440918,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 78.4000015258789
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 32.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-text"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-link"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-text"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 32.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-url"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 24.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-desc"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-item"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-title"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-url"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 40.0,
+ "y": 92.80000305175781
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-desc"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-search-item"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-page"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-content"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 508.0,
+ "x": 16.0,
+ "y": 122.4000015258789
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 32.0,
+ "width": 111.0,
+ "x": 24.0,
+ "y": 130.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 65.5,
+ "y": 130.39999389648438
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 79.5,
+ "y": 162.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 79.5,
+ "y": 170.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 12.0,
+ "width": 111.0,
+ "x": 151.0,
+ "y": 140.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 146.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 154.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tabs-indicator"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 152.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 206.5,
+ "y": 160.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 32.0,
+ "width": 111.0,
+ "x": 278.0,
+ "y": 130.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 319.5,
+ "y": 130.39999389648438
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 333.5,
+ "y": 162.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 333.5,
+ "y": 170.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 32.0,
+ "width": 111.0,
+ "x": 405.0,
+ "y": 130.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 28.0,
+ "width": 28.0,
+ "x": 446.5,
+ "y": 130.39999389648438
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 460.5,
+ "y": 162.39999389648438
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 460.5,
+ "y": 170.79998779296875
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-tab-btn"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "browser-bottom-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-screen"
+ ],
+ "tag": "body",
+ "visible": true
+ },
+ "resolution": {
+ "height": 960,
+ "width": 540
+ },
+ "screen": "D:/Dev/Mosis/MosisService/base-apps/com.mosis.browser/browser.rml",
+ "timestamp": "2026-01-20T07:45:51"
+}
\ No newline at end of file
diff --git a/tests/hierarchy_fresh.json b/tests/hierarchy_fresh.json
new file mode 100644
index 0000000..8dfb55f
--- /dev/null
+++ b/tests/hierarchy_fresh.json
@@ -0,0 +1,1844 @@
+{
+ "documents": [
+ {
+ "body": {
+ "bounds": {
+ "height": 960.0,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 36.0,
+ "width": 508.0,
+ "x": 16.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 40.0,
+ "x": 16.0,
+ "y": 8.399999618530273
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 22.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar-time"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 88.0,
+ "x": 436.0,
+ "y": 6.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 436.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 468.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 500.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar-icons"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 844.0,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 36.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 357.5999755859375,
+ "width": 500.0,
+ "x": 20.0,
+ "y": 56.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 357.5999755859375,
+ "width": 500.0,
+ "x": 20.0,
+ "y": 56.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 59.0,
+ "x": 53.0,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 53.0,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 54.0,
+ "x": 180.5,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 180.5,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 270.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 296.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 308.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 64.0,
+ "x": 300.5,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 300.5,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 395.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 421.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 433.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 45.0,
+ "x": 435.0,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 435.0,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 42.0,
+ "x": 61.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 61.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 68.0,
+ "x": 173.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 173.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 270.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 296.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 308.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 43.0,
+ "x": 311.0,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 311.0,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 395.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 421.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 433.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 94.0,
+ "x": 410.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 410.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 314.3999938964844
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 57.0,
+ "x": 54.0,
+ "y": 386.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 54.0,
+ "y": 400.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 314.3999938964844
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 84.0,
+ "x": 165.5,
+ "y": 386.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 165.5,
+ "y": 400.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-grid-section"
+ ],
+ "id": "installed-apps",
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-grid"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "home-content"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 100.0,
+ "width": 460.0,
+ "x": 40.0,
+ "y": 860.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 61.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 73.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-phone",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 176.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 188.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-messages",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 291.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 303.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-contacts",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 406.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 418.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-browser",
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "home-screen"
+ ],
+ "tag": "body",
+ "visible": true
+ },
+ "title": "Virtual Smartphone - Home",
+ "url": "D|\\Dev\\Mosis\\MosisService\\src\\main\\assets\\apps\\home\\home.rml"
+ }
+ ],
+ "elements": {
+ "bounds": {
+ "height": 960.0,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 36.0,
+ "width": 508.0,
+ "x": 16.0,
+ "y": 0.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 40.0,
+ "x": 16.0,
+ "y": 8.399999618530273
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 16.0,
+ "y": 22.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar-time"
+ ],
+ "tag": "span",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 88.0,
+ "x": 436.0,
+ "y": 6.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 436.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 468.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 24.0,
+ "width": 24.0,
+ "x": 500.0,
+ "y": 6.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar-icons"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "status-bar"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 844.0,
+ "width": 540.0,
+ "x": 0.0,
+ "y": 36.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 357.5999755859375,
+ "width": 500.0,
+ "x": 20.0,
+ "y": 56.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 357.5999755859375,
+ "width": 500.0,
+ "x": 20.0,
+ "y": 56.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 59.0,
+ "x": 53.0,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 53.0,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 54.0,
+ "x": 180.5,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 180.5,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 270.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 296.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 308.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 64.0,
+ "x": 300.5,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 300.5,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 395.0,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 421.5,
+ "y": 64.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 433.5,
+ "y": 76.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 45.0,
+ "x": 435.0,
+ "y": 148.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 435.0,
+ "y": 162.10000610351563
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 42.0,
+ "x": 61.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 61.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 68.0,
+ "x": 173.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 173.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 270.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 296.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 308.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 43.0,
+ "x": 311.0,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 311.0,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 395.0,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 421.5,
+ "y": 183.1999969482422
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 433.5,
+ "y": 195.1999969482422
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 94.0,
+ "x": 410.5,
+ "y": 267.20001220703125
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 410.5,
+ "y": 281.3000183105469
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 20.0,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 46.5,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 58.5,
+ "y": 314.3999938964844
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 57.0,
+ "x": 54.0,
+ "y": 386.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 54.0,
+ "y": 400.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 103.19999694824219,
+ "width": 125.0,
+ "x": 145.0,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 171.5,
+ "y": 302.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 183.5,
+ "y": 314.3999938964844
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-image"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 19.200000762939453,
+ "width": 84.0,
+ "x": 165.5,
+ "y": 386.3999938964844
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 0.0,
+ "width": 0.0,
+ "x": 165.5,
+ "y": 400.5
+ },
+ "tag": "#text",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon-label"
+ ],
+ "tag": "span",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-icon"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-grid-section"
+ ],
+ "id": "installed-apps",
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "app-grid"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "home-content"
+ ],
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 100.0,
+ "width": 460.0,
+ "x": 40.0,
+ "y": 860.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 61.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 73.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-phone",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 176.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 188.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-messages",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 291.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 303.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-contacts",
+ "tag": "div",
+ "visible": true
+ },
+ {
+ "bounds": {
+ "height": 72.0,
+ "width": 72.0,
+ "x": 406.5,
+ "y": 874.0
+ },
+ "children": [
+ {
+ "bounds": {
+ "height": 48.0,
+ "width": 48.0,
+ "x": 418.5,
+ "y": 886.0
+ },
+ "tag": "img",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock-item"
+ ],
+ "id": "dock-browser",
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "dock"
+ ],
+ "tag": "div",
+ "visible": true
+ }
+ ],
+ "classes": [
+ "home-screen"
+ ],
+ "tag": "body",
+ "visible": true
+ },
+ "resolution": {
+ "height": 960,
+ "width": 540
+ },
+ "screen": "D:\\Dev\\Mosis\\MosisService\\src\\main\\assets\\apps\\home\\home.rml",
+ "timestamp": "2026-01-20T07:51:32"
+}
\ No newline at end of file
diff --git a/tests/screenshots/test_result.png b/tests/screenshots/test_result.png
new file mode 100644
index 0000000..bf56732
Binary files /dev/null and b/tests/screenshots/test_result.png differ