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 |