#pragma once // Estado compartido entre los paneles Browsers/Tabs/Tab Detail/Network. // // Modelo: // - selected_port: puerto CDP del browser activo (0 = ninguno). // - selected_tab_id: id CDP de la pestaña elegida ("" = ninguna). // - tabs: ultimo snapshot de pestañas (refrescado por Tabs panel). // - net: NetworkSession ligada al tab seleccionado. Se reabre al cambiar tab. // // Toda la mutacion va detras de mutex. Lectura desde UI thread. #include "cdp_http.h" #include "network_state.h" #include #include #include #include #include namespace navegator { struct SessionState { std::mutex mu; int selected_port = 0; std::string selected_tab_id; std::string selected_tab_ws_url; std::vector tabs; std::chrono::steady_clock::time_point last_tabs_refresh; std::string tabs_error; bool tabs_refreshing = false; std::unique_ptr net; std::string net_error; // Helpers (toman el lock internamente). void select_browser(int port); void select_tab(const std::string& tab_id, const std::string& ws_url); void clear_selection(); }; SessionState& g_session(); } // namespace navegator