Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Unified Diff: content/renderer/renderer_date_time_picker_impl.cc

Issue 11418295: Use WebCore:DateTimeChooser for date/time form types instead of considering them text fields. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/renderer_date_time_picker_impl.cc
diff --git a/content/renderer/renderer_date_time_picker_impl.cc b/content/renderer/renderer_date_time_picker_impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..934719ad6cf21265fb41a9b8ba51e590935703e7
--- /dev/null
+++ b/content/renderer/renderer_date_time_picker_impl.cc
@@ -0,0 +1,92 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/renderer/renderer_date_time_picker_impl.h"
+
+#include "content/common/view_messages.h"
+#include "content/renderer/render_view_impl.h"
+
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDateTimeChooserCompletion.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDateTimeChooserParams.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
+
+namespace content {
+
+using WebKit::WebString;
+
+RendererDateTimePickerImpl::RendererDateTimePickerImpl(
+ RenderViewImpl* sender,
+ const WebKit::WebDateTimeChooserParams& params,
+ WebKit::WebDateTimeChooserCompletion* completion)
+ : RenderViewObserver(sender),
+ chooser_params_(params),
+ chooser_completion_(completion) {
+}
+
+RendererDateTimePickerImpl::~RendererDateTimePickerImpl() {
+}
+
+bool RendererDateTimePickerImpl::Open() {
+ ViewHostMsg_TextInputState_Params p;
+ p.type = ExtractType(chooser_params_);
+ p.value = chooser_params_.currentValue.utf8();
+ p.show_ime_if_needed = true;
+ Send(new ViewHostMsg_TextInputStateChanged(routing_id(), p));
+ return true;
+}
+
+bool RendererDateTimePickerImpl::OnMessageReceived(
+ const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(RendererDateTimePickerImpl, message)
+ IPC_MESSAGE_HANDLER(ViewMsg_ReplaceAll, OnReplaceDateTime)
+ IPC_MESSAGE_HANDLER(ViewMsg_ClearFocusedNode, OnClear)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void RendererDateTimePickerImpl::OnReplaceDateTime(string16 new_date) {
+ if (chooser_completion_) {
+ chooser_completion_->didChooseValue(new_date);
+ }
+}
+
+void RendererDateTimePickerImpl::OnClear() {
+ if (chooser_completion_ != NULL) {
bulach 2012/12/03 20:23:03 nit: like 51, s/!= NULL// also, both here and abo
Miguel Garcia 2012/12/04 10:40:43 Done.
+ chooser_completion_->didCancelChooser();
+ }
+}
+
+//static
+ui::TextInputType RendererDateTimePickerImpl::ExtractType(
+ const WebKit::WebDateTimeChooserParams& source) {
+ // See the description of WebDateTimeChooserParams#type. The format
+ // is passed as a string so we decode it here.
+
+ // TODO(miguelg) Once https://bugs.webkit.org/show_bug.cgi?id=103746
+ // makes it into chromium this can be simplified.
+ static const WebString date = "date";
bulach 2012/12/03 20:23:03 nargh! :) can't have non-POD statics, they're nast
Miguel Garcia 2012/12/04 10:40:43 Argh sorry about that. I'll replace this 100% befo
Miguel Garcia 2012/12/04 11:20:13 yay! The WebKit change landed so I am using an enu
+ static const WebString date_time = "datetime";
+ static const WebString date_time_local = "datetime-local";
+ static const WebString month = "month";
+ static const WebString time = "time";
+ static const WebString week = "week";
+
+ if (source.type.equals(WebString::fromUTF8("date")))
+ return ui::TEXT_INPUT_TYPE_DATE;
+ if (source.type.equals(WebString::fromUTF8("datetime")))
+ return ui::TEXT_INPUT_TYPE_DATE_TIME;
+ if (source.type.equals(WebString::fromUTF8("datetime-local")))
+ return ui::TEXT_INPUT_TYPE_DATE_TIME_LOCAL;
+ if (source.type.equals(WebString::fromUTF8("month")))
+ return ui::TEXT_INPUT_TYPE_MONTH;
+ if (source.type.equals(WebString::fromUTF8("time")))
+ return ui::TEXT_INPUT_TYPE_TIME;
+ if (source.type.equals(WebString::fromUTF8("week")))
+ return ui::TEXT_INPUT_TYPE_WEEK;
bulach 2012/12/03 20:23:03 nit: wrong indentation on all "return" clauses
Miguel Garcia 2012/12/04 10:40:43 Done.
+ return ui::TEXT_INPUT_TYPE_NONE;
+}
+
+} // namespace content

Powered by Google App Engine
This is Rietveld 408576698