Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / app_list / views / folder_header_view.cc
index f4e582f..4346fec 100644 (file)
@@ -4,6 +4,8 @@
 
 #include "ui/app_list/views/folder_header_view.h"
 
+#include <algorithm>
+
 #include "base/strings/utf_string_conversions.h"
 #include "grit/ui_resources.h"
 #include "grit/ui_strings.h"
@@ -28,7 +30,6 @@ const int kPadding = 14;
 const int kBottomSeparatorWidth = 380;
 const int kBottomSeparatorHeight = 1;
 const int kMaxFolderNameWidth = 300;
-const int kFolderNameLeftRightPaddingChars = 4;
 
 const SkColor kHintTextColor = SkColorSetRGB(0xA0, 0xA0, 0xA0);
 
@@ -66,6 +67,10 @@ FolderHeaderView::FolderHeaderView(FolderHeaderViewDelegate* delegate)
   back_button_->SetImageAlignment(views::ImageButton::ALIGN_CENTER,
       views::ImageButton::ALIGN_MIDDLE);
   AddChildView(back_button_);
+  back_button_->SetFocusable(true);
+  back_button_->SetAccessibleName(
+      ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
+          IDS_APP_LIST_FOLDER_CLOSE_FOLDER_ACCESSIBILE_NAME));
 
   folder_name_view_->SetFontList(
       rb.GetFontList(ui::ResourceBundle::MediumFont));
@@ -114,11 +119,35 @@ void FolderHeaderView::Update() {
   folder_name_view_->SetVisible(folder_name_visible_);
   if (folder_name_visible_) {
     folder_name_view_->SetText(base::UTF8ToUTF16(folder_item_->name()));
+    UpdateFolderNameAccessibleName();
   }
 
   Layout();
 }
 
+void FolderHeaderView::UpdateFolderNameAccessibleName() {
+  // Sets |folder_name_view_|'s accessible name to the placeholder text if
+  // |folder_name_view_| is blank; otherwise, clear the accessible name, the
+  // accessible state's value is set to be folder_name_view_->text() by
+  // TextField.
+  base::string16 accessible_name = folder_name_view_->text().empty()
+                                       ? folder_name_placeholder_text_
+                                       : base::string16();
+  folder_name_view_->SetAccessibleName(accessible_name);
+}
+
+const base::string16& FolderHeaderView::GetFolderNameForTest() {
+  return folder_name_view_->text();
+}
+
+void FolderHeaderView::SetFolderNameForTest(const base::string16& name) {
+  folder_name_view_->SetText(name);
+}
+
+bool FolderHeaderView::IsFolderNameEnabledForTest() const {
+  return folder_name_view_->enabled();
+}
+
 gfx::Size FolderHeaderView::GetPreferredSize() {
   return gfx::Size(kPreferredWidth, kPreferredHeight);
 }
@@ -133,11 +162,12 @@ void FolderHeaderView::Layout() {
   back_button_->SetBoundsRect(back_bounds);
 
   gfx::Rect text_bounds(rect);
-  int text_char_num = folder_item_->name().size()
-                          ? folder_item_->name().size()
-                          : folder_name_placeholder_text_.size();
-  int text_width = folder_name_view_->GetFontList().GetExpectedTextWidth(
-      text_char_num + kFolderNameLeftRightPaddingChars);
+  base::string16 text = folder_item_->name().empty()
+                            ? folder_name_placeholder_text_
+                            : base::UTF8ToUTF16(folder_item_->name());
+  int text_width =
+      gfx::Canvas::GetStringWidth(text, folder_name_view_->GetFontList()) +
+      folder_name_view_->GetCaretBounds().width();
   text_width = std::min(text_width, kMaxFolderNameWidth);
   text_bounds.set_x(back_bounds.x() + (rect.width() - text_width) / 2);
   text_bounds.set_width(text_width);
@@ -182,12 +212,13 @@ void FolderHeaderView::ContentsChanged(views::Textfield* sender,
     delegate_->SetItemName(folder_item_, name);
   folder_item_->AddObserver(this);
 
+  UpdateFolderNameAccessibleName();
+
   Layout();
 }
 
 void FolderHeaderView::ButtonPressed(views::Button* sender,
                                      const ui::Event& event) {
-  delegate_->GiveBackFocusToSearchBox();
   delegate_->NavigateBack(folder_item_, event);
 }