diff -r 4f2f89ce4247 -r 303757a437d3 WebCore/page/Page.cpp --- a/WebCore/page/Page.cpp Fri Sep 17 09:02:29 2010 +0300 +++ b/WebCore/page/Page.cpp Mon Oct 04 01:32:07 2010 +0300 @@ -166,6 +166,7 @@ , m_customHTMLTokenizerTimeDelay(-1) , m_customHTMLTokenizerChunkSize(-1) , m_canStartMedia(true) + , m_viewMode(ViewModeWindowed) { #if !ENABLE(CONTEXT_MENUS) UNUSED_PARAM(contextMenuClient); @@ -232,6 +233,45 @@ #endif } +struct ViewModeInfo { + const char* name; + Page::ViewMode type; +}; +static const int viewModeMapSize = 5; +static ViewModeInfo viewModeMap[viewModeMapSize] = { + {"windowed", Page::ViewModeWindowed}, + {"floating", Page::ViewModeFloating}, + {"fullscreen", Page::ViewModeFullscreen}, + {"maximized", Page::ViewModeMaximized}, + {"minimized", Page::ViewModeMinimized} +}; + +Page::ViewMode Page::stringToViewMode(const String& text) +{ + for (int i = 0; i < viewModeMapSize; ++i) { + if (text == viewModeMap[i].name) + return viewModeMap[i].type; + } + return Page::ViewModeInvalid; +} + +void Page::setViewMode(ViewMode viewMode) +{ + if (viewMode == m_viewMode || viewMode == ViewModeInvalid) + return; + + m_viewMode = viewMode; + + if (!m_mainFrame) + return; + + if (m_mainFrame->view()) + m_mainFrame->view()->forceLayout(); + + if (m_mainFrame->document()) + m_mainFrame->document()->updateStyleSelector(); +} + void Page::setMainFrame(PassRefPtr mainFrame) { ASSERT(!m_mainFrame); // Should only be called during initialization