Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / tabs / tab_strip_view.mm
index 28eeb7b..e3ccd72 100644 (file)
@@ -7,17 +7,17 @@
 #include <cmath>  // floor
 
 #include "base/logging.h"
-#include "base/mac/mac_util.h"
 #include "chrome/browser/themes/theme_service.h"
 #import "chrome/browser/ui/cocoa/browser_window_controller.h"
 #import "chrome/browser/ui/cocoa/new_tab_button.h"
-#import "chrome/browser/ui/cocoa/nsview_additions.h"
 #import "chrome/browser/ui/cocoa/tabs/tab_strip_controller.h"
 #import "chrome/browser/ui/cocoa/tabs/tab_view.h"
 #import "chrome/browser/ui/cocoa/view_id_util.h"
-#include "grit/generated_resources.h"
+#include "chrome/grit/generated_resources.h"
 #include "grit/theme_resources.h"
+#import "ui/base/cocoa/appkit_utils.h"
 #import "ui/base/cocoa/nsgraphics_context_additions.h"
+#import "ui/base/cocoa/nsview_additions.h"
 #include "ui/base/l10n/l10n_util_mac.h"
 #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
 
@@ -40,9 +40,7 @@
     // Register to be an URL drop target.
     dropHandler_.reset([[URLDropTargetHandler alloc] initWithView:self]);
 
-    // Give this view its own layer, and squash child layers into this layer
-    // so that the text in the infobar have sub-pixel anti-aliasing.
-    [self cr_setWantsLayer:YES withSquashing:YES];
+    [self setWantsLayer:YES];
   }
   return self;
 }
   // "short" as 0.8 seconds. (Measuring up-to-up isn't enough to properly
   // detect double-clicks, but we're actually using Cocoa for that.)
   if (clickCount == 2 && (timestamp - lastMouseUp_) < 0.8) {
-    if (base::mac::ShouldWindowsMiniaturizeOnDoubleClick())
-      [[self window] performMiniaturize:self];
+    ui::WindowTitlebarReceivedDoubleClick([self window], self);
   } else {
     [super mouseUp:event];
   }
   return NO;
 }
 
+// Returns AX children (tabs and new tab button), sorted from left to right.
+- (NSArray*)accessibilityChildren {
+  NSArray* children =
+      [super accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
+  return [children sortedArrayUsingComparator:
+      ^NSComparisonResult(id first, id second) {
+          NSPoint firstPosition =
+              [[first accessibilityAttributeValue:
+                          NSAccessibilityPositionAttribute] pointValue];
+          NSPoint secondPosition =
+              [[second accessibilityAttributeValue:
+                           NSAccessibilityPositionAttribute] pointValue];
+          if (firstPosition.x < secondPosition.x)
+            return NSOrderedAscending;
+          else if (firstPosition.x > secondPosition.x)
+            return NSOrderedDescending;
+          else
+            return NSOrderedSame;
+      }];
+}
+
 - (id)accessibilityAttributeValue:(NSString*)attribute {
-  if ([attribute isEqual:NSAccessibilityRoleAttribute])
+  if ([attribute isEqual:NSAccessibilityRoleAttribute]) {
     return NSAccessibilityTabGroupRole;
-  if ([attribute isEqual:NSAccessibilityTabsAttribute]) {
-    NSMutableArray* tabs = [[[NSMutableArray alloc] init] autorelease];
-    NSArray* children =
-        [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
-    for (id child in children) {
-      if ([[child accessibilityAttributeValue:NSAccessibilityRoleAttribute]
-          isEqual:NSAccessibilityRadioButtonRole]) {
-        [tabs addObject:child];
-      }
-    }
-    return tabs;
-  }
-  if ([attribute isEqual:NSAccessibilityContentsAttribute])
-    return [self accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
-  if ([attribute isEqual:NSAccessibilityValueAttribute])
+  } else if ([attribute isEqual:NSAccessibilityChildrenAttribute]) {
+    return [self accessibilityChildren];
+  } else if ([attribute isEqual:NSAccessibilityTabsAttribute]) {
+    NSArray* children = [self accessibilityChildren];
+    NSIndexSet* indexes = [children indexesOfObjectsPassingTest:
+        ^BOOL(id child, NSUInteger idx, BOOL* stop) {
+            NSString* role = [child
+                accessibilityAttributeValue:NSAccessibilityRoleAttribute];
+            return [role isEqualToString:NSAccessibilityRadioButtonRole];
+        }];
+    return [children objectsAtIndexes:indexes];
+  } else if ([attribute isEqual:NSAccessibilityContentsAttribute]) {
+    return [self accessibilityChildren];
+  } else if ([attribute isEqual:NSAccessibilityValueAttribute]) {
     return [controller_ activeTabView];
+  }
 
   return [super accessibilityAttributeValue:attribute];
 }