void DateTimeChooserImpl::writeDocument(WebCore::DocumentWriter& writer) { WebCore::DateComponents date; date.setMillisecondsSinceEpochForDate(m_parameters.minimum); String minString = date.toString(); date.setMillisecondsSinceEpochForDate(m_parameters.maximum); String maxString = date.toString(); String stepString = String::number(m_parameters.step); addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer); writer.addData(WebCore::pickerCommonCss, sizeof(WebCore::pickerCommonCss)); writer.addData(WebCore::calendarPickerCss, sizeof(WebCore::calendarPickerCss)); CString extraStyle = WebCore::RenderTheme::defaultTheme()->extraCalendarPickerStyleSheet(); if (extraStyle.length()) writer.addData(extraStyle.data(), extraStyle.length()); addString("</style></head><body><div id=main>Loading...</div><script>\n" "window.dialogArguments = {\n", writer); addProperty("min", minString, writer); addProperty("max", maxString, writer); addProperty("step", stepString, writer); addProperty("required", m_parameters.required, writer); addProperty("currentValue", m_parameters.currentValue, writer); addProperty("locale", WebCore::defaultLanguage(), writer); addProperty("todayLabel", Platform::current()->queryLocalizedString(WebLocalizedString::CalendarToday), writer); addProperty("clearLabel", Platform::current()->queryLocalizedString(WebLocalizedString::CalendarClear), writer); addProperty("weekStartDay", WebCore::firstDayOfWeek(), writer); addProperty("monthLabels", WebCore::monthLabels(), writer); addProperty("dayLabels", WebCore::weekDayShortLabels(), writer); Direction dir = direction(WebCore::monthLabels()[0][0]); addProperty("isRTL", dir == RightToLeft || dir == RightToLeftArabic, writer); if (m_parameters.suggestionValues.size()) { addProperty("inputWidth", static_cast<unsigned>(m_parameters.anchorRectInRootView.width()), writer); addProperty("suggestionValues", m_parameters.suggestionValues, writer); addProperty("localizedSuggestionValues", m_parameters.localizedSuggestionValues, writer); addProperty("suggestionLabels", m_parameters.suggestionLabels, writer); addProperty("showOtherDateEntry", m_parameters.type == WebCore::InputTypeNames::date(), writer); addProperty("otherDateLabel", Platform::current()->queryLocalizedString(WebLocalizedString::OtherDateLabel), writer); } addString("}\n", writer); writer.addData(WebCore::pickerCommonJs, sizeof(WebCore::pickerCommonJs)); writer.addData(WebCore::calendarPickerJs, sizeof(WebCore::calendarPickerJs)); addString("</script></body>\n", writer); }
static String valueToDateTimeString(double value, AtomicString type) { WebCore::DateComponents components; if (type == WebCore::InputTypeNames::date) components.setMillisecondsSinceEpochForDate(value); else if (type == WebCore::InputTypeNames::datetime_local) components.setMillisecondsSinceEpochForDateTimeLocal(value); else if (type == WebCore::InputTypeNames::month) components.setMonthsSinceEpoch(value); else if (type == WebCore::InputTypeNames::time) components.setMillisecondsSinceMidnight(value); else if (type == WebCore::InputTypeNames::week) components.setMillisecondsSinceEpochForWeek(value); else ASSERT_NOT_REACHED(); return components.type() == WebCore::DateComponents::Invalid ? String() : components.toString(); }
void DateTimeChooserImpl::writeDocument(WebCore::DocumentWriter& writer) { WebCore::DateComponents date; date.setMillisecondsSinceEpochForDate(m_parameters.minimum); String minString = date.toString(); date.setMillisecondsSinceEpochForDate(m_parameters.maximum); String maxString = date.toString(); String stepString = String::number(m_parameters.step); String stepBaseString = String::number(m_parameters.stepBase, 11, WTF::TruncateTrailingZeros); IntRect anchorRectInScreen = m_chromeClient->rootViewToScreen(m_parameters.anchorRectInRootView); FrameView* view = static_cast<WebViewImpl*>(m_chromeClient->webView())->page()->mainFrame()->view(); IntRect rootViewVisibleContentRect = view->visibleContentRect(true /* include scrollbars */); IntRect rootViewRectInScreen = m_chromeClient->rootViewToScreen(rootViewVisibleContentRect); rootViewRectInScreen.move(-view->scrollX(), -view->scrollY()); addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer); writer.addData(WebCore::pickerCommonCss, sizeof(WebCore::pickerCommonCss)); writer.addData(WebCore::suggestionPickerCss, sizeof(WebCore::suggestionPickerCss)); writer.addData(WebCore::calendarPickerCss, sizeof(WebCore::calendarPickerCss)); CString extraStyle = WebCore::RenderTheme::defaultTheme()->extraCalendarPickerStyleSheet(); if (extraStyle.length()) writer.addData(extraStyle.data(), extraStyle.length()); addString("</style></head><body><div id=main>Loading...</div><script>\n" "window.dialogArguments = {\n", writer); addProperty("anchorRectInScreen", anchorRectInScreen, writer); addProperty("rootViewRectInScreen", rootViewRectInScreen, writer); #if OS(MAC_OS_X) addProperty("confineToRootView", true, writer); #else addProperty("confineToRootView", false, writer); #endif addProperty("min", minString, writer); addProperty("max", maxString, writer); addProperty("step", stepString, writer); addProperty("stepBase", stepBaseString, writer); addProperty("required", m_parameters.required, writer); addProperty("currentValue", m_parameters.currentValue, writer); addProperty("locale", WebCore::defaultLanguage(), writer); addProperty("todayLabel", Platform::current()->queryLocalizedString(WebLocalizedString::CalendarToday), writer); addProperty("clearLabel", Platform::current()->queryLocalizedString(WebLocalizedString::CalendarClear), writer); addProperty("weekStartDay", m_locale->firstDayOfWeek(), writer); addProperty("monthLabels", m_locale->monthLabels(), writer); addProperty("dayLabels", m_locale->weekDayShortLabels(), writer); addProperty("isCalendarRTL", m_locale->isRTL(), writer); addProperty("isRTL", m_parameters.isAnchorElementRTL, writer); if (m_parameters.suggestionValues.size()) { addProperty("inputWidth", static_cast<unsigned>(m_parameters.anchorRectInRootView.width()), writer); addProperty("suggestionValues", m_parameters.suggestionValues, writer); addProperty("localizedSuggestionValues", m_parameters.localizedSuggestionValues, writer); addProperty("suggestionLabels", m_parameters.suggestionLabels, writer); addProperty("showOtherDateEntry", m_parameters.type == WebCore::InputTypeNames::date(), writer); addProperty("otherDateLabel", Platform::current()->queryLocalizedString(WebLocalizedString::OtherDateLabel), writer); addProperty("suggestionHighlightColor", WebCore::RenderTheme::defaultTheme()->activeListBoxSelectionBackgroundColor().serialized(), writer); addProperty("suggestionHighlightTextColor", WebCore::RenderTheme::defaultTheme()->activeListBoxSelectionForegroundColor().serialized(), writer); } addString("}\n", writer); writer.addData(WebCore::pickerCommonJs, sizeof(WebCore::pickerCommonJs)); writer.addData(WebCore::suggestionPickerJs, sizeof(WebCore::suggestionPickerJs)); writer.addData(WebCore::calendarPickerJs, sizeof(WebCore::calendarPickerJs)); addString("</script></body>\n", writer); }
void DateTimeChooserImpl::writeDocument(WebCore::DocumentWriter& writer) { WebCore::DateComponents minDate; WebCore::DateComponents maxDate; if (m_parameters.type == WebCore::InputTypeNames::month()) { minDate.setMonthsSinceEpoch(m_parameters.minimum); maxDate.setMonthsSinceEpoch(m_parameters.maximum); } else if (m_parameters.type == WebCore::InputTypeNames::week()) { minDate.setMillisecondsSinceEpochForWeek(m_parameters.minimum); maxDate.setMillisecondsSinceEpochForWeek(m_parameters.maximum); } else { minDate.setMillisecondsSinceEpochForDate(m_parameters.minimum); maxDate.setMillisecondsSinceEpochForDate(m_parameters.maximum); } String stepString = String::number(m_parameters.step); String stepBaseString = String::number(m_parameters.stepBase, 11, WTF::TruncateTrailingZeros); IntRect anchorRectInScreen = m_chromeClient->rootViewToScreen(m_parameters.anchorRectInRootView); String todayLabelString; String otherDateLabelString; if (m_parameters.type == WebCore::InputTypeNames::month()) { todayLabelString = Platform::current()->queryLocalizedString(WebLocalizedString::ThisMonthButtonLabel); otherDateLabelString = Platform::current()->queryLocalizedString(WebLocalizedString::OtherMonthLabel); } else if (m_parameters.type == WebCore::InputTypeNames::week()) { todayLabelString = Platform::current()->queryLocalizedString(WebLocalizedString::ThisWeekButtonLabel); otherDateLabelString = Platform::current()->queryLocalizedString(WebLocalizedString::OtherWeekLabel); } else { todayLabelString = Platform::current()->queryLocalizedString(WebLocalizedString::CalendarToday); otherDateLabelString = Platform::current()->queryLocalizedString(WebLocalizedString::OtherDateLabel); } addString("<!DOCTYPE html><head><meta charset='UTF-8'><style>\n", writer); writer.addData(WebCore::pickerCommonCss, sizeof(WebCore::pickerCommonCss)); writer.addData(WebCore::pickerCommonChromiumCss, sizeof(WebCore::pickerCommonChromiumCss)); writer.addData(WebCore::suggestionPickerCss, sizeof(WebCore::suggestionPickerCss)); writer.addData(WebCore::calendarPickerCss, sizeof(WebCore::calendarPickerCss)); writer.addData(WebCore::calendarPickerChromiumCss, sizeof(WebCore::calendarPickerChromiumCss)); addString("</style></head><body><div id=main>Loading...</div><script>\n" "window.dialogArguments = {\n", writer); addProperty("anchorRectInScreen", anchorRectInScreen, writer); addProperty("min", minDate.toString(), writer); addProperty("max", maxDate.toString(), writer); addProperty("step", stepString, writer); addProperty("stepBase", stepBaseString, writer); addProperty("required", m_parameters.required, writer); addProperty("currentValue", m_parameters.currentValue, writer); addProperty("locale", m_parameters.locale.string(), writer); addProperty("todayLabel", todayLabelString, writer); addProperty("clearLabel", Platform::current()->queryLocalizedString(WebLocalizedString::CalendarClear), writer); addProperty("weekLabel", Platform::current()->queryLocalizedString(WebLocalizedString::WeekNumberLabel), writer); addProperty("weekStartDay", m_locale->firstDayOfWeek(), writer); addProperty("shortMonthLabels", m_locale->shortMonthLabels(), writer); addProperty("dayLabels", m_locale->weekDayShortLabels(), writer); addProperty("isLocaleRTL", m_locale->isRTL(), writer); addProperty("isRTL", m_parameters.isAnchorElementRTL, writer); addProperty("mode", m_parameters.type.string(), writer); if (m_parameters.suggestionValues.size()) { addProperty("inputWidth", static_cast<unsigned>(m_parameters.anchorRectInRootView.width()), writer); addProperty("suggestionValues", m_parameters.suggestionValues, writer); addProperty("localizedSuggestionValues", m_parameters.localizedSuggestionValues, writer); addProperty("suggestionLabels", m_parameters.suggestionLabels, writer); addProperty("showOtherDateEntry", WebCore::RenderTheme::defaultTheme()->supportsCalendarPicker(m_parameters.type), writer); addProperty("otherDateLabel", otherDateLabelString, writer); addProperty("suggestionHighlightColor", WebCore::RenderTheme::defaultTheme()->activeListBoxSelectionBackgroundColor().serialized(), writer); addProperty("suggestionHighlightTextColor", WebCore::RenderTheme::defaultTheme()->activeListBoxSelectionForegroundColor().serialized(), writer); } addString("}\n", writer); writer.addData(WebCore::pickerCommonJs, sizeof(WebCore::pickerCommonJs)); writer.addData(WebCore::suggestionPickerJs, sizeof(WebCore::suggestionPickerJs)); writer.addData(WebCore::calendarPickerJs, sizeof(WebCore::calendarPickerJs)); addString("</script></body>\n", writer); }