8eb5c1a3b2
Add session persistence and single-instance handling. Introduces browser/session_state.{h,cpp} to load/save a simple JSON session_state.json (limits restored tabs to 50, basic JSON parsing, atomic write via a .tmp rename). TabManager gains RestoreTabs and ActiveTabIndex to restore and track tabs. NebulaController now calls PersistSession on tab/title/activate/close events, flushes cookies on shutdown, and sets CEF runtime style to Alloy for embedded child browsers and devtools. run.cpp adds a named mutex to prevent multiple instances, enables persistent session cookies, and tweaks initial URL handling. Added GetSessionStatePath() to ui/paths and updated CMakeLists.txt to include the new source file.
25 lines
452 B
C++
25 lines
452 B
C++
#pragma once
|
|
|
|
#include <cstddef>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "browser/tab.h"
|
|
|
|
namespace nebula::browser {
|
|
|
|
struct PersistedTab {
|
|
std::string url;
|
|
std::string title = "New Tab";
|
|
};
|
|
|
|
struct SessionState {
|
|
std::vector<PersistedTab> tabs;
|
|
size_t active_tab_index = 0;
|
|
};
|
|
|
|
SessionState LoadSessionState();
|
|
void SaveSessionState(const std::vector<NebulaTab>& tabs, size_t active_tab_index);
|
|
|
|
} // namespace nebula::browser
|