WebCore/page/Page.cpp
changeset 2 303757a437d3
parent 0 4f2f89ce4247
--- 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<Frame> mainFrame)
 {
     ASSERT(!m_mainFrame); // Should only be called during initialization