diff --git a/DEPS b/DEPS
index 853c229..92760bd 100644
--- a/DEPS
+++ b/DEPS
@@ -59,7 +59,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '87f7d29531dabfd66e547a6be31a08272ff631d5',
+  'pdfium_revision': 'bab9a98b71f351cf9f4eb39138bca55e3be4ef15',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling openmax_dl
   # and whatever else without interference from each other.
diff --git a/build/common.gypi b/build/common.gypi
index e50fdf4..c3bc3dff 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -5754,7 +5754,6 @@
           4100, # Unreferenced formal parameter
           4121, # Alignment of a member was sensitive to packing
           4244, # Conversion from 'type1' to 'type2', possible loss of data
-          4481, # Nonstandard extension used: override specifier 'keyword'
           4505, # Unreferenced local function has been removed
           4510, # Default constructor could not be generated
           4512, # Assignment operator could not be generated
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 480b3bb..97eb672 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -732,7 +732,6 @@
       "/wd4100",  # Unreferenced formal function parameter.
       "/wd4121",  # Alignment of a member was sensitive to packing.
       "/wd4244",  # Conversion: possible loss of data.
-      "/wd4481",  # Nonstandard extension: override specifier.
       "/wd4505",  # Unreferenced local function has been removed.
       "/wd4510",  # Default constructor could not be generated.
       "/wd4512",  # Assignment operator could not be generated.
diff --git a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
index d999605..fb1b528 100644
--- a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
@@ -58,7 +58,7 @@
   // If |timing.IsEmpty()|, then this load was not tracked by the renderer. It
   // is impossible to know whether the abort signals came before the page
   // painted.
-  if (extra_info.has_commit && !timing.IsEmpty()) {
+  if (!extra_info.time_to_commit.is_zero() && !timing.IsEmpty()) {
     switch (abort_type) {
       case UserAbortType::ABORT_RELOAD:
         PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforePaint,
@@ -91,7 +91,7 @@
     }
     NOTREACHED();
   }
-  if (extra_info.has_commit) {
+  if (!extra_info.time_to_commit.is_zero()) {
     // This load was not tracked by the renderer.
     return;
   }
diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer.cc b/components/page_load_metrics/browser/metrics_web_contents_observer.cc
index 0a1d6c20..d11bd57 100644
--- a/components/page_load_metrics/browser/metrics_web_contents_observer.cc
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer.cc
@@ -123,7 +123,6 @@
     PageLoadMetricsEmbedderInterface* embedder_interface,
     content::NavigationHandle* navigation_handle)
     : renderer_tracked_(false),
-      has_commit_(false),
       navigation_start_(navigation_handle->NavigationStart()),
       abort_type_(ABORT_NONE),
       started_in_foreground_(in_foreground),
@@ -157,14 +156,10 @@
 }
 
 void PageLoadTracker::Commit(content::NavigationHandle* navigation_handle) {
-  has_commit_ = true;
+  // TODO(bmcquade): To improve accuracy, consider adding commit time to
+  // NavigationHandle. Taking a timestamp here should be close enough for now.
+  commit_time_ = base::TimeTicks::Now();
   url_ = navigation_handle->GetURL();
-  // We log the event that this load started. Because we don't know if a load is
-  // relevant or if it will commit before now, we have to log this event at
-  // commit time.
-  if (renderer_tracked())
-    RecordCommittedEvent(RELEVANT_LOAD_STARTED, !started_in_foreground_);
-
   for (const auto& observer : observers_) {
     observer->OnCommit(navigation_handle);
   }
@@ -208,52 +203,78 @@
   base::TimeDelta first_background_time;
   base::TimeDelta first_foreground_time;
   base::TimeDelta time_to_abort;
+  base::TimeDelta time_to_commit;
   if (!background_time_.is_null() && started_in_foreground_)
     first_background_time = background_time_ - navigation_start_;
   if (!foreground_time_.is_null() && !started_in_foreground_)
     first_foreground_time = foreground_time_ - navigation_start_;
   if (abort_type_ != ABORT_NONE) {
-    DCHECK(!abort_time_.is_null());
+    DCHECK_GT(abort_time_, navigation_start_);
     time_to_abort = abort_time_ - navigation_start_;
+  } else {
+    DCHECK(abort_time_.is_null());
+  }
+  if (!commit_time_.is_null()) {
+    DCHECK_GT(commit_time_, navigation_start_);
+    time_to_commit = commit_time_ - navigation_start_;
   }
   return PageLoadExtraInfo(first_background_time, first_foreground_time,
-                           started_in_foreground_, has_commit_, abort_type_,
+                           started_in_foreground_, time_to_commit, abort_type_,
                            time_to_abort);
 }
 
 const GURL& PageLoadTracker::committed_url() {
-  DCHECK(has_commit_);
+  DCHECK(!commit_time_.is_null());
   return url_;
 }
 
 void PageLoadTracker::NotifyAbort(UserAbortType abort_type,
-                                  base::TimeTicks timestamp) {
+                                  const base::TimeTicks& timestamp) {
   DCHECK_NE(abort_type, ABORT_NONE);
   // Use UpdateAbort to update an already notified PageLoadTracker.
   if (abort_type_ != ABORT_NONE)
     return;
 
-  abort_type_ = abort_type;
-  abort_time_ = timestamp;
+  UpdateAbortInternal(abort_type, timestamp);
 }
 
 void PageLoadTracker::UpdateAbort(UserAbortType abort_type,
-                                  base::TimeTicks timestamp) {
+                                  const base::TimeTicks& timestamp) {
   DCHECK_NE(abort_type, ABORT_NONE);
   DCHECK_NE(abort_type, ABORT_OTHER);
   DCHECK_EQ(abort_type_, ABORT_OTHER);
 
-  abort_type_ = abort_type;
   // For some aborts (e.g. navigations), the initiated timestamp can be earlier
   // than the timestamp that aborted the load. Taking the minimum gives the
   // closest user initiated time known.
-  abort_time_ = std::min(abort_time_, timestamp);
+  UpdateAbortInternal(abort_type, std::min(abort_time_, timestamp));
+}
+
+void PageLoadTracker::UpdateAbortInternal(UserAbortType abort_type,
+                                          const base::TimeTicks& timestamp) {
+  // When a provisional navigation commits, that navigation's start time is
+  // interpreted as the abort time for other provisional loads in the tab.
+  // However, this only makes sense if the committed load started after the
+  // aborted provisional loads started. Thus we ignore cases where the committed
+  // load started before the aborted provisional load, as this would result in
+  // recording a negative time-to-abort. The real issue here is that we have to
+  // infer the cause of aborts. It would be better if the navigation code could
+  // instead report the actual cause of an aborted navigation. See crbug/571647
+  // for details.
+  if (timestamp <= navigation_start_) {
+    RecordInternalError(ERR_ABORT_BEFORE_NAVIGATION_START);
+    abort_type_ = ABORT_NONE;
+    abort_time_ = base::TimeTicks();
+    return;
+  }
+  abort_type_ = abort_type;
+  abort_time_ = timestamp;
 }
 
 void PageLoadTracker::RecordTimingHistograms(const PageLoadExtraInfo& info) {
   if (!info.first_background_time.is_zero() &&
       !EventOccurredInForeground(timing_.first_paint, info)) {
-    if (has_commit_) {
+    if (!info.time_to_commit.is_zero()) {
       PAGE_LOAD_HISTOGRAM(kHistogramBackgroundBeforePaint,
                           info.first_background_time);
     } else {
@@ -263,9 +284,15 @@
   }
 
   // The rest of the histograms require the load to have commit and be relevant.
-  if (!has_commit_ || !renderer_tracked())
+  if (info.time_to_commit.is_zero() || !renderer_tracked())
     return;
 
+  if (EventOccurredInForeground(info.time_to_commit, info)) {
+    PAGE_LOAD_HISTOGRAM(kHistogramCommit, info.time_to_commit);
+  } else {
+    PAGE_LOAD_HISTOGRAM(kBackgroundHistogramCommit, info.time_to_commit);
+  }
+
   // The rest of the timing histograms require us to have received IPCs from the
   // renderer. Record UMA for how often this occurs (usually for quickly aborted
   // loads). For now, don't update observers if this is the case.
@@ -291,17 +318,12 @@
       PAGE_LOAD_HISTOGRAM(kBackgroundHistogramLoad, timing_.load_event_start);
     }
   }
-  if (timing_.first_layout.is_zero()) {
-    RecordCommittedEvent(RELEVANT_LOAD_FAILED_BEFORE_FIRST_LAYOUT,
-                         HasBackgrounded());
-  } else {
+  if (!timing_.first_layout.is_zero()) {
     if (EventOccurredInForeground(timing_.first_layout, info)) {
       PAGE_LOAD_HISTOGRAM(kHistogramFirstLayout, timing_.first_layout);
-      RecordCommittedEvent(RELEVANT_LOAD_SUCCESSFUL_FIRST_LAYOUT, false);
     } else {
       PAGE_LOAD_HISTOGRAM(kBackgroundHistogramFirstLayout,
                           timing_.first_layout);
-      RecordCommittedEvent(RELEVANT_LOAD_SUCCESSFUL_FIRST_LAYOUT, true);
     }
   }
   if (!timing_.first_paint.is_zero()) {
@@ -365,22 +387,8 @@
   }
 }
 
-// RecordCommittedEvent needs a backgrounded input because we need to special
-// case a few events that need either precise timing measurements, or different
-// logic than simply "Did I background before logging this event?"
-void PageLoadTracker::RecordCommittedEvent(CommittedRelevantLoadEvent event,
-                                           bool backgrounded) {
-  if (backgrounded) {
-    UMA_HISTOGRAM_ENUMERATION(kBackgroundCommittedEvents, event,
-                              RELEVANT_LOAD_LAST_ENTRY);
-  } else {
-    UMA_HISTOGRAM_ENUMERATION(kCommittedEvents, event,
-                              RELEVANT_LOAD_LAST_ENTRY);
-  }
-}
-
 void PageLoadTracker::RecordRappor(const PageLoadExtraInfo& info) {
-  if (!info.has_commit)
+  if (info.time_to_commit.is_zero())
     return;
   DCHECK(!committed_url().is_empty());
   rappor::RapporService* rappor_service =
@@ -397,7 +405,8 @@
     uint64_t bucket_index = RapporHistogramBucketIndex(first_contentful_paint);
     sample->SetFlagsField("Bucket", uint64_t(1) << bucket_index,
                           kNumRapporHistogramBuckets);
-    // The IsSlow flag is just a one bit boolean if the first layout was > 10s.
+    // The IsSlow flag is just a one bit boolean if the first contentful paint
+    // was > 10s.
     sample->SetFlagsField("IsSlow", first_contentful_paint.InSecondsF() >= 10,
                           1);
     rappor_service->RecordSampleObj(kRapporMetricsNameCoarseTiming,
diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer.h b/components/page_load_metrics/browser/metrics_web_contents_observer.h
index d0927d29..403bae9 100644
--- a/components/page_load_metrics/browser/metrics_web_contents_observer.h
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer.h
@@ -36,6 +36,7 @@
 class PageLoadTracker;
 
 // These constants are for keeping the tests in sync.
+const char kHistogramCommit[] = "PageLoad.Timing2.NavigationToCommit";
 const char kHistogramFirstLayout[] = "PageLoad.Timing2.NavigationToFirstLayout";
 const char kHistogramFirstTextPaint[] =
     "PageLoad.Timing2.NavigationToFirstTextPaint";
@@ -47,6 +48,8 @@
     "PageLoad.Timing2.NavigationToFirstImagePaint";
 const char kHistogramFirstContentfulPaint[] =
     "PageLoad.Timing2.NavigationToFirstContentfulPaint";
+const char kBackgroundHistogramCommit[] =
+    "PageLoad.Timing2.NavigationToCommit.Background";
 const char kBackgroundHistogramFirstLayout[] =
     "PageLoad.Timing2.NavigationToFirstLayout.Background";
 const char kBackgroundHistogramFirstTextPaint[] =
@@ -78,11 +81,8 @@
     "PageLoad.Timing2.NavigationToFirstBackground.BeforeCommit";
 
 const char kProvisionalEvents[] = "PageLoad.Events.Provisional";
-const char kCommittedEvents[] = "PageLoad.Events.Committed";
 const char kBackgroundProvisionalEvents[] =
     "PageLoad.Events.Provisional.Background";
-const char kBackgroundCommittedEvents[] =
-    "PageLoad.Events.Committed.Background";
 
 const char kErrorEvents[] = "PageLoad.Events.InternalError";
 
@@ -123,34 +123,6 @@
   PROVISIONAL_LOAD_LAST_ENTRY
 };
 
-// CommittedRelevantLoadEvents are events that occur on committed loads that the
-// MetricsWebContentsObserver tracks. Note events are only captured for
-// committed loads that:
-//  - Are http/https.
-//  - Not same-page navigations.
-//  - Are not navigations to an error page.
-// We only know these things about a navigation post-commit.
-//
-// If you add elements to this enum, make sure you update the enum
-// value in histograms.xml. Only add elements to the end to prevent
-// inconsistencies between versions.
-enum CommittedRelevantLoadEvent {
-  // When a load that eventually commits started. This cannot be logged until
-  // commit time, but it represents when the actual page load started. Thus, it
-  // only separates into .Background when a page load starts backgrounded.
-  RELEVANT_LOAD_STARTED,
-
-  // These two events are disjoint. Sum them to find the total number of
-  // committed loads that are tracked.
-  RELEVANT_LOAD_FAILED_BEFORE_FIRST_LAYOUT,
-  RELEVANT_LOAD_SUCCESSFUL_FIRST_LAYOUT,
-
-  // TODO(csharrison) once first paint metrics are in place, add new events.
-
-  // Add values before this final count.
-  RELEVANT_LOAD_LAST_ENTRY
-};
-
 // These errors are internal to the page_load_metrics subsystem and do not
 // reflect actual errors that occur during a page load.
 //
@@ -184,6 +156,12 @@
   // occur if the browser filters loads less aggressively than the renderer.
   ERR_NO_IPCS_RECEIVED,
 
+  // Tracks frequency with which we record an abort time that occurred before
+  // navigation start. This is expected to happen in some cases (see comments in
+  // cc file for details). We use this error counter to understand how often it
+  // happens.
+  ERR_ABORT_BEFORE_NAVIGATION_START,
+
   // Add values before this final count.
   ERR_LAST_ENTRY
 };
@@ -219,8 +197,6 @@
   // Returns true if the timing was successfully updated.
   bool UpdateTiming(const PageLoadTiming& timing);
   void RecordProvisionalEvent(ProvisionalLoadEvent event);
-  void RecordCommittedEvent(CommittedRelevantLoadEvent event,
-                            bool backgrounded);
   bool HasBackgrounded();
 
   void set_renderer_tracked(bool renderer_tracked);
@@ -234,8 +210,8 @@
   // If the user performs some abort-like action while we are tracking this page
   // load, notify the tracker. Note that we may not classify this as an abort if
   // we've already performed a first paint.
-  void NotifyAbort(UserAbortType abort_type, base::TimeTicks timestamp);
-  void UpdateAbort(UserAbortType abort_type, base::TimeTicks timestamp);
+  void NotifyAbort(UserAbortType abort_type, const base::TimeTicks& timestamp);
+  void UpdateAbort(UserAbortType abort_type, const base::TimeTicks& timestamp);
 
  private:
   PageLoadExtraInfo GetPageLoadMetricsInfo();
@@ -244,15 +220,19 @@
 
   void RecordTimingHistograms(const PageLoadExtraInfo& info);
   void RecordRappor(const PageLoadExtraInfo& info);
+  void UpdateAbortInternal(UserAbortType abort_type,
+                           const base::TimeTicks& timestamp);
 
   // Whether the renderer should be sending timing IPCs to this page load.
   bool renderer_tracked_;
 
-  bool has_commit_;
-
   // The navigation start in TimeTicks, not the wall time reported by Blink.
   const base::TimeTicks navigation_start_;
 
+  // Time this navigation was committed, or zero if this navigation hasn't
+  // committed yet.
+  base::TimeTicks commit_time_;
+
   // Will be ABORT_NONE if we have not aborted this load yet. Otherwise will
   // be the first abort action the user performed.
   UserAbortType abort_type_;
diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc b/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
index 026f0dd..d8074fb 100644
--- a/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
+++ b/components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc
@@ -53,8 +53,6 @@
   MetricsWebContentsObserverTest()
       : num_provisional_events_(0),
       num_provisional_events_bg_(0),
-      num_committed_events_(0),
-      num_committed_events_bg_(0),
       num_errors_(0) {}
 
   void SetUp() override {
@@ -89,19 +87,6 @@
     }
   }
 
-  void CheckCommittedEvent(CommittedRelevantLoadEvent event,
-                           int count,
-                           bool background) {
-    if (background) {
-      histogram_tester_.ExpectBucketCount(kBackgroundCommittedEvents, event,
-                                          count);
-      num_committed_events_bg_ += count;
-    } else {
-      histogram_tester_.ExpectBucketCount(kCommittedEvents, event, count);
-      num_committed_events_ += count;
-    }
-  }
-
   void CheckErrorEvent(InternalErrorLoadEvent error, int count) {
     histogram_tester_.ExpectBucketCount(kErrorEvents, error, count);
     num_errors_ += count;
@@ -110,11 +95,8 @@
   void CheckTotalEvents() {
     histogram_tester_.ExpectTotalCount(kProvisionalEvents,
                                        num_provisional_events_);
-    histogram_tester_.ExpectTotalCount(kCommittedEvents, num_committed_events_);
     histogram_tester_.ExpectTotalCount(kBackgroundProvisionalEvents,
                                        num_provisional_events_bg_);
-    histogram_tester_.ExpectTotalCount(kBackgroundCommittedEvents,
-                                       num_committed_events_bg_);
     histogram_tester_.ExpectTotalCount(kErrorEvents, num_errors_);
   }
 
@@ -126,8 +108,6 @@
  private:
   int num_provisional_events_;
   int num_provisional_events_bg_;
-  int num_committed_events_;
-  int num_committed_events_bg_;
   int num_errors_;
 
   DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverTest);
@@ -207,6 +187,7 @@
   // But we should keep the timing info and log it when we get another
   // navigation.
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
+  histogram_tester_.ExpectTotalCount(kHistogramCommit, 1);
   histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0);
   histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
   histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 1);
@@ -235,6 +216,7 @@
   // Navigate again to force histogram recording.
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
 
+  histogram_tester_.ExpectTotalCount(kHistogramCommit, 1);
   histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0);
   histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
   histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 1);
@@ -279,6 +261,7 @@
 
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
 
+  histogram_tester_.ExpectTotalCount(kHistogramCommit, 2);
   histogram_tester_.ExpectBucketCount(kHistogramFirstLayout,
                                       first_layout_1.InMilliseconds(), 1);
   histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 2);
@@ -324,6 +307,7 @@
   // Navigate again to force histogram recording.
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
 
+  histogram_tester_.ExpectTotalCount(kBackgroundHistogramCommit, 1);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramDomContentLoaded, 0);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramLoad, 0);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramFirstLayout, 1);
@@ -331,6 +315,7 @@
                                       first_layout.InMilliseconds(), 1);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramFirstTextPaint, 0);
 
+  histogram_tester_.ExpectTotalCount(kHistogramCommit, 0);
   histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0);
   histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
   histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 0);
@@ -382,6 +367,7 @@
   // Navigate again to force histogram recording.
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
 
+  histogram_tester_.ExpectTotalCount(kBackgroundHistogramCommit, 0);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramDomContentLoaded, 0);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramLoad, 0);
   histogram_tester_.ExpectTotalCount(kBackgroundHistogramFirstLayout, 1);
@@ -392,6 +378,7 @@
                                       timing.first_text_paint.InMilliseconds(),
                                       1);
 
+  histogram_tester_.ExpectTotalCount(kHistogramCommit, 1);
   histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 1);
   histogram_tester_.ExpectBucketCount(
       kHistogramDomContentLoaded,
@@ -435,6 +422,7 @@
   // Navigate again to see if the timing updated for the foregrounded load.
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
 
+  histogram_tester_.ExpectTotalCount(kHistogramCommit, 1);
   histogram_tester_.ExpectTotalCount(kHistogramDomContentLoaded, 0);
   histogram_tester_.ExpectTotalCount(kHistogramLoad, 0);
   histogram_tester_.ExpectTotalCount(kHistogramFirstLayout, 1);
@@ -526,7 +514,6 @@
   web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
 
   CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
-  CheckCommittedEvent(RELEVANT_LOAD_STARTED, 1, false);
   CheckErrorEvent(ERR_IPC_FROM_BAD_URL_SCHEME, 1);
   CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
   CheckTotalEvents();
@@ -555,75 +542,6 @@
   CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
 }
 
-TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
-  PageLoadTiming timing;
-  timing.navigation_start = base::Time::FromDoubleT(10);
-
-  content::WebContentsTester* web_contents_tester =
-      content::WebContentsTester::For(web_contents());
-  web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
-
-  observer_->OnMessageReceived(
-      PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
-      main_rfh());
-  // Navigate again to force histogram logging.
-  web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
-
-  CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
-  CheckCommittedEvent(RELEVANT_LOAD_STARTED, 2, false);
-  CheckCommittedEvent(RELEVANT_LOAD_FAILED_BEFORE_FIRST_LAYOUT, 1, false);
-  CheckTotalEvents();
-}
-
-TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutInForegroundEvent) {
-  PageLoadTiming timing;
-  timing.navigation_start = base::Time::FromDoubleT(10);
-  timing.first_layout = base::TimeDelta::FromMilliseconds(100);
-
-  content::WebContentsTester* web_contents_tester =
-      content::WebContentsTester::For(web_contents());
-  web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
-
-  observer_->OnMessageReceived(
-      PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
-      main_rfh());
-  // Navigate again to force histogram logging.
-  web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
-
-  CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
-  CheckCommittedEvent(RELEVANT_LOAD_STARTED, 2, false);
-  CheckCommittedEvent(RELEVANT_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, false);
-  CheckTotalEvents();
-}
-
-TEST_F(MetricsWebContentsObserverTest,
-       SuccessfulFirstLayoutInBackgroundEvent) {
-  PageLoadTiming timing;
-  timing.navigation_start = base::Time::FromDoubleT(1);
-  timing.first_layout = base::TimeDelta::FromSeconds(30);
-
-  content::WebContentsTester* web_contents_tester =
-      content::WebContentsTester::For(web_contents());
-  // Background the tab.
-  observer_->WasHidden();
-  web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
-
-  observer_->OnMessageReceived(
-      PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
-      main_rfh());
-
-  observer_->WasShown();
-  // Navigate again to force histogram logging.
-  web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
-
-  CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, true);
-  CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, false);
-  CheckCommittedEvent(RELEVANT_LOAD_STARTED, 1, true);
-  CheckCommittedEvent(RELEVANT_LOAD_STARTED, 1, false);
-  CheckCommittedEvent(RELEVANT_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, true);
-  CheckTotalEvents();
-}
-
 TEST_F(MetricsWebContentsObserverTest, BadIPC) {
   PageLoadTiming timing;
   timing.navigation_start = base::Time::FromDoubleT(10);
@@ -642,7 +560,6 @@
       main_rfh());
 
   CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, false);
-  CheckCommittedEvent(RELEVANT_LOAD_STARTED, 1, false);
   CheckErrorEvent(ERR_BAD_TIMING_IPC, 1);
   CheckTotalEvents();
 }
diff --git a/components/page_load_metrics/browser/page_load_metrics_observer.cc b/components/page_load_metrics/browser/page_load_metrics_observer.cc
index 7036706..6c5015c 100644
--- a/components/page_load_metrics/browser/page_load_metrics_observer.cc
+++ b/components/page_load_metrics/browser/page_load_metrics_observer.cc
@@ -10,14 +10,15 @@
     const base::TimeDelta& first_background_time,
     const base::TimeDelta& first_foreground_time,
     bool started_in_foreground,
-    bool has_commit,
+    const base::TimeDelta& time_to_commit,
     UserAbortType abort_type,
     const base::TimeDelta& time_to_abort)
     : first_background_time(first_background_time),
       first_foreground_time(first_foreground_time),
       started_in_foreground(started_in_foreground),
-      has_commit(has_commit),
+      time_to_commit(time_to_commit),
       abort_type(abort_type),
-      time_to_abort(time_to_abort) {}
+      time_to_abort(time_to_abort) {
+}
 
 }  // namespace page_load_metrics
diff --git a/components/page_load_metrics/browser/page_load_metrics_observer.h b/components/page_load_metrics/browser/page_load_metrics_observer.h
index 2d3d0f75..d8c50a55 100644
--- a/components/page_load_metrics/browser/page_load_metrics_observer.h
+++ b/components/page_load_metrics/browser/page_load_metrics_observer.h
@@ -49,7 +49,7 @@
   PageLoadExtraInfo(const base::TimeDelta& first_background_time,
                     const base::TimeDelta& first_foreground_time,
                     bool started_in_foreground,
-                    bool has_commit,
+                    const base::TimeDelta& time_to_commit,
                     UserAbortType abort_type,
                     const base::TimeDelta& time_to_abort);
 
@@ -66,8 +66,9 @@
   // True if the page load started in the foreground.
   const bool started_in_foreground;
 
-  // True if the page load committed and received its first bytes of data.
-  const bool has_commit;
+  // Time from navigation start until commit. If the page load did not commit,
+  // |time_to_commit| will be zero.
+  const base::TimeDelta time_to_commit;
 
   // The abort time and time to abort for this page load. If the page was not
   // aborted, |abort_type| will be |ABORT_NONE| and |time_to_abort| will be
diff --git a/ios/chrome/browser/BUILD.gn b/ios/chrome/browser/BUILD.gn
index 0e9879a..2ffc147a 100644
--- a/ios/chrome/browser/BUILD.gn
+++ b/ios/chrome/browser/BUILD.gn
@@ -309,6 +309,8 @@
     "signin/account_reconcilor_factory.h",
     "signin/account_tracker_service_factory.cc",
     "signin/account_tracker_service_factory.h",
+    "signin/browser_state_data_remover.h",
+    "signin/browser_state_data_remover.mm",
     "signin/chrome_identity_service_observer_bridge.h",
     "signin/chrome_identity_service_observer_bridge.mm",
     "signin/constants.h",
diff --git a/ios/chrome/browser/signin/browser_state_data_remover.h b/ios/chrome/browser/signin/browser_state_data_remover.h
new file mode 100644
index 0000000..910e12ab
--- /dev/null
+++ b/ios/chrome/browser/signin/browser_state_data_remover.h
@@ -0,0 +1,42 @@
+// Copyright 2014 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.
+
+#ifndef IOS_CHROME_BROWSER_SIGNIN_BROWSER_STATE_DATA_REMOVER_H_
+#define IOS_CHROME_BROWSER_SIGNIN_BROWSER_STATE_DATA_REMOVER_H_
+
+#include "base/ios/block_types.h"
+#include "base/mac/scoped_nsobject.h"
+#include "ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h"
+
+namespace ios {
+class ChromeBrowserState;
+}
+
+// Helper that wipes all the data in the given browser state. This deletes all
+// browsing data and all the bookmarks.
+class BrowserStateDataRemover {
+ public:
+  explicit BrowserStateDataRemover(ios::ChromeBrowserState* browser_state);
+  ~BrowserStateDataRemover();
+
+  // If set then the last username will be removed from the browser state prefs
+  // after the data has been wiped.
+  void SetForgetLastUsername();
+
+  // Wipes all the data in the browser state and invokes |callback| when done.
+  // This can be called only once, and this object deletes itself after invoking
+  // the callback.
+  void RemoveBrowserStateData(ProceduralBlock callback);
+
+ private:
+  void NotifyWithDetails(
+      const IOSChromeBrowsingDataRemover::NotificationDetails& details);
+
+  ios::ChromeBrowserState* browser_state_;
+  base::scoped_nsprotocol<ProceduralBlock> callback_;
+  IOSChromeBrowsingDataRemover::CallbackSubscription callback_subscription_;
+  bool forget_last_username_;
+};
+
+#endif  // IOS_CHROME_BROWSER_SIGNIN_BROWSER_STATE_DATA_REMOVER_H_
diff --git a/ios/chrome/browser/signin/browser_state_data_remover.mm b/ios/chrome/browser/signin/browser_state_data_remover.mm
new file mode 100644
index 0000000..4e7dccb
--- /dev/null
+++ b/ios/chrome/browser/signin/browser_state_data_remover.mm
@@ -0,0 +1,86 @@
+// Copyright 2014 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.
+
+#import "ios/chrome/browser/signin/browser_state_data_remover.h"
+
+#include "base/logging.h"
+#include "base/message_loop/message_loop.h"
+#include "base/prefs/pref_service.h"
+#include "components/bookmarks/browser/bookmark_model.h"
+#include "components/signin/core/common/signin_pref_names.h"
+#include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
+#import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h"
+#import "ios/chrome/browser/ui/commands/clear_browsing_data_command.h"
+#include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h"
+
+using bookmarks::BookmarkNode;
+
+namespace {
+const int kRemoveAllDataMask = ~0;
+}
+
+BrowserStateDataRemover::BrowserStateDataRemover(
+    ios::ChromeBrowserState* browser_state)
+    : browser_state_(browser_state), forget_last_username_(false) {
+  callback_subscription_ =
+      IOSChromeBrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback(
+          base::Bind(&BrowserStateDataRemover::NotifyWithDetails,
+                     base::Unretained(this)));
+}
+
+BrowserStateDataRemover::~BrowserStateDataRemover() {
+}
+
+void BrowserStateDataRemover::SetForgetLastUsername() {
+  forget_last_username_ = true;
+}
+
+void BrowserStateDataRemover::RemoveBrowserStateData(ProceduralBlock callback) {
+  DCHECK(!callback_);
+  callback_.reset([callback copy]);
+
+  base::scoped_nsobject<ClearBrowsingDataCommand> command(
+      [[ClearBrowsingDataCommand alloc]
+          initWithBrowserState:browser_state_
+                          mask:kRemoveAllDataMask]);
+
+  UIWindow* mainWindow = [[UIApplication sharedApplication] keyWindow];
+  DCHECK(mainWindow);
+  [mainWindow chromeExecuteCommand:command];
+}
+
+void BrowserStateDataRemover::NotifyWithDetails(
+    const IOSChromeBrowsingDataRemover::NotificationDetails& details) {
+  // Remove bookmarks once all browsing data was removed.
+  bookmarks::BookmarkModel* bookmarkModel =
+      ios::BookmarkModelFactory::GetForBrowserState(browser_state_);
+  DCHECK(bookmarkModel->loaded())
+      << "Sync is started lazily by the profile once the bookmark model is "
+      << "loaded. Expecting the bookmark model to be loaded when the user "
+      << "attempts to swap his accounts.";
+  bookmarkModel->RemoveAllUserBookmarks();
+
+  bookmarks::BookmarkClient* client = bookmarkModel->client();
+  const BookmarkNode* root = bookmarkModel->root_node();
+  for (int i = 0; i < root->child_count(); ++i) {
+    // Check that remaining bookmarks are all not user-editable.
+    if (!client->CanBeEditedByUser(root->GetChild(i)))
+      continue;
+    CHECK(root->GetChild(i)->empty()) << "Failed to remove all user bookmarks.";
+  }
+
+  if (details.removal_mask != kRemoveAllDataMask) {
+    NOTREACHED() << "Unexpected partial remove browsing data request "
+                 << "(removal mask = " << details.removal_mask << ")";
+    return;
+  }
+
+  if (forget_last_username_)
+    browser_state_->GetPrefs()->ClearPref(prefs::kGoogleServicesLastUsername);
+
+  if (callback_)
+    callback_.get()();
+
+  base::MessageLoop::current()->DeleteSoon(FROM_HERE, this);
+}
diff --git a/ios/chrome/ios_chrome.gyp b/ios/chrome/ios_chrome.gyp
index 949bd8a..59a41d41 100644
--- a/ios/chrome/ios_chrome.gyp
+++ b/ios/chrome/ios_chrome.gyp
@@ -461,6 +461,8 @@
         'browser/signin/account_reconcilor_factory.h',
         'browser/signin/account_tracker_service_factory.cc',
         'browser/signin/account_tracker_service_factory.h',
+        'browser/signin/browser_state_data_remover.h',
+        'browser/signin/browser_state_data_remover.mm',
         'browser/signin/chrome_identity_service_observer_bridge.h',
         'browser/signin/chrome_identity_service_observer_bridge.mm',
         'browser/signin/constants.h',
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm
index 3c2d386..59aaca3 100644
--- a/ios/web/web_state/ui/crw_web_controller.mm
+++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -1565,7 +1565,8 @@
     // processed.
     _containerView.reset(
         [[CRWWebControllerContainerView alloc] initWithDelegate:self]);
-    self.containerView.frame = [[UIScreen mainScreen] bounds];
+    self.containerView.frame =
+        [UIApplication sharedApplication].keyWindow.bounds;
     [self.containerView addGestureRecognizer:[self touchTrackingRecognizer]];
     [self.containerView setAccessibilityIdentifier:web::kContainerViewID];
     // Is |currentUrl| a web scheme or native chrome scheme.
diff --git a/net/base/ip_endpoint.cc b/net/base/ip_endpoint.cc
index 00ac3d9..8fe2aed 100644
--- a/net/base/ip_endpoint.cc
+++ b/net/base/ip_endpoint.cc
@@ -8,6 +8,7 @@
 
 #if defined(OS_WIN)
 #include <winsock2.h>
+#include <ws2bth.h>
 #elif defined(OS_POSIX)
 #include <netinet/in.h>
 #endif
@@ -28,6 +29,52 @@
 const socklen_t kSockaddrInSize = sizeof(struct sockaddr_in);
 const socklen_t kSockaddrIn6Size = sizeof(struct sockaddr_in6);
 
+// Extracts the address and port portions of a sockaddr.
+bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr,
+                              socklen_t sock_addr_len,
+                              const uint8_t** address,
+                              size_t* address_len,
+                              uint16_t* port) {
+  if (sock_addr->sa_family == AF_INET) {
+    if (sock_addr_len < static_cast<socklen_t>(sizeof(struct sockaddr_in)))
+      return false;
+    const struct sockaddr_in* addr =
+        reinterpret_cast<const struct sockaddr_in*>(sock_addr);
+    *address = reinterpret_cast<const uint8_t*>(&addr->sin_addr);
+    *address_len = kIPv4AddressSize;
+    if (port)
+      *port = base::NetToHost16(addr->sin_port);
+    return true;
+  }
+
+  if (sock_addr->sa_family == AF_INET6) {
+    if (sock_addr_len < static_cast<socklen_t>(sizeof(struct sockaddr_in6)))
+      return false;
+    const struct sockaddr_in6* addr =
+        reinterpret_cast<const struct sockaddr_in6*>(sock_addr);
+    *address = reinterpret_cast<const uint8_t*>(&addr->sin6_addr);
+    *address_len = kIPv6AddressSize;
+    if (port)
+      *port = base::NetToHost16(addr->sin6_port);
+    return true;
+  }
+
+#if defined(OS_WIN)
+  if (sock_addr->sa_family == AF_BTH) {
+    if (sock_addr_len < static_cast<socklen_t>(sizeof(SOCKADDR_BTH)))
+      return false;
+    const SOCKADDR_BTH* addr = reinterpret_cast<const SOCKADDR_BTH*>(sock_addr);
+    *address = reinterpret_cast<const uint8_t*>(&addr->btAddr);
+    *address_len = kBluetoothAddressSize;
+    if (port)
+      *port = static_cast<uint16_t>(addr->port);
+    return true;
+  }
+#endif
+
+  return false;  // Unrecognized |sa_family|.
+}
+
 }  // namespace
 
 IPEndPoint::IPEndPoint() : port_(0) {}
diff --git a/net/base/net_util.cc b/net/base/net_util.cc
index e4258ae..52c8bf8 100644
--- a/net/base/net_util.cc
+++ b/net/base/net_util.cc
@@ -16,7 +16,6 @@
 #include <windows.h>
 #include <iphlpapi.h>
 #include <winsock2.h>
-#include <ws2bth.h>
 #pragma comment(lib, "iphlpapi.lib")
 #elif defined(OS_POSIX)
 #include <fcntl.h>
@@ -292,78 +291,6 @@
   memcpy(addr, other.addr, addr_len);
 }
 
-// Extracts the address and port portions of a sockaddr.
-bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr,
-                              socklen_t sock_addr_len,
-                              const uint8_t** address,
-                              size_t* address_len,
-                              uint16_t* port) {
-  if (sock_addr->sa_family == AF_INET) {
-    if (sock_addr_len < static_cast<socklen_t>(sizeof(struct sockaddr_in)))
-      return false;
-    const struct sockaddr_in* addr =
-        reinterpret_cast<const struct sockaddr_in*>(sock_addr);
-    *address = reinterpret_cast<const uint8_t*>(&addr->sin_addr);
-    *address_len = kIPv4AddressSize;
-    if (port)
-      *port = base::NetToHost16(addr->sin_port);
-    return true;
-  }
-
-  if (sock_addr->sa_family == AF_INET6) {
-    if (sock_addr_len < static_cast<socklen_t>(sizeof(struct sockaddr_in6)))
-      return false;
-    const struct sockaddr_in6* addr =
-        reinterpret_cast<const struct sockaddr_in6*>(sock_addr);
-    *address = reinterpret_cast<const uint8_t*>(&addr->sin6_addr);
-    *address_len = kIPv6AddressSize;
-    if (port)
-      *port = base::NetToHost16(addr->sin6_port);
-    return true;
-  }
-
-#if defined(OS_WIN)
-  if (sock_addr->sa_family == AF_BTH) {
-    if (sock_addr_len < static_cast<socklen_t>(sizeof(SOCKADDR_BTH)))
-      return false;
-    const SOCKADDR_BTH* addr =
-        reinterpret_cast<const SOCKADDR_BTH*>(sock_addr);
-    *address = reinterpret_cast<const uint8_t*>(&addr->btAddr);
-    *address_len = kBluetoothAddressSize;
-    if (port)
-      *port = static_cast<uint16_t>(addr->port);
-    return true;
-  }
-#endif
-
-  return false;  // Unrecognized |sa_family|.
-}
-
-std::string NetAddressToString(const struct sockaddr* sa,
-                               socklen_t sock_addr_len) {
-  const uint8_t* address;
-  size_t address_len;
-  if (!GetIPAddressFromSockAddr(sa, sock_addr_len, &address,
-                                &address_len, NULL)) {
-    NOTREACHED();
-    return std::string();
-  }
-  return IPAddressToString(address, address_len);
-}
-
-std::string NetAddressToStringWithPort(const struct sockaddr* sa,
-                                       socklen_t sock_addr_len) {
-  const uint8_t* address;
-  size_t address_len;
-  uint16_t port;
-  if (!GetIPAddressFromSockAddr(sa, sock_addr_len, &address,
-                                &address_len, &port)) {
-    NOTREACHED();
-    return std::string();
-  }
-  return IPAddressToStringWithPort(address, address_len, port);
-}
-
 std::string GetHostName() {
 #if defined(OS_NACL)
   NOTIMPLEMENTED();
diff --git a/net/base/net_util.h b/net/base/net_util.h
index 1d3d158..85851b8 100644
--- a/net/base/net_util.h
+++ b/net/base/net_util.h
@@ -88,24 +88,6 @@
   struct sockaddr* const addr;
 };
 
-// Extracts the IP address and port portions of a sockaddr. |port| is optional,
-// and will not be filled in if NULL.
-bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr,
-                              socklen_t sock_addr_len,
-                              const unsigned char** address,
-                              size_t* address_len,
-                              uint16_t* port);
-
-// Same as IPAddressToString() but for a sockaddr. This output will not include
-// the IPv6 scope ID.
-NET_EXPORT std::string NetAddressToString(const struct sockaddr* sa,
-                                          socklen_t sock_addr_len);
-
-// Same as IPAddressToStringWithPort() but for a sockaddr. This output will not
-// include the IPv6 scope ID.
-NET_EXPORT std::string NetAddressToStringWithPort(const struct sockaddr* sa,
-                                                  socklen_t sock_addr_len);
-
 // Returns the hostname of the current system. Returns empty string on failure.
 NET_EXPORT std::string GetHostName();
 
diff --git a/net/base/net_util_unittest.cc b/net/base/net_util_unittest.cc
index 2704707d..7b08291 100644
--- a/net/base/net_util_unittest.cc
+++ b/net/base/net_util_unittest.cc
@@ -60,28 +60,6 @@
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
 const uint16_t kLocalhostLookupPort = 80;
 
-// Fills in sockaddr for the given 32-bit address (IPv4.)
-// |bytes| should be an array of length 4.
-void MakeIPv4Address(const uint8_t* bytes, int port, SockaddrStorage* storage) {
-  memset(&storage->addr_storage, 0, sizeof(storage->addr_storage));
-  storage->addr_len = sizeof(struct sockaddr_in);
-  struct sockaddr_in* addr4 = reinterpret_cast<sockaddr_in*>(storage->addr);
-  addr4->sin_port = base::HostToNet16(port);
-  addr4->sin_family = AF_INET;
-  memcpy(&addr4->sin_addr, bytes, 4);
-}
-
-// Fills in sockaddr for the given 128-bit address (IPv6.)
-// |bytes| should be an array of length 16.
-void MakeIPv6Address(const uint8_t* bytes, int port, SockaddrStorage* storage) {
-  memset(&storage->addr_storage, 0, sizeof(storage->addr_storage));
-  storage->addr_len = sizeof(struct sockaddr_in6);
-  struct sockaddr_in6* addr6 = reinterpret_cast<sockaddr_in6*>(storage->addr);
-  addr6->sin6_port = base::HostToNet16(port);
-  addr6->sin6_family = AF_INET6;
-  memcpy(&addr6->sin6_addr, bytes, 16);
-}
-
 bool HasEndpoint(const IPEndPoint& endpoint, const AddressList& addresses) {
   for (const auto& address : addresses) {
     if (endpoint == address)
@@ -327,66 +305,6 @@
   }
 }
 
-TEST(NetUtilTest, NetAddressToString_IPv4) {
-  const struct {
-    uint8_t addr[4];
-    const char* const result;
-  } tests[] = {
-    {{0, 0, 0, 0}, "0.0.0.0"},
-    {{127, 0, 0, 1}, "127.0.0.1"},
-    {{192, 168, 0, 1}, "192.168.0.1"},
-  };
-
-  for (size_t i = 0; i < arraysize(tests); ++i) {
-    SockaddrStorage storage;
-    MakeIPv4Address(tests[i].addr, 80, &storage);
-    std::string result = NetAddressToString(storage.addr, storage.addr_len);
-    EXPECT_EQ(std::string(tests[i].result), result);
-  }
-}
-
-TEST(NetUtilTest, NetAddressToString_IPv6) {
-  const struct {
-    uint8_t addr[16];
-    const char* const result;
-  } tests[] = {
-    {{0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, 0xFE, 0xDC, 0xBA,
-      0x98, 0x76, 0x54, 0x32, 0x10},
-     "fedc:ba98:7654:3210:fedc:ba98:7654:3210"},
-  };
-
-  for (size_t i = 0; i < arraysize(tests); ++i) {
-    SockaddrStorage storage;
-    MakeIPv6Address(tests[i].addr, 80, &storage);
-    EXPECT_EQ(std::string(tests[i].result),
-        NetAddressToString(storage.addr, storage.addr_len));
-  }
-}
-
-TEST(NetUtilTest, NetAddressToStringWithPort_IPv4) {
-  uint8_t addr[] = {127, 0, 0, 1};
-  SockaddrStorage storage;
-  MakeIPv4Address(addr, 166, &storage);
-  std::string result = NetAddressToStringWithPort(storage.addr,
-                                                  storage.addr_len);
-  EXPECT_EQ("127.0.0.1:166", result);
-}
-
-TEST(NetUtilTest, NetAddressToStringWithPort_IPv6) {
-  uint8_t addr[] = {
-      0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10, 0xFE, 0xDC, 0xBA,
-      0x98, 0x76, 0x54, 0x32, 0x10
-  };
-  SockaddrStorage storage;
-  MakeIPv6Address(addr, 361, &storage);
-  std::string result = NetAddressToStringWithPort(storage.addr,
-                                                  storage.addr_len);
-
-  // May fail on systems that don't support IPv6.
-  if (!result.empty())
-    EXPECT_EQ("[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:361", result);
-}
-
 TEST(NetUtilTest, GetHostName) {
   // We can't check the result of GetHostName() directly, since the result
   // will differ across machines. Our goal here is to simply exercise the
diff --git a/net/base/network_interfaces_win.cc b/net/base/network_interfaces_win.cc
index 2f53f44..e8480d2 100644
--- a/net/base/network_interfaces_win.cc
+++ b/net/base/network_interfaces_win.cc
@@ -6,6 +6,7 @@
 
 #include <iphlpapi.h>
 #include <wlanapi.h>
+#pragma comment(lib, "iphlpapi.lib")
 
 #include <algorithm>
 
diff --git a/net/ftp/ftp_network_layer.cc b/net/ftp/ftp_network_layer.cc
index e8053dee..c8658d0 100644
--- a/net/ftp/ftp_network_layer.cc
+++ b/net/ftp/ftp_network_layer.cc
@@ -18,12 +18,12 @@
 FtpNetworkLayer::~FtpNetworkLayer() {
 }
 
-FtpTransaction* FtpNetworkLayer::CreateTransaction() {
+scoped_ptr<FtpTransaction> FtpNetworkLayer::CreateTransaction() {
   if (suspended_)
-    return NULL;
+    return scoped_ptr<FtpTransaction>();
 
-  return new FtpNetworkTransaction(session_->host_resolver(),
-                                   ClientSocketFactory::GetDefaultFactory());
+  return make_scoped_ptr(new FtpNetworkTransaction(
+      session_->host_resolver(), ClientSocketFactory::GetDefaultFactory()));
 }
 
 void FtpNetworkLayer::Suspend(bool suspend) {
diff --git a/net/ftp/ftp_network_layer.h b/net/ftp/ftp_network_layer.h
index d848ae8..877f8c01 100644
--- a/net/ftp/ftp_network_layer.h
+++ b/net/ftp/ftp_network_layer.h
@@ -22,7 +22,7 @@
   ~FtpNetworkLayer() override;
 
   // FtpTransactionFactory methods:
-  FtpTransaction* CreateTransaction() override;
+  scoped_ptr<FtpTransaction> CreateTransaction() override;
   void Suspend(bool suspend) override;
 
  private:
diff --git a/net/ftp/ftp_transaction_factory.h b/net/ftp/ftp_transaction_factory.h
index db32fbe..6b7cdb9 100644
--- a/net/ftp/ftp_transaction_factory.h
+++ b/net/ftp/ftp_transaction_factory.h
@@ -5,6 +5,7 @@
 #ifndef NET_FTP_FTP_TRANSACTION_FACTORY_H_
 #define NET_FTP_FTP_TRANSACTION_FACTORY_H_
 
+#include "base/memory/scoped_ptr.h"
 #include "net/base/net_export.h"
 
 namespace net {
@@ -17,7 +18,7 @@
   virtual ~FtpTransactionFactory() {}
 
   // Creates a FtpTransaction object.
-  virtual FtpTransaction* CreateTransaction() = 0;
+  virtual scoped_ptr<FtpTransaction> CreateTransaction() = 0;
 
   // Suspends the creation of new transactions. If |suspend| is false, creation
   // of new transactions is resumed.
diff --git a/net/socket/socket_net_log_params.cc b/net/socket/socket_net_log_params.cc
index 64012f4..e699d20 100644
--- a/net/socket/socket_net_log_params.cc
+++ b/net/socket/socket_net_log_params.cc
@@ -45,8 +45,10 @@
     socklen_t address_len,
     NetLogCaptureMode /* capture_mode */) {
   scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
-  dict->SetString("source_address",
-                  NetAddressToStringWithPort(net_address, address_len));
+  IPEndPoint ipe;
+  bool result = ipe.FromSockAddr(net_address, address_len);
+  DCHECK(result);
+  dict->SetString("source_address", ipe.ToString());
   return dict.Pass();
 }
 
diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc
index e422d03..596363f 100644
--- a/net/url_request/url_request_ftp_job.cc
+++ b/net/url_request/url_request_ftp_job.cc
@@ -158,7 +158,7 @@
   DCHECK(!ftp_transaction_);
 
   ftp_request_info_.url = request_->url();
-  ftp_transaction_.reset(ftp_transaction_factory_->CreateTransaction());
+  ftp_transaction_ = ftp_transaction_factory_->CreateTransaction();
 
   // No matter what, we want to report our status as IO pending since we will
   // be notifying our consumer asynchronously via OnStartCompleted.
diff --git a/net/url_request/url_request_ftp_job_unittest.cc b/net/url_request/url_request_ftp_job_unittest.cc
index f51f033..ab1a7d9 100644
--- a/net/url_request/url_request_ftp_job_unittest.cc
+++ b/net/url_request/url_request_ftp_job_unittest.cc
@@ -141,7 +141,9 @@
 
 class MockFtpTransactionFactory : public FtpTransactionFactory {
  public:
-  FtpTransaction* CreateTransaction() override { return NULL; }
+  scoped_ptr<FtpTransaction> CreateTransaction() override {
+    return scoped_ptr<FtpTransaction>();
+  }
 
   void Suspend(bool suspend) override {}
 };
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index a2caddc..9763438d 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -311,6 +311,8 @@
 
 crbug.com/487281 [ Mac ] fast/forms/select/menulist-narrow-width.html [ Failure ]
 
+crbug.com/572094 [ Win Mac Debug ] fast/forms/suggestion-picker/date-suggestion-picker-appearance-zoom200.html [ Timeout Failure Pass ]
+
 crbug.com/543110 [ Mac ] fast/text/international/text-shaping-arabic.html [ Failure ]
 
 crbug.com/548904 [ Linux Win ] fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure Pass ]
@@ -595,6 +597,14 @@
 # Test sometimes flakes on most platforms
 crbug.com/571531 imported/csswg-test/css-flexbox-1/css-flexbox-height-animation-stretch.html [ Pass Failure ]
 
+# failing on XP after https://codereview.chromium.org/1548053002
+crbug.com/492664 [ XP ] imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100.html [ Failure ]
+crbug.com/492664 [ XP ] imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100.html [ Failure ]
+crbug.com/492664 [ XP ] imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100.html [ Failure ]
+crbug.com/492664 [ XP ] imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100.html [ Failure ]
+crbug.com/492664 [ XP ] imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100.html [ Failure ]
+crbug.com/492664 [ XP ] imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100.html [ Failure ]
+
 # Either "combo" or split should run: http://testthewebforward.org/docs/css-naming.html
 crbug.com/410320 imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html [ Skip ]
 crbug.com/492664 imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001q.html [ Failure ]
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/percentage-heights-000.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/percentage-heights-000.html
new file mode 100644
index 0000000..372b57e1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/percentage-heights-000.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<title>CSS Flexbox: Basic percentage heights</title>
+<link rel="author" title="Google" href="https://www.google.com/" />
+<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/#main-sizing" />
+<meta name="flags" content="dom" />
+<meta name="assert" content="This test checks that percentage heights on a flex item correctly resolve against the container." />
+<style>
+.flexbox {
+    display: flex;
+    background-color: #aaa;
+    position: relative;
+}
+.flexbox :nth-child(1) {
+    background-color: blue;
+}
+.flexbox :nth-child(2) {
+    background-color: green;
+}
+.flexbox :nth-child(3) {
+    background-color: red;
+}
+
+.flexbox > div {
+    width: 40%;
+    height: 40%;
+}
+.column {
+    flex-flow: column wrap;
+    width: 100px;
+    height: 100px;
+    align-content: flex-start;
+}
+</style>
+<script src="../../../resources/testharness.js"></script>
+<script src="../../../resources/testharnessreport.js"></script>
+<script src="support/check-layout-th.js"></script>
+<body onload="checkLayout('.flexbox')">
+<div id=log></div>
+
+<div class="flexbox column">
+    <div data-expected-height="40" data-offset-x="0" data-offset-y="0"></div>
+    <div data-expected-height="40" data-offset-x="0" data-offset-y="40"></div>
+    <div data-expected-height="40" data-offset-x="40" data-offset-y="0"></div>
+</div>
+
+<div class="flexbox column">
+    <div data-expected-height="40" data-offset-x="0" data-offset-y="0" style="margin-bottom: 10%"></div>
+    <div data-expected-height="40" data-offset-x="40" data-offset-y="0" style="margin-bottom: 20%"></div>
+    <div data-expected-height="40" data-offset-x="40" data-offset-y="60"></div>
+</div>
+
+<div class="flexbox column">
+    <div data-expected-height="20" data-offset-x="0" data-offset-y="0" style="flex: 1; min-height: 0; max-height: 20%"></div>
+    <div data-expected-height="40" data-offset-x="0" data-offset-y="20"></div>
+    <div data-expected-height="40" data-offset-x="0" data-offset-y="60"></div>
+</div>
+
+<div class="flexbox column" style="writing-mode: vertical-rl">
+    <div data-expected-width="40" data-offset-x="60" data-offset-y="0"></div>
+    <div data-expected-width="40" data-offset-x="20" data-offset-y="0"></div>
+    <div data-expected-width="40" data-offset-x="60" data-offset-y="40"></div>
+</div>
+
+<div class="flexbox column" style="writing-mode: vertical-rl">
+    <div data-expected-width="40" data-offset-x="60" data-offset-y="0" style="margin-bottom: 10%"></div>
+    <div data-expected-width="40" data-offset-x="20" data-offset-y="0" style="margin-bottom: 20%"></div>
+    <div data-expected-width="40" data-offset-x="60" data-offset-y="60"></div>
+</div>
+
+<div class="flexbox column" style="writing-mode: vertical-rl">
+    <div data-expected-width="20" data-offset-x="80" data-offset-y="0" style="flex: 1; min-width: 0; max-width: 20%"></div>
+    <div data-expected-width="40" data-offset-x="40" data-offset-y="0"></div>
+    <div data-expected-width="40" data-offset-x="0" data-offset-y="0"></div>
+</div>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/support/check-layout-th.js b/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/support/check-layout-th.js
new file mode 100644
index 0000000..07f7d5d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/support/check-layout-th.js
@@ -0,0 +1,190 @@
+(function() {
+// Test is initiated from body.onload, so explicit done() call is required.
+setup({ explicit_done: true });
+
+function checkSubtreeExpectedValues(t, parent, prefix)
+{
+    var checkedLayout = checkExpectedValues(t, parent, prefix);
+    Array.prototype.forEach.call(parent.childNodes, function(node) {
+        checkedLayout |= checkSubtreeExpectedValues(t, node, prefix);
+    });
+    return checkedLayout;
+}
+
+function checkAttribute(output, node, attribute)
+{
+    var result = node.getAttribute && node.getAttribute(attribute);
+    output.checked |= !!result;
+    return result;
+}
+
+function assert_tolerance(actual, expected, message)
+{
+    if (isNaN(expected) || Math.abs(actual - expected) >= 1) {
+        assert_equals(actual, Number(expected), message);
+    }
+}
+
+function checkExpectedValues(t, node, prefix)
+{
+    var output = { checked: false };
+
+    var expectedWidth = checkAttribute(output, node, "data-expected-width");
+    if (expectedWidth) {
+        assert_tolerance(node.offsetWidth, expectedWidth, prefix + "width");
+    }
+
+    var expectedHeight = checkAttribute(output, node, "data-expected-height");
+    if (expectedHeight) {
+        assert_tolerance(node.offsetHeight, expectedHeight, prefix + "height");
+    }
+
+    var expectedOffset = checkAttribute(output, node, "data-offset-x");
+    if (expectedOffset) {
+        assert_tolerance(node.offsetLeft, expectedOffset, prefix + "offsetLeft");
+    }
+
+    var expectedOffset = checkAttribute(output, node, "data-offset-y");
+    if (expectedOffset) {
+        assert_tolerance(node.offsetTop, expectedOffset, prefix + "offsetTop");
+    }
+
+    var expectedWidth = checkAttribute(output, node, "data-expected-client-width");
+    if (expectedWidth) {
+        assert_tolerance(node.clientWidth, expectedWidth, prefix + "clientWidth");
+    }
+
+    var expectedHeight = checkAttribute(output, node, "data-expected-client-height");
+    if (expectedHeight) {
+        assert_tolerance(node.clientHeight, expectedHeight, prefix + "clientHeight");
+    }
+
+    var expectedWidth = checkAttribute(output, node, "data-expected-scroll-width");
+    if (expectedWidth) {
+        assert_tolerance(node.scrollWidth, expectedWidth, prefix + "scrollWidth");
+    }
+
+    var expectedHeight = checkAttribute(output, node, "data-expected-scroll-height");
+    if (expectedHeight) {
+        assert_tolerance(node.scrollHeight, expectedHeight, prefix + "scrollHeight");
+    }
+
+    var expectedOffset = checkAttribute(output, node, "data-total-x");
+    if (expectedOffset) {
+        var totalLeft = node.clientLeft + node.offsetLeft;
+        assert_tolerance(totalLeft, expectedOffset, prefix +
+                         "clientLeft+offsetLeft (" + node.clientLeft + " + " + node.offsetLeft + ")");
+    }
+
+    var expectedOffset = checkAttribute(output, node, "data-total-y");
+    if (expectedOffset) {
+        var totalTop = node.clientTop + node.offsetTop;
+        assert_tolerance(totalTop, expectedOffset, prefix +
+                         "clientTop+offsetTop (" + node.clientTop + " + " + node.offsetTop + ")");
+    }
+
+    var expectedDisplay = checkAttribute(output, node, "data-expected-display");
+    if (expectedDisplay) {
+        var actualDisplay = getComputedStyle(node).display;
+        assert_equals(actualDisplay, expectedDisplay, prefix + "display");
+    }
+
+    var expectedPaddingTop = checkAttribute(output, node, "data-expected-padding-top");
+    if (expectedPaddingTop) {
+        var actualPaddingTop = getComputedStyle(node).paddingTop;
+        // Trim the unit "px" from the output.
+        actualPaddingTop = actualPaddingTop.slice(0, -2);
+        assert_equals(actualPaddingTop, expectedPaddingTop, prefix + "padding-top");
+    }
+
+    var expectedPaddingBottom = checkAttribute(output, node, "data-expected-padding-bottom");
+    if (expectedPaddingBottom) {
+        var actualPaddingBottom = getComputedStyle(node).paddingBottom;
+        // Trim the unit "px" from the output.
+        actualPaddingBottom = actualPaddingBottom.slice(0, -2);
+        assert_equals(actualPaddingBottom, expectedPaddingBottom, prefix + "padding-bottom");
+    }
+
+    var expectedPaddingLeft = checkAttribute(output, node, "data-expected-padding-left");
+    if (expectedPaddingLeft) {
+        var actualPaddingLeft = getComputedStyle(node).paddingLeft;
+        // Trim the unit "px" from the output.
+        actualPaddingLeft = actualPaddingLeft.slice(0, -2);
+        assert_equals(actualPaddingLeft, expectedPaddingLeft, prefix + "padding-left");
+    }
+
+    var expectedPaddingRight = checkAttribute(output, node, "data-expected-padding-right");
+    if (expectedPaddingRight) {
+        var actualPaddingRight = getComputedStyle(node).paddingRight;
+        // Trim the unit "px" from the output.
+        actualPaddingRight = actualPaddingRight.slice(0, -2);
+        assert_equals(actualPaddingRight, expectedPaddingRight, prefix + "padding-right");
+    }
+
+    var expectedMarginTop = checkAttribute(output, node, "data-expected-margin-top");
+    if (expectedMarginTop) {
+        var actualMarginTop = getComputedStyle(node).marginTop;
+        // Trim the unit "px" from the output.
+        actualMarginTop = actualMarginTop.slice(0, -2);
+        assert_equals(actualMarginTop, expectedMarginTop, prefix + "margin-top");
+    }
+
+    var expectedMarginBottom = checkAttribute(output, node, "data-expected-margin-bottom");
+    if (expectedMarginBottom) {
+        var actualMarginBottom = getComputedStyle(node).marginBottom;
+        // Trim the unit "px" from the output.
+        actualMarginBottom = actualMarginBottom.slice(0, -2);
+        assert_equals(actualMarginBottom, expectedMarginBottom, prefix + "margin-bottom");
+    }
+
+    var expectedMarginLeft = checkAttribute(output, node, "data-expected-margin-left");
+    if (expectedMarginLeft) {
+        var actualMarginLeft = getComputedStyle(node).marginLeft;
+        // Trim the unit "px" from the output.
+        actualMarginLeft = actualMarginLeft.slice(0, -2);
+        assert_equals(actualMarginLeft, expectedMarginLeft, prefix + "margin-left");
+    }
+
+    var expectedMarginRight = checkAttribute(output, node, "data-expected-margin-right");
+    if (expectedMarginRight) {
+        var actualMarginRight = getComputedStyle(node).marginRight;
+        // Trim the unit "px" from the output.
+        actualMarginRight = actualMarginRight.slice(0, -2);
+        assert_equals(actualMarginRight, expectedMarginRight, prefix + "margin-right");
+    }
+
+    return output.checked;
+}
+
+window.checkLayout = function(selectorList, outputContainer)
+{
+    if (!selectorList) {
+        console.error("You must provide a CSS selector of nodes to check.");
+        return;
+    }
+    var nodes = document.querySelectorAll(selectorList);
+    var testNumber = 0;
+    nodes = Array.prototype.slice.call(nodes);
+    nodes.reverse();
+    var checkedLayout = false;
+    Array.prototype.forEach.call(nodes, function(node) {
+        test(function(t) {
+            var container = node.parentNode.className == 'container' ? node.parentNode : node;
+            var prefix = "\n" + container.outerHTML + "\n";
+            var passed = false;
+            try {
+                checkedLayout |= checkExpectedValues(t, node.parentNode, prefix);
+                checkedLayout |= checkSubtreeExpectedValues(t, node, prefix);
+                passed = true;
+            } finally {
+                checkedLayout |= !passed;
+            }
+        }, selectorList + ' ' + String(++testNumber));
+    });
+    if (!checkedLayout) {
+        console.error("No valid data-* attributes found in selector list : " + selectorList);
+    }
+    done();
+};
+
+})();
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/support/flexbox.css b/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/support/flexbox.css
new file mode 100644
index 0000000..83502cd1
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-flexbox-1/support/flexbox.css
@@ -0,0 +1,143 @@
+.flexbox {
+    display: -webkit-flex;
+    display: flex;
+}
+.inline-flexbox {
+    display: -webkit-inline-flex;
+    display: inline-flex;
+}
+
+.flex-none {
+    -webkit-flex: none;
+    flex: none;
+}
+.flex-auto {
+    -webkit-flex: auto;
+    flex: auto;
+}
+.flex-one {
+    -webkit-flex: 1;
+    flex: 1;
+}
+.flex-one-one-auto {
+    -webkit-flex: 1 1 auto;
+    flex: 1 1 auto;
+}
+
+.row {
+    -webkit-flex-direction: row;
+    flex-direction: row;
+}
+.row-reverse {
+    -webkit-flex-direction: row-reverse;
+    flex-direction: row-reverse;
+}
+.column {
+    -webkit-flex-direction: column;
+    flex-direction: column;
+}
+.column-reverse {
+    -webkit-flex-direction: column-reverse;
+    flex-direction: column-reverse;
+}
+
+.wrap {
+    -webkit-flex-wrap: wrap;
+    flex-wrap: wrap;
+}
+.wrap-reverse {
+    -webkit-flex-wrap: wrap-reverse;
+    flex-wrap: wrap-reverse;
+}
+
+.align-content-flex-start {
+    -webkit-align-content: flex-start;
+    align-content: flex-start;
+}
+.align-content-flex-end {
+    -webkit-align-content: flex-end;
+    align-content: flex-end;
+}
+.align-content-center {
+    -webkit-align-content: center;
+    align-content: center;
+}
+.align-content-space-between {
+    -webkit-align-content: space-between;
+    align-content: space-between;
+}
+.align-content-space-around {
+    -webkit-align-content: space-around;
+    align-content: space-around;
+}
+.align-content-stretch {
+    -webkit-align-content: stretch;
+    align-content: stretch;
+}
+
+.align-items-flex-start {
+    -webkit-align-items: flex-start;
+    align-items: flex-start;
+}
+.align-items-flex-end {
+    -webkit-align-items: flex-end;
+    align-items: flex-end;
+}
+.align-items-center {
+    -webkit-align-items: center;
+    align-items: center;
+}
+.align-items-baseline {
+    -webkit-align-items: baseline;
+    align-items: baseline;
+}
+.align-items-stretch {
+    -webkit-align-items: stretch;
+    align-items: stretch;
+}
+
+.align-self-auto {
+    -webkit-align-self: auto;
+    align-self: auto;
+}
+.align-self-flex-start {
+    -webkit-align-self: flex-start;
+    align-self: flex-start;
+}
+.align-self-flex-end {
+    -webkit-align-self: flex-end;
+    align-self: flex-end;
+}
+.align-self-center {
+    -webkit-align-self: center;
+    align-self: center;
+}
+.align-self-baseline {
+    -webkit-align-self: baseline;
+    align-self: baseline;
+}
+.align-self-stretch {
+    -webkit-align-self: stretch;
+    align-self: stretch;
+}
+
+.justify-content-flex-start {
+    -webkit-justify-content: flex-start;
+    justify-content: flex-start;
+}
+.justify-content-flex-end {
+    -webkit-justify-content: flex-end;
+    justify-content: flex-end;
+}
+.justify-content-center {
+    -webkit-justify-content: center;
+    justify-content: center;
+}
+.justify-content-space-between {
+    -webkit-justify-content: space-between;
+    justify-content: space-between;
+}
+.justify-content-space-around {
+    -webkit-justify-content: space-around;
+    justify-content: space-around;
+}
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html
index d375c30..178e3034 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit with orthogonal children</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit with orthogonal children">
-<meta name="flags" content="ahem combo">
+<meta name="flags" content="ahem dom combo">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,99 +51,99 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>1: Shrink-to-fit inline-block with a child of orthogonal block</h3>
 <div class="test">
-    <div class="inline-block"><div class="target">XX</div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="target">HH</div></div><span class="next">ZZ</span>
 </div>
 <h3>2: Shrink-to-fit inline-block with a child of orthogonal inline</h3>
 <div class="test">
-    <div class="inline-block"><span class="target">XX</span></div><span class="next">YY</span>
+    <div class="inline-block"><span class="target">HH</span></div><span class="next">ZZ</span>
 </div>
 <h3>3: Shrink-to-fit inline-block with a child of orthogonal block with borders</h3>
 <div class="test">
-    <div class="inline-block"><div class="target border">XXX</div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="target border">HHH</div></div><span class="next">ZZ</span>
 </div>
 <h3>4: Shrink-to-fit inline-block with a child of orthogonal inline with borders</h3>
 <div class="test">
-    <div class="inline-block"><span class="target border">XXX</span></div><span class="next">YY</span>
+    <div class="inline-block"><span class="target border">HHH</span></div><span class="next">ZZ</span>
 </div>
 <h3>5: Shrink-to-fit inline-block with a child of orthogonal block in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><div class="target">XX</div></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><div class="target">HH</div></div></div><span class="next">ZZ</span>
 </div>
 <h3>6: Shrink-to-fit inline-block with a child of orthogonal inline in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><span class="target">XX</span></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><span class="target">HH</span></div></div><span class="next">ZZ</span>
 </div>
 <h3>7: Shrink-to-fit inline-block with a child of orthogonal block with borders in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><div class="target border">XXX</div></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><div class="target border">HHH</div></div></div><span class="next">ZZ</span>
 </div>
 <h3>8: Shrink-to-fit inline-block with a child of orthogonal inline with borders in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><span class="target border">XXX</span></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><span class="target border">HHH</span></div></div><span class="next">ZZ</span>
 </div>
 <h3>9: Shrink-to-fit float with a child of orthogonal block</h3>
 <div class="test">
-    <div class="float"><div class="target">XX</div></div><span class="next">YY</span>
+    <div class="float"><div class="target">HH</div></div><span class="next">ZZ</span>
 </div>
 <h3>10: Shrink-to-fit float with a child of orthogonal inline</h3>
 <div class="test">
-    <div class="float"><span class="target">XX</span></div><span class="next">YY</span>
+    <div class="float"><span class="target">HH</span></div><span class="next">ZZ</span>
 </div>
 <h3>11: Shrink-to-fit float with a child of orthogonal block with borders</h3>
 <div class="test">
-    <div class="float"><div class="target border">XXX</div></div><span class="next">YY</span>
+    <div class="float"><div class="target border">HHH</div></div><span class="next">ZZ</span>
 </div>
 <h3>12: Shrink-to-fit float with a child of orthogonal inline with borders</h3>
 <div class="test">
-    <div class="float"><span class="target border">XXX</span></div><span class="next">YY</span>
+    <div class="float"><span class="target border">HHH</span></div><span class="next">ZZ</span>
 </div>
 <h3>13: Shrink-to-fit float with a child of orthogonal block in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><div class="target">XX</div></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><div class="target">HH</div></div></div><span class="next">ZZ</span>
 </div>
 <h3>14: Shrink-to-fit float with a child of orthogonal inline in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><span class="target">XX</span></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><span class="target">HH</span></div></div><span class="next">ZZ</span>
 </div>
 <h3>15: Shrink-to-fit float with a child of orthogonal block with borders in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><div class="target border">XXX</div></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><div class="target border">HHH</div></div></div><span class="next">ZZ</span>
 </div>
 <h3>16: Shrink-to-fit float with a child of orthogonal inline with borders in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><span class="target border">XXX</span></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><span class="target border">HHH</span></div></div><span class="next">ZZ</span>
 </div>
 <h3>17: Shrink-to-fit table-cell with a child of orthogonal block</h3>
 <div class="test">
-    <table><tr><td><div class="target">XX</div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="target">HH</div></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>18: Shrink-to-fit table-cell with a child of orthogonal inline</h3>
 <div class="test">
-    <table><tr><td><span class="target">XX</span></td><td class="next">YY</td></tr></table>
+    <table><tr><td><span class="target">HH</span></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>19: Shrink-to-fit table-cell with a child of orthogonal block with borders</h3>
 <div class="test">
-    <table><tr><td><div class="target border">XXX</div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="target border">HHH</div></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>20: Shrink-to-fit table-cell with a child of orthogonal inline with borders</h3>
 <div class="test">
-    <table><tr><td><span class="target border">XXX</span></td><td class="next">YY</td></tr></table>
+    <table><tr><td><span class="target border">HHH</span></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>21: Shrink-to-fit table-cell with a child of orthogonal block in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><div class="target">XX</div></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><div class="target">HH</div></div></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>22: Shrink-to-fit table-cell with a child of orthogonal inline in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><span class="target">XX</span></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><span class="target">HH</span></div></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>23: Shrink-to-fit table-cell with a child of orthogonal block with borders in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><div class="target border">XXX</div></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><div class="target border">HHH</div></div></td><td class="next">ZZ</td></tr></table>
 </div>
 <h3>24: Shrink-to-fit table-cell with a child of orthogonal inline with borders in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><span class="target border">XXX</span></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><span class="target border">HHH</span></div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001a.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001a.html
index e6deb402..c6b81ce 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001a.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001a.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>1: Shrink-to-fit inline-block with a child of orthogonal block</h3>
 <div class="test">
-    <div class="inline-block"><div class="target">XX</div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="target">HH</div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001b.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001b.html
index 6516534..4ca7e6d 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001b.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001b.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal inline</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal inline">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>2: Shrink-to-fit inline-block with a child of orthogonal inline</h3>
 <div class="test">
-    <div class="inline-block"><span class="target">XX</span></div><span class="next">YY</span>
+    <div class="inline-block"><span class="target">HH</span></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001c.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001c.html
index 57674c35..3c7573cf 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001c.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001c.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal block with borders</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal block with borders">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>3: Shrink-to-fit inline-block with a child of orthogonal block with borders</h3>
 <div class="test">
-    <div class="inline-block"><div class="target border">XXX</div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="target border">HHH</div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001d.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001d.html
index eec1d91..f96c78f 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001d.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001d.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal inline with borders</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal inline with borders">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>4: Shrink-to-fit inline-block with a child of orthogonal inline with borders</h3>
 <div class="test">
-    <div class="inline-block"><span class="target border">XXX</span></div><span class="next">YY</span>
+    <div class="inline-block"><span class="target border">HHH</span></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001e.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001e.html
index 29ceee3..a26cba9 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001e.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001e.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal block in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal block in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>5: Shrink-to-fit inline-block with a child of orthogonal block in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><div class="target">XX</div></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><div class="target">HH</div></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001f.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001f.html
index 935b13e5..3c36805 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001f.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001f.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal inline in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal inline in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>6: Shrink-to-fit inline-block with a child of orthogonal inline in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><span class="target">XX</span></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><span class="target">HH</span></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001g.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001g.html
index 463f9bde..9ed0808 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001g.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001g.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal block with borders in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal block with borders in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>7: Shrink-to-fit inline-block with a child of orthogonal block with borders in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><div class="target border">XXX</div></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><div class="target border">HHH</div></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001h.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001h.html
index ebfa1c50..20a419c 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001h.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001h.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit inline-block with a child of orthogonal inline with borders in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit inline-block with a child of orthogonal inline with borders in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>8: Shrink-to-fit inline-block with a child of orthogonal inline with borders in inline-block</h3>
 <div class="test">
-    <div class="inline-block"><div class="inline-block"><span class="target border">XXX</span></div></div><span class="next">YY</span>
+    <div class="inline-block"><div class="inline-block"><span class="target border">HHH</span></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001i.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001i.html
index 8f6111bc..dbac844 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001i.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001i.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>9: Shrink-to-fit float with a child of orthogonal block</h3>
 <div class="test">
-    <div class="float"><div class="target">XX</div></div><span class="next">YY</span>
+    <div class="float"><div class="target">HH</div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001j.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001j.html
index 79d094f2..7b290ed 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001j.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001j.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal inline</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal inline">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>10: Shrink-to-fit float with a child of orthogonal inline</h3>
 <div class="test">
-    <div class="float"><span class="target">XX</span></div><span class="next">YY</span>
+    <div class="float"><span class="target">HH</span></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001k.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001k.html
index 4f3c9219..5a3f311 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001k.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001k.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal block with borders</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal block with borders">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>11: Shrink-to-fit float with a child of orthogonal block with borders</h3>
 <div class="test">
-    <div class="float"><div class="target border">XXX</div></div><span class="next">YY</span>
+    <div class="float"><div class="target border">HHH</div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001l.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001l.html
index 752f73ec..a6d723b4 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001l.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001l.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal inline with borders</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal inline with borders">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>12: Shrink-to-fit float with a child of orthogonal inline with borders</h3>
 <div class="test">
-    <div class="float"><span class="target border">XXX</span></div><span class="next">YY</span>
+    <div class="float"><span class="target border">HHH</span></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001m.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001m.html
index a9c4979..d650684 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001m.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001m.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal block in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal block in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>13: Shrink-to-fit float with a child of orthogonal block in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><div class="target">XX</div></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><div class="target">HH</div></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001n.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001n.html
index adf9788..1b47898 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001n.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001n.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal inline in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal inline in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>14: Shrink-to-fit float with a child of orthogonal inline in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><span class="target">XX</span></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><span class="target">HH</span></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001o.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001o.html
index a6d51f9..9a20f0a6 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001o.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001o.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal block with borders in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal block with borders in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>15: Shrink-to-fit float with a child of orthogonal block with borders in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><div class="target border">XXX</div></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><div class="target border">HHH</div></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001p.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001p.html
index a714b9f..9e3ffd58 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001p.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001p.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit float with a child of orthogonal inline with borders in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit float with a child of orthogonal inline with borders in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>16: Shrink-to-fit float with a child of orthogonal inline with borders in inline-block</h3>
 <div class="test">
-    <div class="float"><div class="inline-block"><span class="target border">XXX</span></div></div><span class="next">YY</span>
+    <div class="float"><div class="inline-block"><span class="target border">HHH</span></div></div><span class="next">ZZ</span>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001q.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001q.html
index 21a23cc..ab4ce54 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001q.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001q.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>17: Shrink-to-fit table-cell with a child of orthogonal block</h3>
 <div class="test">
-    <table><tr><td><div class="target">XX</div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="target">HH</div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001r.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001r.html
index f49e5c0..14b0cf0 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001r.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001r.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal inline</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal inline">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>18: Shrink-to-fit table-cell with a child of orthogonal inline</h3>
 <div class="test">
-    <table><tr><td><span class="target">XX</span></td><td class="next">YY</td></tr></table>
+    <table><tr><td><span class="target">HH</span></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001s.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001s.html
index 7e71feaf..028cb0b 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001s.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001s.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal block with borders</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal block with borders">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>19: Shrink-to-fit table-cell with a child of orthogonal block with borders</h3>
 <div class="test">
-    <table><tr><td><div class="target border">XXX</div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="target border">HHH</div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001t.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001t.html
index 2333cba1..7307c66 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001t.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001t.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal inline with borders</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal inline with borders">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>20: Shrink-to-fit table-cell with a child of orthogonal inline with borders</h3>
 <div class="test">
-    <table><tr><td><span class="target border">XXX</span></td><td class="next">YY</td></tr></table>
+    <table><tr><td><span class="target border">HHH</span></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001u.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001u.html
index d911a5c..cef5e46 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001u.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001u.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal block in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal block in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>21: Shrink-to-fit table-cell with a child of orthogonal block in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><div class="target">XX</div></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><div class="target">HH</div></div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001v.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001v.html
index a3b6092..5e61805 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001v.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001v.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal inline in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal inline in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>22: Shrink-to-fit table-cell with a child of orthogonal inline in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><span class="target">XX</span></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><span class="target">HH</span></div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001w.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001w.html
index 27905ad..19a8679 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001w.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001w.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal block with borders in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal block with borders in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>23: Shrink-to-fit table-cell with a child of orthogonal block with borders in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><div class="target border">XXX</div></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><div class="target border">HHH</div></div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001x.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001x.html
index 943c688a..4d379fb 100644
--- a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001x.html
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001x.html
@@ -1,9 +1,11 @@
 <!DOCTYPE html>
+<meta charset="utf-8">
 <title>CSS Writing Modes Test: Shrink-to-fit table-cell with a child of orthogonal inline with borders in inline-block</title>
-<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows" title="7.3. Orthogonal Flows">
 <meta name="assert" content="Shrink-to-fit table-cell with a child of orthogonal inline with borders in inline-block">
-<meta name="flags" content="ahem">
+<meta name="flags" content="ahem dom">
 <link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!--  2015-12-23  -->
 <script src="../../../resources/testharness.js"></script>
 <script src="../../../resources/testharnessreport.js"></script>
 <link rel="stylesheet" href="../../../resources/testharness.css">
@@ -14,7 +16,8 @@
 }
 .target {
     color:blue;
-    height:3em;
+    height:3em; /* height: 3em is not required. IE11 and Edge12 compute height to ICB height if
+    not set. We want the test to focus exclusively on shrink-to-fit algorithm. */
     writing-mode:vertical-rl;
 }
 .border {
@@ -48,7 +51,7 @@
 <p>If script is enabled, there should be one or more PASS and no FAIL.
 <h3>24: Shrink-to-fit table-cell with a child of orthogonal inline with borders in inline-block</h3>
 <div class="test">
-    <table><tr><td><div class="inline-block"><span class="target border">XXX</span></div></td><td class="next">YY</td></tr></table>
+    <table><tr><td><div class="inline-block"><span class="target border">HHH</span></div></td><td class="next">ZZ</td></tr></table>
 </div>
 </div>
 <script>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-mixed-001.png b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-mixed-vrl-002.png
similarity index 100%
rename from third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-mixed-001.png
rename to third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-mixed-vrl-002.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-upright-vrl-002.png b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-upright-vrl-002.png
new file mode 100644
index 0000000..8caab6e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/support/text-orientation-upright-vrl-002.png
Binary files differ
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100-expected.html
new file mode 100644
index 0000000..4253da3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100-expected.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-lr; text-orientation: mixed.</title>
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-lr;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: mixed;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">国国国国国国国国国国国国A国国国国国国国国国国国国国国AAA国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100.html
new file mode 100644
index 0000000..ce4911e25
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vlr-100.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-lr; text-orientation: mixed.</title>
+<link rel="match" href="text-orientation-mixed-vlr-100-ref.html">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-lr;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: mixed;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;=?@A</div>
+<div class="line">BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a</div>
+<div class="line">bcdefghijklmnopqrstuvwxyz{|}~</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line"> 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟</div>
+<div class="line">〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅう</div>
+<div class="line">ぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづて</div>
+<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆ</div>
+<div class="line">ょよらりるれろゎわゐゑをんゔゕゖ゛゜ゝゞゟ゠ァアィイゥウェエォオ</div>
+<div class="line">カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナ</div>
+<div class="line">ニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリ</div>
+<div class="line">ルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">!"#$%&'()*+,-./0123456789:;<=>?@</div>
+<div class="line">ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`</div>
+<div class="line">abcdefghijklmnopqrstuvwxyz{|}~⦅⦆</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100-expected.html
new file mode 100644
index 0000000..da97ab9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100-expected.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-rl; text-orientation: mixed.</title>
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-rl;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: mixed;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">国国国国国国国国国国国国A国国国国国国国国国国国国国国AAA国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100.html
new file mode 100644
index 0000000..d7ff10d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-mixed-vrl-100.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-rl; text-orientation: mixed.</title>
+<link rel="match" href="text-orientation-mixed-vrl-100-ref.html">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-rl;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: mixed;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;=?@A</div>
+<div class="line">BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a</div>
+<div class="line">bcdefghijklmnopqrstuvwxyz{|}~</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line"> 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟</div>
+<div class="line">〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅう</div>
+<div class="line">ぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづて</div>
+<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆ</div>
+<div class="line">ょよらりるれろゎわゐゑをんゔゕゖ゛゜ゝゞゟ゠ァアィイゥウェエォオ</div>
+<div class="line">カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナ</div>
+<div class="line">ニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリ</div>
+<div class="line">ルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">!"#$%&'()*+,-./0123456789:;<=>?@</div>
+<div class="line">ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`</div>
+<div class="line">abcdefghijklmnopqrstuvwxyz{|}~⦅⦆</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100-expected.html
new file mode 100644
index 0000000..a3854558
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100-expected.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-lr; text-orientation: sideways.</title>
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-lr;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: sideways;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100.html
new file mode 100644
index 0000000..bb6a415
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vlr-100.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-lr; text-orientation: sideways.</title>
+<link rel="match" href="text-orientation-sideways-vlr-100-ref.html">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-lr;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: sideways;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;=?@A</div>
+<div class="line">BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a</div>
+<div class="line">bcdefghijklmnopqrstuvwxyz{|}~</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line"> 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟</div>
+<div class="line">〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅう</div>
+<div class="line">ぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづて</div>
+<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆ</div>
+<div class="line">ょよらりるれろゎわゐゑをんゔゕゖ゛゜ゝゞゟ゠ァアィイゥウェエォオ</div>
+<div class="line">カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナ</div>
+<div class="line">ニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリ</div>
+<div class="line">ルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">!"#$%&'()*+,-./0123456789:;<=>?@</div>
+<div class="line">ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`</div>
+<div class="line">abcdefghijklmnopqrstuvwxyz{|}~⦅⦆</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100-expected.html
new file mode 100644
index 0000000..073eb12
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100-expected.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-rl; text-orientation: sideways.</title>
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-rl;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: sideways;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+<div class="line">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100.html
new file mode 100644
index 0000000..83815b3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-sideways-vrl-100.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-rl; text-orientation: sideways.</title>
+<link rel="match" href="text-orientation-sideways-vrl-100-ref.html">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-rl;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: sideways;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;=?@A</div>
+<div class="line">BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a</div>
+<div class="line">bcdefghijklmnopqrstuvwxyz{|}~</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line"> 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟</div>
+<div class="line">〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅう</div>
+<div class="line">ぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづて</div>
+<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆ</div>
+<div class="line">ょよらりるれろゎわゐゑをんゔゕゖ゛゜ゝゞゟ゠ァアィイゥウェエォオ</div>
+<div class="line">カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナ</div>
+<div class="line">ニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリ</div>
+<div class="line">ルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">!"#$%&'()*+,-./0123456789:;<=>?@</div>
+<div class="line">ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`</div>
+<div class="line">abcdefghijklmnopqrstuvwxyz{|}~⦅⦆</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100-expected.html
new file mode 100644
index 0000000..32970a3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100-expected.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-lr; text-orientation: upright.</title>
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-lr;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: upright;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100.html
new file mode 100644
index 0000000..9ab1cfd
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vlr-100.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-lr; text-orientation: upright.</title>
+<link rel="match" href="text-orientation-upright-vlr-100-ref.html">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-lr;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: upright;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;=?@A</div>
+<div class="line">BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a</div>
+<div class="line">bcdefghijklmnopqrstuvwxyz{|}~</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line"> 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟</div>
+<div class="line">〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅう</div>
+<div class="line">ぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづて</div>
+<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆ</div>
+<div class="line">ょよらりるれろゎわゐゑをんゔゕゖ゛゜ゝゞゟ゠ァアィイゥウェエォオ</div>
+<div class="line">カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナ</div>
+<div class="line">ニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリ</div>
+<div class="line">ルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">!"#$%&'()*+,-./0123456789:;<=>?@</div>
+<div class="line">ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`</div>
+<div class="line">abcdefghijklmnopqrstuvwxyz{|}~⦅⦆</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100-expected.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100-expected.html
new file mode 100644
index 0000000..bb0bdd6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100-expected.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-rl; text-orientation: upright.</title>
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-rl;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: upright;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+<div class="line">国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国国</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100.html b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100.html
new file mode 100644
index 0000000..1590c4c2
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/imported/csswg-test/css-writing-modes-3/text-orientation-upright-vrl-100.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: writing-mode: vertical-rl; text-orientation: upright.</title>
+<link rel="match" href="text-orientation-upright-vrl-100-ref.html">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#text-orientation">
+<meta name="flags" content="font">
+<link rel="author" title="Koji Ishii" href="mailto:kojiishi@gmail.com">
+<style>
+@font-face {
+    font-family: "orientation";
+    src: url("support/adobe-fonts/CSSHWOrientationTest.otf");
+}
+html {
+    writing-mode: vertical-rl;
+}
+.test {
+    font: 20px/1 "orientation";
+    height: 17em;
+    text-orientation: upright;
+}
+.line {
+    white-space: pre;
+}
+</style>
+<body>
+<div id="container">
+<div>U+0020-007E<div class="test">
+<div class="line"> !&#34;#$%&amp;&#39;()*+,-./0123456789:;=?@A</div>
+<div class="line">BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a</div>
+<div class="line">bcdefghijklmnopqrstuvwxyz{|}~</div>
+</div></div>
+<div>U+3000-30FF<div class="test">
+<div class="line"> 、。〃〄々〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟</div>
+<div class="line">〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾〿ぁあぃいぅう</div>
+<div class="line">ぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづて</div>
+<div class="line">でとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆ</div>
+<div class="line">ょよらりるれろゎわゐゑをんゔゕゖ゛゜ゝゞゟ゠ァアィイゥウェエォオ</div>
+<div class="line">カガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナ</div>
+<div class="line">ニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリ</div>
+<div class="line">ルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ</div>
+</div></div>
+<div>U+4E00-4E1F<div class="test">
+<div class="line">一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟</div>
+</div></div>
+<div>U+FF01-FF60<div class="test">
+<div class="line">!"#$%&'()*+,-./0123456789:;<=>?@</div>
+<div class="line">ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`</div>
+<div class="line">abcdefghijklmnopqrstuvwxyz{|}~⦅⦆</div>
+</div></div>
+</div>
+</body>
diff --git a/third_party/qcms/README.chromium b/third_party/qcms/README.chromium
index 4139e678c..e7211bd 100644
--- a/third_party/qcms/README.chromium
+++ b/third_party/qcms/README.chromium
@@ -127,6 +127,8 @@
    - http://code.google.com/p/chromium/issues/detail?id=565222
  - Add an API to check for profile media white point
    - http://code.google.com/p/chromium/issues/detail?id=565222
+ - Add a qcms_profile_get_white_point() api
+   - http://code.google.com/p/chromium/issues/detail?id=565222
 
 For the Chromium changes, since the import, in a patch format run:
   git diff b8456f38 src
diff --git a/third_party/qcms/src/iccread.c b/third_party/qcms/src/iccread.c
index 183840e..61b5312f 100644
--- a/third_party/qcms/src/iccread.c
+++ b/third_party/qcms/src/iccread.c
@@ -348,6 +348,19 @@
     return (wp.X != 0) && (wp.Y != 0) && (wp.Z != 0);
 }
 
+qcms_xyz_float qcms_profile_get_white_point(qcms_profile *profile)
+{
+    qcms_xyz_float wp = { 0.0f, 0.0f, 0.0f };
+
+    if (qcms_profile_has_white_point(profile)) {
+        wp.X = s15Fixed16Number_to_float(profile->mediaWhitePoint.X);
+        wp.Y = s15Fixed16Number_to_float(profile->mediaWhitePoint.Y);
+        wp.Z = s15Fixed16Number_to_float(profile->mediaWhitePoint.Z);
+    }
+
+    return wp;
+}
+
 #define TAG_bXYZ 0x6258595a
 #define TAG_gXYZ 0x6758595a
 #define TAG_rXYZ 0x7258595a
diff --git a/third_party/qcms/src/qcms.h b/third_party/qcms/src/qcms.h
index 790d2bc..4805375 100644
--- a/third_party/qcms/src/qcms.h
+++ b/third_party/qcms/src/qcms.h
@@ -95,6 +95,12 @@
 	qcms_CIE_xyY blue;
 } qcms_CIE_xyYTRIPLE;
 
+typedef struct {
+	float X;
+	float Y;
+	float Z;
+} qcms_xyz_float;
+
 qcms_profile* qcms_profile_create_rgb_with_gamma(
 		qcms_CIE_xyY white_point,
 		qcms_CIE_xyYTRIPLE primaries,
@@ -112,6 +118,7 @@
 
 qcms_bool qcms_profile_is_bogus(qcms_profile *profile);
 qcms_bool qcms_profile_has_white_point(qcms_profile *profile);
+qcms_xyz_float qcms_profile_get_white_point(qcms_profile *profile);
 qcms_intent qcms_profile_get_rendering_intent(qcms_profile *profile);
 qcms_color_space qcms_profile_get_color_space(qcms_profile *profile);
 unsigned qcms_profile_get_version(qcms_profile *profile);
diff --git a/tools/clang/scripts/package.py b/tools/clang/scripts/package.py
index 0a18d759..554bda4 100755
--- a/tools/clang/scripts/package.py
+++ b/tools/clang/scripts/package.py
@@ -171,13 +171,6 @@
       shutil.copy(src, dest)
       # Strip libraries.
       if sys.platform == 'darwin' and f.endswith('.dylib'):
-        # Fix LC_ID_DYLIB for the ASan dynamic libraries to be relative to
-        # @executable_path.
-        # TODO(glider): this is transitional. We'll need to fix the dylib
-        # name either in our build system, or in Clang. See also
-        # http://crbug.com/344836.
-        subprocess.call(['install_name_tool', '-id',
-                         '@executable_path/' + os.path.basename(dest), dest])
         subprocess.call(['strip', '-x', dest])
       elif (sys.platform.startswith('linux') and
             os.path.splitext(f)[1] in ['.so', '.a']):
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index 9db579d..dfb55cb 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -652,6 +652,15 @@
         os.path.join(LLVM_BUILD_DIR, 'lib/clang', VERSION, 'include/sanitizer'))
   # Static and dynamic libraries:
   CopyDirectoryContents(asan_rt_lib_src_dir, asan_rt_lib_dst_dir)
+  if sys.platform == 'darwin':
+    for dylib in glob.glob(os.path.join(asan_rt_lib_dst_dir, '*.dylib')):
+      # Fix LC_ID_DYLIB for the ASan dynamic libraries to be relative to
+      # @executable_path.
+      # TODO(glider): this is transitional. We'll need to fix the dylib
+      # name either in our build system, or in Clang. See also
+      # http://crbug.com/344836.
+      subprocess.call(['install_name_tool', '-id',
+                       '@executable_path/' + os.path.basename(dylib), dylib])
 
 
   if sys.platform == 'win32':
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 139236d..b2e7839 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -31839,6 +31839,10 @@
 <histogram name="PageLoad.Events.Committed" enum="CommittedLoadEvent">
   <owner>csharrison@chromium.org</owner>
   <owner>bmcquade@chromium.org</owner>
+  <obsolete>
+    Deprecated in favor of PageLoad.Timing2.NavigationToCommit and
+    PageLoad.AbortTiming.
+  </obsolete>
   <summary>
     Captures counts of load events post-commit, on relevant page loads (i.e.
     http/https, not same-page, not an error page). These events include aborts
@@ -31906,6 +31910,15 @@
   </summary>
 </histogram>
 
+<histogram name="PageLoad.Timing2.NavigationToCommit" units="milliseconds">
+  <owner>bmcquade@chromium.org</owner>
+  <owner>csharrison@chromium.org</owner>
+  <summary>
+    Measures the time from navigation timing's navigation start to the time the
+    navigation committed, for main frame documents.
+  </summary>
+</histogram>
+
 <histogram name="PageLoad.Timing2.NavigationToDOMContentLoadedEventFired"
     units="milliseconds">
   <owner>bmcquade@chromium.org</owner>
@@ -58282,6 +58295,10 @@
 </enum>
 
 <enum name="CommittedLoadEvent" type="int">
+  <obsolete>
+    Deprecated in favor of PageLoad.Timing2.NavigationToCommit and
+    PageLoad.AbortTiming.
+  </obsolete>
   <int value="0" label="Committed load started"/>
   <int value="1" label="Committed load failed before first layout"/>
   <int value="2" label="Successful first layout"/>
@@ -67684,6 +67701,7 @@
   <int value="2" label="IPC received from a frame we navigated away from"/>
   <int value="3" label="IPC received from a bad URL scheme"/>
   <int value="4" label="No IPCs received for this navigation"/>
+  <int value="5" label="Abort reported before navigation start"/>
 </enum>
 
 <enum name="InterruptReason" type="int">
@@ -83768,6 +83786,7 @@
              this event."/>
   <affected-histogram name="PageLoad.Events.Committed"/>
   <affected-histogram name="PageLoad.Events.Provisional"/>
+  <affected-histogram name="PageLoad.Timing2.NavigationToCommit"/>
   <affected-histogram
       name="PageLoad.Timing2.NavigationToDOMContentLoadedEventFired"/>
   <affected-histogram name="PageLoad.Timing2.NavigationToFirstContentfulPaint"/>
diff --git a/ui/gl/android/gl_jni_registrar.cc b/ui/gl/android/gl_jni_registrar.cc
index 91ae65f..29a332b 100644
--- a/ui/gl/android/gl_jni_registrar.cc
+++ b/ui/gl/android/gl_jni_registrar.cc
@@ -6,6 +6,7 @@
 
 #include "base/android/jni_android.h"
 #include "base/android/jni_registrar.h"
+#include "base/macros.h"
 #include "ui/gl/android/surface_texture.h"
 #include "ui/gl/android/surface_texture_listener.h"
 
diff --git a/ui/gl/android/surface_texture.h b/ui/gl/android/surface_texture.h
index c6ae704..56282ff 100644
--- a/ui/gl/android/surface_texture.h
+++ b/ui/gl/android/surface_texture.h
@@ -9,6 +9,7 @@
 
 #include "base/android/scoped_java_ref.h"
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "ui/gl/gl_export.h"
 
diff --git a/ui/gl/android/surface_texture_listener.h b/ui/gl/android/surface_texture_listener.h
index a11d2de2..c9d8ff5 100644
--- a/ui/gl/android/surface_texture_listener.h
+++ b/ui/gl/android/surface_texture_listener.h
@@ -9,6 +9,7 @@
 
 #include "base/android/scoped_java_ref.h"
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/sequenced_task_runner_helpers.h"
 #include "ui/gl/gl_export.h"
diff --git a/ui/gl/egl_util.cc b/ui/gl/egl_util.cc
index 17d91d1..77044f4 100644
--- a/ui/gl/egl_util.cc
+++ b/ui/gl/egl_util.cc
@@ -4,6 +4,8 @@
 
 #include "ui/gl/egl_util.h"
 
+#include "build/build_config.h"
+
 #if defined(OS_ANDROID)
 #include <EGL/egl.h>
 #else
diff --git a/ui/gl/egl_util.h b/ui/gl/egl_util.h
index e2b2ffc..d86e863 100644
--- a/ui/gl/egl_util.h
+++ b/ui/gl/egl_util.h
@@ -5,7 +5,8 @@
 #ifndef UI_GL_EGL_UTIL_H_
 #define UI_GL_EGL_UTIL_H_
 
-#include "base/basictypes.h"
+#include <stdint.h>
+
 #include "ui/gl/gl_export.h"
 
 namespace ui {
diff --git a/ui/gl/gl_api_unittest.cc b/ui/gl/gl_api_unittest.cc
index a5d1a9c1..08695b1 100644
--- a/ui/gl/gl_api_unittest.cc
+++ b/ui/gl/gl_api_unittest.cc
@@ -2,7 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stdint.h>
+
 #include "base/command_line.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gl/gl_context.h"
diff --git a/ui/gl/gl_bindings.cc b/ui/gl/gl_bindings.cc
index 0a1fd19..bb700c3 100644
--- a/ui/gl/gl_bindings.cc
+++ b/ui/gl/gl_bindings.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "build/build_config.h"
+
 #if defined(OS_WIN) || defined(USE_X11) || defined(OS_ANDROID) || defined(USE_OZONE)
 #include <EGL/egl.h>
 #endif
diff --git a/ui/gl/gl_bindings.h b/ui/gl/gl_bindings.h
index 699d9fe5..b570d00 100644
--- a/ui/gl/gl_bindings.h
+++ b/ui/gl/gl_bindings.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_GL_BINDINGS_H_
 #define UI_GL_GL_BINDINGS_H_
 
+#include <stdint.h>
+
 #include <string>
 
 // Includes the platform independent and platform dependent GL headers.
@@ -369,7 +371,7 @@
 typedef void (*OSMESAproc)();
 
 // Forward declare EGL types.
-typedef uint64 EGLuint64CHROMIUM;
+typedef uint64_t EGLuint64CHROMIUM;
 
 #include "gl_bindings_autogen_gl.h"
 #include "gl_bindings_autogen_osmesa.h"
diff --git a/ui/gl/gl_bindings_api_autogen_glx.h b/ui/gl/gl_bindings_api_autogen_glx.h
index 7efbae1..d36199ce 100644
--- a/ui/gl/gl_bindings_api_autogen_glx.h
+++ b/ui/gl/gl_bindings_api_autogen_glx.h
@@ -82,16 +82,16 @@
                                int* nelements) override;
 bool glXGetMscRateOMLFn(Display* dpy,
                         GLXDrawable drawable,
-                        int32* numerator,
-                        int32* denominator) override;
+                        int32_t* numerator,
+                        int32_t* denominator) override;
 void glXGetSelectedEventFn(Display* dpy,
                            GLXDrawable drawable,
                            unsigned long* mask) override;
 bool glXGetSyncValuesOMLFn(Display* dpy,
                            GLXDrawable drawable,
-                           int64* ust,
-                           int64* msc,
-                           int64* sbc) override;
+                           int64_t* ust,
+                           int64_t* msc,
+                           int64_t* sbc) override;
 XVisualInfo* glXGetVisualFromFBConfigFn(Display* dpy,
                                         GLXFBConfig config) override;
 int glXIsDirectFn(Display* dpy, GLXContext ctx) override;
diff --git a/ui/gl/gl_bindings_autogen_glx.cc b/ui/gl/gl_bindings_autogen_glx.cc
index edd08f5..02aee398 100644
--- a/ui/gl/gl_bindings_autogen_glx.cc
+++ b/ui/gl/gl_bindings_autogen_glx.cc
@@ -502,8 +502,8 @@
 
 static bool GL_BINDING_CALL Debug_glXGetMscRateOML(Display* dpy,
                                                    GLXDrawable drawable,
-                                                   int32* numerator,
-                                                   int32* denominator) {
+                                                   int32_t* numerator,
+                                                   int32_t* denominator) {
   GL_SERVICE_LOG("glXGetMscRateOML"
                  << "(" << static_cast<const void*>(dpy) << ", " << drawable
                  << ", " << static_cast<const void*>(numerator) << ", "
@@ -525,9 +525,9 @@
 
 static bool GL_BINDING_CALL Debug_glXGetSyncValuesOML(Display* dpy,
                                                       GLXDrawable drawable,
-                                                      int64* ust,
-                                                      int64* msc,
-                                                      int64* sbc) {
+                                                      int64_t* ust,
+                                                      int64_t* msc,
+                                                      int64_t* sbc) {
   GL_SERVICE_LOG("glXGetSyncValuesOML"
                  << "(" << static_cast<const void*>(dpy) << ", " << drawable
                  << ", " << static_cast<const void*>(ust) << ", "
@@ -1087,8 +1087,8 @@
 
 bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
                                     GLXDrawable drawable,
-                                    int32* numerator,
-                                    int32* denominator) {
+                                    int32_t* numerator,
+                                    int32_t* denominator) {
   return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
 }
 
@@ -1100,9 +1100,9 @@
 
 bool GLXApiBase::glXGetSyncValuesOMLFn(Display* dpy,
                                        GLXDrawable drawable,
-                                       int64* ust,
-                                       int64* msc,
-                                       int64* sbc) {
+                                       int64_t* ust,
+                                       int64_t* msc,
+                                       int64_t* sbc) {
   return driver_->fn.glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc);
 }
 
@@ -1386,8 +1386,8 @@
 
 bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
                                      GLXDrawable drawable,
-                                     int32* numerator,
-                                     int32* denominator) {
+                                     int32_t* numerator,
+                                     int32_t* denominator) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetMscRateOML")
   return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
 }
@@ -1401,9 +1401,9 @@
 
 bool TraceGLXApi::glXGetSyncValuesOMLFn(Display* dpy,
                                         GLXDrawable drawable,
-                                        int64* ust,
-                                        int64* msc,
-                                        int64* sbc) {
+                                        int64_t* ust,
+                                        int64_t* msc,
+                                        int64_t* sbc) {
   TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetSyncValuesOML")
   return glx_api_->glXGetSyncValuesOMLFn(dpy, drawable, ust, msc, sbc);
 }
diff --git a/ui/gl/gl_bindings_autogen_glx.h b/ui/gl/gl_bindings_autogen_glx.h
index 41baf29..fe2ae416 100644
--- a/ui/gl/gl_bindings_autogen_glx.h
+++ b/ui/gl/gl_bindings_autogen_glx.h
@@ -100,16 +100,16 @@
                                                            int* nelements);
 typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Display* dpy,
                                                     GLXDrawable drawable,
-                                                    int32* numerator,
-                                                    int32* denominator);
+                                                    int32_t* numerator,
+                                                    int32_t* denominator);
 typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy,
                                                        GLXDrawable drawable,
                                                        unsigned long* mask);
 typedef bool(GL_BINDING_CALL* glXGetSyncValuesOMLProc)(Display* dpy,
                                                        GLXDrawable drawable,
-                                                       int64* ust,
-                                                       int64* msc,
-                                                       int64* sbc);
+                                                       int64_t* ust,
+                                                       int64_t* msc,
+                                                       int64_t* sbc);
 typedef XVisualInfo*(GL_BINDING_CALL* glXGetVisualFromFBConfigProc)(
     Display* dpy,
     GLXFBConfig config);
@@ -304,16 +304,16 @@
                                          int* nelements) = 0;
   virtual bool glXGetMscRateOMLFn(Display* dpy,
                                   GLXDrawable drawable,
-                                  int32* numerator,
-                                  int32* denominator) = 0;
+                                  int32_t* numerator,
+                                  int32_t* denominator) = 0;
   virtual void glXGetSelectedEventFn(Display* dpy,
                                      GLXDrawable drawable,
                                      unsigned long* mask) = 0;
   virtual bool glXGetSyncValuesOMLFn(Display* dpy,
                                      GLXDrawable drawable,
-                                     int64* ust,
-                                     int64* msc,
-                                     int64* sbc) = 0;
+                                     int64_t* ust,
+                                     int64_t* msc,
+                                     int64_t* sbc) = 0;
   virtual XVisualInfo* glXGetVisualFromFBConfigFn(Display* dpy,
                                                   GLXFBConfig config) = 0;
   virtual int glXIsDirectFn(Display* dpy, GLXContext ctx) = 0;
diff --git a/ui/gl/gl_context.h b/ui/gl/gl_context.h
index f7b971d1..2b4ec0e 100644
--- a/ui/gl/gl_context.h
+++ b/ui/gl/gl_context.h
@@ -8,8 +8,8 @@
 #include <string>
 #include <vector>
 
-#include "base/basictypes.h"
 #include "base/cancelable_callback.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/synchronization/cancellation_flag.h"
diff --git a/ui/gl/gl_context_android.cc b/ui/gl/gl_context_android.cc
index 46f281b4..3c67b20 100644
--- a/ui/gl/gl_context_android.cc
+++ b/ui/gl/gl_context_android.cc
@@ -5,6 +5,7 @@
 #include "ui/gl/gl_context.h"
 
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/sys_info.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/ui/gl/gl_context_cgl.h b/ui/gl/gl_context_cgl.h
index 3cb850a..bb7a241 100644
--- a/ui/gl/gl_context_cgl.h
+++ b/ui/gl/gl_context_cgl.h
@@ -7,6 +7,7 @@
 
 #include <OpenGL/CGLTypes.h>
 
+#include "base/macros.h"
 #include "ui/gl/gl_context.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_context_egl.h b/ui/gl/gl_context_egl.h
index e86bcaa..4b1f42e 100644
--- a/ui/gl/gl_context_egl.h
+++ b/ui/gl/gl_context_egl.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/gl/gl_context.h"
 
 typedef void* EGLContext;
diff --git a/ui/gl/gl_context_glx.h b/ui/gl/gl_context_glx.h
index 3881b444..870f841 100644
--- a/ui/gl/gl_context_glx.h
+++ b/ui/gl/gl_context_glx.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/gfx/x/x11_types.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_export.h"
diff --git a/ui/gl/gl_context_mac.mm b/ui/gl/gl_context_mac.mm
index b20cee28..864c61a9 100644
--- a/ui/gl/gl_context_mac.mm
+++ b/ui/gl/gl_context_mac.mm
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/basictypes.h"
 #include "base/logging.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/trace_event/trace_event.h"
diff --git a/ui/gl/gl_context_osmesa.h b/ui/gl/gl_context_osmesa.h
index 597e0143..d5612d6 100644
--- a/ui/gl/gl_context_osmesa.h
+++ b/ui/gl/gl_context_osmesa.h
@@ -5,8 +5,8 @@
 #ifndef UI_GL_GL_CONTEXT_OSMESA_H_
 #define UI_GL_GL_CONTEXT_OSMESA_H_
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/gl/gl_context.h"
 
 typedef struct osmesa_context* OSMesaContext;
diff --git a/ui/gl/gl_context_stub.h b/ui/gl/gl_context_stub.h
index 811f908..0d62509 100644
--- a/ui/gl/gl_context_stub.h
+++ b/ui/gl/gl_context_stub.h
@@ -5,6 +5,7 @@
 #ifndef UI_GL_GL_CONTEXT_STUB_H_
 #define UI_GL_GL_CONTEXT_STUB_H_
 
+#include "base/macros.h"
 #include "ui/gl/gl_context.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_context_stub_with_extensions.h b/ui/gl/gl_context_stub_with_extensions.h
index d9da9d5..1bc1b3f 100644
--- a/ui/gl/gl_context_stub_with_extensions.h
+++ b/ui/gl/gl_context_stub_with_extensions.h
@@ -5,6 +5,7 @@
 #ifndef UI_GL_GL_CONTEXT_STUB_WITH_EXTENSIONS_H_
 #define UI_GL_GL_CONTEXT_STUB_WITH_EXTENSIONS_H_
 
+#include "base/macros.h"
 #include "ui/gl/gl_context_stub.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_context_wgl.h b/ui/gl/gl_context_wgl.h
index 21b3840..69c7e5c0 100644
--- a/ui/gl/gl_context_wgl.h
+++ b/ui/gl/gl_context_wgl.h
@@ -7,6 +7,7 @@
 
 #include <string>
 
+#include "base/macros.h"
 #include "ui/gfx/native_widget_types.h"
 #include "ui/gl/gl_context.h"
 
diff --git a/ui/gl/gl_enums.cc b/ui/gl/gl_enums.cc
index d43681e..fbe0446 100644
--- a/ui/gl/gl_enums.cc
+++ b/ui/gl/gl_enums.cc
@@ -9,7 +9,7 @@
 
 namespace gfx {
 
-std::string GLEnums::GetStringEnum(uint32 value) {
+std::string GLEnums::GetStringEnum(uint32_t value) {
   const EnumToString* entry = enum_to_string_table_;
   const EnumToString* end = entry + enum_to_string_table_len_;
   for (;entry < end; ++entry) {
@@ -24,13 +24,13 @@
   return "0x" + ss.str();
 }
 
-std::string GLEnums::GetStringError(uint32 value) {
+std::string GLEnums::GetStringError(uint32_t value) {
   if (value == GL_NONE)
     return "GL_NONE";
   return GetStringEnum(value);
 }
 
-std::string GLEnums::GetStringBool(uint32 value) {
+std::string GLEnums::GetStringBool(uint32_t value) {
   return value ? "GL_TRUE" : "GL_FALSE";
 }
 
diff --git a/ui/gl/gl_enums.h b/ui/gl/gl_enums.h
index 30dee6c46..1c2d7ed 100644
--- a/ui/gl/gl_enums.h
+++ b/ui/gl/gl_enums.h
@@ -5,9 +5,11 @@
 #ifndef UI_GL_GL_ENUMS_H_
 #define UI_GL_GL_ENUMS_H_
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include <string>
 
-#include "base/basictypes.h"
 #include "ui/gl/gl_export.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_fence.cc b/ui/gl/gl_fence.cc
index 694f22d..92aba19 100644
--- a/ui/gl/gl_fence.cc
+++ b/ui/gl/gl_fence.cc
@@ -5,6 +5,7 @@
 #include "ui/gl/gl_fence.h"
 
 #include "base/compiler_specific.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_fence_arb.h"
diff --git a/ui/gl/gl_fence.h b/ui/gl/gl_fence.h
index 76511f4..cc25a1d7 100644
--- a/ui/gl/gl_fence.h
+++ b/ui/gl/gl_fence.h
@@ -5,7 +5,7 @@
 #ifndef UI_GL_GL_FENCE_H_
 #define UI_GL_GL_FENCE_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "ui/gl/gl_export.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_helper.h b/ui/gl/gl_helper.h
index e38ecf1a..bbe829e 100644
--- a/ui/gl/gl_helper.h
+++ b/ui/gl/gl_helper.h
@@ -5,7 +5,6 @@
 #ifndef UI_GL_GL_HELPER_H_
 #define UI_GL_GL_HELPER_H_
 
-#include "base/basictypes.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_export.h"
 
diff --git a/ui/gl/gl_image.h b/ui/gl/gl_image.h
index c96d3d3..6b98fe9 100644
--- a/ui/gl/gl_image.h
+++ b/ui/gl/gl_image.h
@@ -5,8 +5,11 @@
 #ifndef UI_GL_GL_IMAGE_H_
 #define UI_GL_GL_IMAGE_H_
 
+#include <stdint.h>
+
 #include <string>
 
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "ui/gfx/geometry/point.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/gl/gl_image_egl.h b/ui/gl/gl_image_egl.h
index bb68e10..b613182 100644
--- a/ui/gl/gl_image_egl.h
+++ b/ui/gl/gl_image_egl.h
@@ -5,6 +5,7 @@
 #ifndef UI_GL_GL_IMAGE_EGL_H_
 #define UI_GL_GL_IMAGE_EGL_H_
 
+#include "base/macros.h"
 #include "base/threading/thread_checker.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_image.h"
diff --git a/ui/gl/gl_image_glx.h b/ui/gl/gl_image_glx.h
index fa577f0..c685c501 100644
--- a/ui/gl/gl_image_glx.h
+++ b/ui/gl/gl_image_glx.h
@@ -5,6 +5,9 @@
 #ifndef UI_GL_GL_IMAGE_GLX_H_
 #define UI_GL_GL_IMAGE_GLX_H_
 
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/x/x11_types.h"
 #include "ui/gl/gl_export.h"
diff --git a/ui/gl/gl_image_io_surface.h b/ui/gl/gl_image_io_surface.h
index 623ad21b..d8b7318 100644
--- a/ui/gl/gl_image_io_surface.h
+++ b/ui/gl/gl_image_io_surface.h
@@ -6,8 +6,10 @@
 #define UI_GL_GL_IMAGE_IO_SURFACE_H_
 
 #include <IOSurface/IOSurface.h>
+#include <stdint.h>
 
 #include "base/mac/scoped_cftyperef.h"
+#include "base/macros.h"
 #include "base/threading/thread_checker.h"
 #include "ui/gfx/buffer_types.h"
 #include "ui/gfx/generic_shared_memory_id.h"
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm
index dc03cd7b..d0ca06b 100644
--- a/ui/gl/gl_image_io_surface.mm
+++ b/ui/gl/gl_image_io_surface.mm
@@ -20,6 +20,7 @@
 // Note that this must be included after gl_bindings.h to avoid conflicts.
 #include <OpenGL/CGLIOSurface.h>
 #include <Quartz/Quartz.h>
+#include <stddef.h>
 
 using gfx::BufferFormat;
 
diff --git a/ui/gl/gl_image_io_surface_unittest.cc b/ui/gl/gl_image_io_surface_unittest.cc
index c9ca715b..8936ada 100644
--- a/ui/gl/gl_image_io_surface_unittest.cc
+++ b/ui/gl/gl_image_io_surface_unittest.cc
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/buffer_format_util.h"
 #include "ui/gfx/mac/io_surface_manager.h"
diff --git a/ui/gl/gl_image_memory.cc b/ui/gl/gl_image_memory.cc
index c61f8e6..7cf74c8 100644
--- a/ui/gl/gl_image_memory.cc
+++ b/ui/gl/gl_image_memory.cc
@@ -4,6 +4,8 @@
 
 #include "ui/gl/gl_image_memory.h"
 
+#include <stdint.h>
+
 #include "base/logging.h"
 #include "base/numerics/safe_conversions.h"
 #include "base/trace_event/trace_event.h"
diff --git a/ui/gl/gl_image_memory.h b/ui/gl/gl_image_memory.h
index 5492ec3..4f6db9a2 100644
--- a/ui/gl/gl_image_memory.h
+++ b/ui/gl/gl_image_memory.h
@@ -7,6 +7,9 @@
 
 #include "ui/gl/gl_image.h"
 
+#include <stddef.h>
+
+#include "base/macros.h"
 #include "base/numerics/safe_math.h"
 #include "ui/gfx/buffer_types.h"
 
diff --git a/ui/gl/gl_image_ozone_native_pixmap.cc b/ui/gl/gl_image_ozone_native_pixmap.cc
index 2c88d75..42e96a6 100644
--- a/ui/gl/gl_image_ozone_native_pixmap.cc
+++ b/ui/gl/gl_image_ozone_native_pixmap.cc
@@ -4,9 +4,9 @@
 
 #include "ui/gl/gl_image_ozone_native_pixmap.h"
 
-#define FOURCC(a, b, c, d)                                    \
-  ((static_cast<uint32>(a)) | (static_cast<uint32>(b) << 8) | \
-   (static_cast<uint32>(c) << 16) | (static_cast<uint32>(d) << 24))
+#define FOURCC(a, b, c, d)                                        \
+  ((static_cast<uint32_t>(a)) | (static_cast<uint32_t>(b) << 8) | \
+   (static_cast<uint32_t>(c) << 16) | (static_cast<uint32_t>(d) << 24))
 
 #define DRM_FORMAT_ARGB8888 FOURCC('A', 'R', '2', '4')
 #define DRM_FORMAT_ABGR8888 FOURCC('A', 'B', '2', '4')
diff --git a/ui/gl/gl_image_ozone_native_pixmap.h b/ui/gl/gl_image_ozone_native_pixmap.h
index f76e98b..318c8ef3 100644
--- a/ui/gl/gl_image_ozone_native_pixmap.h
+++ b/ui/gl/gl_image_ozone_native_pixmap.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_GL_IMAGE_OZONE_NATIVE_PIXMAP_H_
 #define UI_GL_GL_IMAGE_OZONE_NATIVE_PIXMAP_H_
 
+#include <stdint.h>
+
 #include "ui/gfx/buffer_types.h"
 #include "ui/gl/gl_image_egl.h"
 #include "ui/ozone/public/native_pixmap.h"
diff --git a/ui/gl/gl_image_ozone_native_pixmap_unittest.cc b/ui/gl/gl_image_ozone_native_pixmap_unittest.cc
index a21a444..a6784152 100644
--- a/ui/gl/gl_image_ozone_native_pixmap_unittest.cc
+++ b/ui/gl/gl_image_ozone_native_pixmap_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stdint.h>
+
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/buffer_types.h"
 #include "ui/gl/gl_image_ozone_native_pixmap.h"
diff --git a/ui/gl/gl_image_ref_counted_memory.cc b/ui/gl/gl_image_ref_counted_memory.cc
index 1831c08..eb93e3f 100644
--- a/ui/gl/gl_image_ref_counted_memory.cc
+++ b/ui/gl/gl_image_ref_counted_memory.cc
@@ -4,6 +4,8 @@
 
 #include "ui/gl/gl_image_ref_counted_memory.h"
 
+#include <stddef.h>
+
 #include "base/logging.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/trace_event/memory_allocator_dump.h"
diff --git a/ui/gl/gl_image_ref_counted_memory.h b/ui/gl/gl_image_ref_counted_memory.h
index 60497e1..0d73dcd 100644
--- a/ui/gl/gl_image_ref_counted_memory.h
+++ b/ui/gl/gl_image_ref_counted_memory.h
@@ -5,6 +5,9 @@
 #ifndef UI_GL_GL_IMAGE_REF_COUNTED_MEMORY_H_
 #define UI_GL_GL_IMAGE_REF_COUNTED_MEMORY_H_
 
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "ui/gl/gl_image_memory.h"
 
diff --git a/ui/gl/gl_image_ref_counted_memory_unittest.cc b/ui/gl/gl_image_ref_counted_memory_unittest.cc
index 12f4fb8..5d5bdd3 100644
--- a/ui/gl/gl_image_ref_counted_memory_unittest.cc
+++ b/ui/gl/gl_image_ref_counted_memory_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stdint.h>
+
 #include <vector>
 
 #include "base/memory/ref_counted_memory.h"
diff --git a/ui/gl/gl_image_shared_memory.h b/ui/gl/gl_image_shared_memory.h
index 3c1564ea..179011d 100644
--- a/ui/gl/gl_image_shared_memory.h
+++ b/ui/gl/gl_image_shared_memory.h
@@ -5,6 +5,10 @@
 #ifndef UI_GL_GL_IMAGE_SHARED_MEMORY_H_
 #define UI_GL_GL_IMAGE_SHARED_MEMORY_H_
 
+#include <stddef.h>
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/shared_memory_handle.h"
 #include "ui/gfx/generic_shared_memory_id.h"
diff --git a/ui/gl/gl_image_shared_memory_unittest.cc b/ui/gl/gl_image_shared_memory_unittest.cc
index f0e88239..57371ad 100644
--- a/ui/gl/gl_image_shared_memory_unittest.cc
+++ b/ui/gl/gl_image_shared_memory_unittest.cc
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include "base/memory/shared_memory.h"
 #include "base/sys_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/gl/gl_image_stub.h b/ui/gl/gl_image_stub.h
index b5f57445..8edadb6 100644
--- a/ui/gl/gl_image_stub.h
+++ b/ui/gl/gl_image_stub.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_GL_IMAGE_STUB_H_
 #define UI_GL_GL_IMAGE_STUB_H_
 
+#include <stdint.h>
+
 #include "ui/gl/gl_image.h"
 
 namespace gl {
diff --git a/ui/gl/gl_image_surface_texture.h b/ui/gl/gl_image_surface_texture.h
index 808f85b..c58ec8c7 100644
--- a/ui/gl/gl_image_surface_texture.h
+++ b/ui/gl/gl_image_surface_texture.h
@@ -5,6 +5,9 @@
 #ifndef UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_
 #define UI_GL_GL_IMAGE_SURFACE_TEXTURE_H_
 
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/threading/thread_checker.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc
index 66f22824..40aedde7 100644
--- a/ui/gl/gl_implementation.cc
+++ b/ui/gl/gl_implementation.cc
@@ -4,14 +4,18 @@
 
 #include "ui/gl/gl_implementation.h"
 
+#include <stddef.h>
+
 #include <algorithm>
 #include <string>
 
 #include "base/at_exit.h"
 #include "base/command_line.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/strings/string_split.h"
 #include "base/strings/string_util.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_gl_api_implementation.h"
 #include "ui/gl/gl_version_info.h"
diff --git a/ui/gl/gl_implementation_x11.cc b/ui/gl/gl_implementation_x11.cc
index b8a7246..5f0fc06b 100644
--- a/ui/gl/gl_implementation_x11.cc
+++ b/ui/gl/gl_implementation_x11.cc
@@ -7,6 +7,7 @@
 #include "base/command_line.h"
 #include "base/logging.h"
 #include "base/threading/thread_restrictions.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context_stub_with_extensions.h"
 #include "ui/gl/gl_egl_api_implementation.h"
diff --git a/ui/gl/gl_share_group.cc b/ui/gl/gl_share_group.cc
index 8e8958b..dd424a54 100644
--- a/ui/gl/gl_share_group.cc
+++ b/ui/gl/gl_share_group.cc
@@ -5,6 +5,7 @@
 #include "ui/gl/gl_share_group.h"
 
 #include "base/logging.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_context.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_share_group.h b/ui/gl/gl_share_group.h
index 1deed63c5..86e03c1 100644
--- a/ui/gl/gl_share_group.h
+++ b/ui/gl/gl_share_group.h
@@ -7,8 +7,9 @@
 
 #include <set>
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_export.h"
 
 namespace gfx {
diff --git a/ui/gl/gl_state_restorer.h b/ui/gl/gl_state_restorer.h
index 87ad7cc..dbeefff 100644
--- a/ui/gl/gl_state_restorer.h
+++ b/ui/gl/gl_state_restorer.h
@@ -5,7 +5,7 @@
 #ifndef UI_GL_GL_STATE_RESTORER_H_
 #define UI_GL_GL_STATE_RESTORER_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "ui/gl/gl_export.h"
 
 namespace gpu {
diff --git a/ui/gl/gl_surface.h b/ui/gl/gl_surface.h
index f91ef43..e4f3265 100644
--- a/ui/gl/gl_surface.h
+++ b/ui/gl/gl_surface.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "build/build_config.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc
index 9107bdd..f378cfd 100644
--- a/ui/gl/gl_surface_egl.cc
+++ b/ui/gl/gl_surface_egl.cc
@@ -4,12 +4,12 @@
 
 #include "ui/gl/gl_surface_egl.h"
 
-#if defined(OS_ANDROID)
-#include <android/native_window_jni.h>
-#endif
+#include <stddef.h>
+#include <stdint.h>
 
 #include "base/command_line.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/metrics/histogram_macros.h"
@@ -26,6 +26,10 @@
 #include "ui/gl/scoped_make_current.h"
 #include "ui/gl/sync_control_vsync_provider.h"
 
+#if defined(OS_ANDROID)
+#include <android/native_window_jni.h>
+#endif
+
 #if defined (USE_OZONE)
 #include "ui/ozone/public/ozone_platform.h"
 #include "ui/ozone/public/surface_factory_ozone.h"
@@ -115,22 +119,22 @@
   ~EGLSyncControlVSyncProvider() override {}
 
  protected:
-  bool GetSyncValues(int64* system_time,
-                     int64* media_stream_counter,
-                     int64* swap_buffer_counter) override {
-    uint64 u_system_time, u_media_stream_counter, u_swap_buffer_counter;
+  bool GetSyncValues(int64_t* system_time,
+                     int64_t* media_stream_counter,
+                     int64_t* swap_buffer_counter) override {
+    uint64_t u_system_time, u_media_stream_counter, u_swap_buffer_counter;
     bool result = eglGetSyncValuesCHROMIUM(
         g_display, surface_, &u_system_time,
         &u_media_stream_counter, &u_swap_buffer_counter) == EGL_TRUE;
     if (result) {
-      *system_time = static_cast<int64>(u_system_time);
-      *media_stream_counter = static_cast<int64>(u_media_stream_counter);
-      *swap_buffer_counter = static_cast<int64>(u_swap_buffer_counter);
+      *system_time = static_cast<int64_t>(u_system_time);
+      *media_stream_counter = static_cast<int64_t>(u_media_stream_counter);
+      *swap_buffer_counter = static_cast<int64_t>(u_swap_buffer_counter);
     }
     return result;
   }
 
-  bool GetMscRate(int32* numerator, int32* denominator) override {
+  bool GetMscRate(int32_t* numerator, int32_t* denominator) override {
     return false;
   }
 
diff --git a/ui/gl/gl_surface_egl.h b/ui/gl/gl_surface_egl.h
index 7231aa59..232016d8 100644
--- a/ui/gl/gl_surface_egl.h
+++ b/ui/gl/gl_surface_egl.h
@@ -13,7 +13,9 @@
 
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/time/time.h"
+#include "build/build_config.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/vsync_provider.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/ui/gl/gl_surface_egl_x11.h b/ui/gl/gl_surface_egl_x11.h
index 6ebbde5..67c151eb 100644
--- a/ui/gl/gl_surface_egl_x11.h
+++ b/ui/gl/gl_surface_egl_x11.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_GL_SURFACE_EGL_X11_H_
 #define UI_GL_GL_SURFACE_EGL_X11_H_
 
+#include <stdint.h>
+
 #include <string>
 
 #include "base/macros.h"
diff --git a/ui/gl/gl_surface_glx.cc b/ui/gl/gl_surface_glx.cc
index 2c060ec8..20a1177 100644
--- a/ui/gl/gl_surface_glx.cc
+++ b/ui/gl/gl_surface_glx.cc
@@ -8,9 +8,9 @@
 
 #include "ui/gl/gl_surface_glx.h"
 
-#include "base/basictypes.h"
 #include "base/lazy_instance.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/message_loop/message_loop.h"
@@ -22,6 +22,7 @@
 #include "base/threading/thread.h"
 #include "base/time/time.h"
 #include "base/trace_event/trace_event.h"
+#include "build/build_config.h"
 #include "ui/events/platform/platform_event_source.h"
 #include "ui/gfx/x/x11_connection.h"
 #include "ui/gfx/x/x11_types.h"
@@ -125,14 +126,14 @@
   ~OMLSyncControlVSyncProvider() override {}
 
  protected:
-  bool GetSyncValues(int64* system_time,
-                     int64* media_stream_counter,
-                     int64* swap_buffer_counter) override {
+  bool GetSyncValues(int64_t* system_time,
+                     int64_t* media_stream_counter,
+                     int64_t* swap_buffer_counter) override {
     return glXGetSyncValuesOML(g_display, glx_window_, system_time,
                                media_stream_counter, swap_buffer_counter);
   }
 
-  bool GetMscRate(int32* numerator, int32* denominator) override {
+  bool GetMscRate(int32_t* numerator, int32_t* denominator) override {
     if (!g_glx_get_msc_rate_oml_supported)
       return false;
 
diff --git a/ui/gl/gl_surface_glx.h b/ui/gl/gl_surface_glx.h
index 0b57bc4d..294773c 100644
--- a/ui/gl/gl_surface_glx.h
+++ b/ui/gl/gl_surface_glx.h
@@ -5,9 +5,12 @@
 #ifndef UI_GL_GL_SURFACE_GLX_H_
 #define UI_GL_GL_SURFACE_GLX_H_
 
+#include <stdint.h>
+
 #include <string>
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/events/platform/platform_event_dispatcher.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/native_widget_types.h"
diff --git a/ui/gl/gl_surface_mac.cc b/ui/gl/gl_surface_mac.cc
index 0aea62f..c481462c 100644
--- a/ui/gl/gl_surface_mac.cc
+++ b/ui/gl/gl_surface_mac.cc
@@ -6,8 +6,8 @@
 
 #include <OpenGL/CGLRenderers.h>
 
-#include "base/basictypes.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/trace_event/trace_event.h"
 #include "ui/gl/gl_bindings.h"
diff --git a/ui/gl/gl_surface_osmesa.cc b/ui/gl/gl_surface_osmesa.cc
index 8375d6b..6521bce 100644
--- a/ui/gl/gl_surface_osmesa.cc
+++ b/ui/gl/gl_surface_osmesa.cc
@@ -54,7 +54,7 @@
   }
 
   // Preserve the old buffer.
-  scoped_ptr<int32[]> old_buffer(buffer_.release());
+  scoped_ptr<int32_t[]> old_buffer(buffer_.release());
 
   base::CheckedNumeric<int> checked_size = sizeof(buffer_[0]);
   checked_size *= new_size.width();
@@ -63,7 +63,7 @@
     return false;
 
   // Allocate a new one.
-  buffer_.reset(new int32[new_size.GetArea()]);
+  buffer_.reset(new int32_t[new_size.GetArea()]);
   if (!buffer_.get())
     return false;
 
diff --git a/ui/gl/gl_surface_osmesa.h b/ui/gl/gl_surface_osmesa.h
index 63d8131a..dc56916 100644
--- a/ui/gl/gl_surface_osmesa.h
+++ b/ui/gl/gl_surface_osmesa.h
@@ -5,6 +5,9 @@
 #ifndef UI_GL_GL_SURFACE_OSMESA_H_
 #define UI_GL_GL_SURFACE_OSMESA_H_
 
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/gl/gl_surface.h"
@@ -38,7 +41,7 @@
  private:
   unsigned format_;
   gfx::Size size_;
-  scoped_ptr<int32[]> buffer_;
+  scoped_ptr<int32_t[]> buffer_;
 
   DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesa);
 };
diff --git a/ui/gl/gl_surface_ozone.cc b/ui/gl/gl_surface_ozone.cc
index c596c29..b965552 100644
--- a/ui/gl/gl_surface_ozone.cc
+++ b/ui/gl/gl_surface_ozone.cc
@@ -4,10 +4,13 @@
 
 #include "ui/gl/gl_surface.h"
 
+#include <stddef.h>
+
 #include "base/bind.h"
 #include "base/callback.h"
 #include "base/location.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/scoped_vector.h"
 #include "base/memory/weak_ptr.h"
diff --git a/ui/gl/gl_surface_wgl.h b/ui/gl/gl_surface_wgl.h
index 2626898..32c7f48a 100644
--- a/ui/gl/gl_surface_wgl.h
+++ b/ui/gl/gl_surface_wgl.h
@@ -5,6 +5,7 @@
 #ifndef UI_GL_GL_SURFACE_WGL_H_
 #define UI_GL_GL_SURFACE_WGL_H_
 
+#include "base/macros.h"
 #include "ui/gfx/native_widget_types.h"
 #include "ui/gl/gl_surface.h"
 
diff --git a/ui/gl/gl_surface_win.cc b/ui/gl/gl_surface_win.cc
index 2a934d4f..64b701e 100644
--- a/ui/gl/gl_surface_win.cc
+++ b/ui/gl/gl_surface_win.cc
@@ -8,6 +8,7 @@
 
 #include "base/command_line.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/trace_event/trace_event.h"
 #include "base/win/windows_version.h"
diff --git a/ui/gl/gl_surface_x11.cc b/ui/gl/gl_surface_x11.cc
index 66a4199..3a2a0da 100644
--- a/ui/gl/gl_surface_x11.cc
+++ b/ui/gl/gl_surface_x11.cc
@@ -4,7 +4,10 @@
 
 #include "ui/gl/gl_surface.h"
 
+#include <stdint.h>
+
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/trace_event/trace_event.h"
@@ -200,13 +203,9 @@
   }
 
   // Copy the frame into the pixmap.
-  gfx::PutARGBImage(xdisplay_,
-                    attributes.visual,
-                    attributes.depth,
-                    pixmap_,
+  gfx::PutARGBImage(xdisplay_, attributes.visual, attributes.depth, pixmap_,
                     pixmap_graphics_context_,
-                    static_cast<const uint8*>(GetHandle()),
-                    size.width(),
+                    static_cast<const uint8_t*>(GetHandle()), size.width(),
                     size.height());
 
   // Copy the pixmap to the window.
@@ -244,20 +243,10 @@
   }
 
   // Copy the frame into the pixmap.
-  gfx::PutARGBImage(xdisplay_,
-                    attributes.visual,
-                    attributes.depth,
-                    pixmap_,
+  gfx::PutARGBImage(xdisplay_, attributes.visual, attributes.depth, pixmap_,
                     pixmap_graphics_context_,
-                    static_cast<const uint8*>(GetHandle()),
-                    size.width(),
-                    size.height(),
-                    x,
-                    y,
-                    x,
-                    y,
-                    width,
-                    height);
+                    static_cast<const uint8_t*>(GetHandle()), size.width(),
+                    size.height(), x, y, x, y, width, height);
 
   // Copy the pixmap to the window.
   XCopyArea(xdisplay_,
diff --git a/ui/gl/gl_switches.cc b/ui/gl/gl_switches.cc
index dc217ef..1b515311 100644
--- a/ui/gl/gl_switches.cc
+++ b/ui/gl/gl_switches.cc
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "base/macros.h"
 #include "ui/gl/gl_switches.h"
-#include "base/basictypes.h"
 
 namespace gfx {
 
diff --git a/ui/gl/gl_version_info.h b/ui/gl/gl_version_info.h
index 593ed15c..c56825e8 100644
--- a/ui/gl/gl_version_info.h
+++ b/ui/gl/gl_version_info.h
@@ -7,7 +7,8 @@
 
 #include <set>
 #include <string>
-#include "base/basictypes.h"
+#include "base/macros.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_export.h"
 
 namespace gfx {
diff --git a/ui/gl/gpu_switching_manager.cc b/ui/gl/gpu_switching_manager.cc
index a178509..0f87470 100644
--- a/ui/gl/gpu_switching_manager.cc
+++ b/ui/gl/gpu_switching_manager.cc
@@ -6,6 +6,7 @@
 
 #include "base/command_line.h"
 #include "base/logging.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_switches.h"
 
 #if defined(OS_MACOSX)
@@ -105,7 +106,7 @@
         // vendor's GPU. Otherwise we don't understand the
         // configuration and don't deal well with it (an example being
         // the dual AMD GPUs in recent Mac Pros).
-        const uint32 intel = 0x8086;
+        const uint32_t intel = 0x8086;
         flag = ((vendor_ids_[0] == intel && vendor_ids_[1] != intel) ||
                 (vendor_ids_[0] != intel && vendor_ids_[1] == intel));
       }
@@ -118,7 +119,7 @@
 }
 
 void GpuSwitchingManager::SetGpuVendorIds(
-    const std::vector<uint32>& vendor_ids) {
+    const std::vector<uint32_t>& vendor_ids) {
   vendor_ids_ = vendor_ids;
 }
 
diff --git a/ui/gl/gpu_switching_manager.h b/ui/gl/gpu_switching_manager.h
index 6327798..7849d4a 100644
--- a/ui/gl/gpu_switching_manager.h
+++ b/ui/gl/gpu_switching_manager.h
@@ -5,10 +5,14 @@
 #ifndef UI_GL_GPU_SWITCHING_MANAGER_H_
 #define UI_GL_GPU_SWITCHING_MANAGER_H_
 
+#include <stdint.h>
+
 #include <vector>
 
+#include "base/macros.h"
 #include "base/memory/singleton.h"
 #include "base/observer_list.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_export.h"
 #include "ui/gl/gpu_preference.h"
 #include "ui/gl/gpu_switching_observer.h"
@@ -38,7 +42,7 @@
 
   // Sets the vendor IDs of the GPUs on the system. The length of this
   // vector defines the count of GPUs.
-  void SetGpuVendorIds(const std::vector<uint32>& vendor_ids);
+  void SetGpuVendorIds(const std::vector<uint32_t>& vendor_ids);
 
   void AddObserver(GpuSwitchingObserver* observer);
   void RemoveObserver(GpuSwitchingObserver* observer);
@@ -63,7 +67,7 @@
   gfx::GpuPreference gpu_switching_option_;
   bool gpu_switching_option_set_;
 
-  std::vector<uint32> vendor_ids_;
+  std::vector<uint32_t> vendor_ids_;
 
   bool supports_dual_gpus_;
   bool supports_dual_gpus_set_;
diff --git a/ui/gl/gpu_timing.cc b/ui/gl/gpu_timing.cc
index 6def78e..8989bd5 100644
--- a/ui/gl/gpu_timing.cc
+++ b/ui/gl/gpu_timing.cc
@@ -4,6 +4,7 @@
 
 #include "ui/gl/gpu_timing.h"
 
+#include "base/macros.h"
 #include "base/time/time.h"
 #include "ui/gl/gl_bindings.h"
 #include "ui/gl/gl_context.h"
@@ -30,19 +31,19 @@
   GPUTiming::TimerType GetTimerType() const { return timer_type_; }
 
   uint32_t GetDisjointCount();
-  int64 CalculateTimerOffset();
+  int64_t CalculateTimerOffset();
 
   scoped_refptr<QueryResult> BeginElapsedTimeQuery();
   void EndElapsedTimeQuery(scoped_refptr<QueryResult> result);
 
   scoped_refptr<QueryResult> DoTimeStampQuery();
 
-  int64 GetCurrentCPUTime() {
+  int64_t GetCurrentCPUTime() {
     return cpu_time_for_testing_.is_null()
            ? (base::TimeTicks::Now() - base::TimeTicks()).InMicroseconds()
            : cpu_time_for_testing_.Run();
   }
-  void SetCpuTimeForTesting(const base::Callback<int64(void)>& cpu_time) {
+  void SetCpuTimeForTesting(const base::Callback<int64_t(void)>& cpu_time) {
     cpu_time_for_testing_ = cpu_time;
   }
 
@@ -66,10 +67,10 @@
  private:
   scoped_refptr<GPUTimingClient> CreateGPUTimingClient() override;
 
-  base::Callback<int64(void)> cpu_time_for_testing_;
+  base::Callback<int64_t(void)> cpu_time_for_testing_;
   GPUTiming::TimerType timer_type_ = GPUTiming::kTimerTypeInvalid;
   uint32_t disjoint_counter_ = 0;
-  int64 offset_ = 0;  // offset cache when timer_type_ == kTimerTypeARB
+  int64_t offset_ = 0;  // offset cache when timer_type_ == kTimerTypeARB
   bool offset_valid_ = false;
   bool force_time_elapsed_query_ = false;
 
@@ -291,7 +292,7 @@
     glGetQueryObjectui64v(gl_query_id_, GL_QUERY_RESULT, &result_value);
     const int64_t micro_results = NanoToMicro(result_value);
 
-    const int64 offset = gpu_timing->CalculateTimerOffset();
+    const int64_t offset = gpu_timing->CalculateTimerOffset();
     const int64_t adjusted_result = micro_results + offset;
     DCHECK(query_result_.get());
     query_result_->SetStartValue(adjusted_result);
@@ -335,7 +336,7 @@
   return disjoint_counter_;
 }
 
-int64 GPUTimingImpl::CalculateTimerOffset() {
+int64_t GPUTimingImpl::CalculateTimerOffset() {
   if (!offset_valid_) {
     if (timer_type_ == GPUTiming::kTimerTypeDisjoint ||
         timer_type_ == GPUTiming::kTimerTypeARB) {
@@ -534,7 +535,7 @@
   return (timer_state_ == kTimerState_ResultAvailable);
 }
 
-void GPUTimer::GetStartEndTimestamps(int64* start, int64* end) {
+void GPUTimer::GetStartEndTimestamps(int64_t* start, int64_t* end) {
   DCHECK(start && end);
   DCHECK(elapsed_timer_result_.get() || time_stamp_result_.get());
   DCHECK(IsAvailable());
@@ -549,7 +550,7 @@
   *end = time_stamp + elapsed_time;
 }
 
-int64 GPUTimer::GetDeltaElapsed() {
+int64_t GPUTimer::GetDeltaElapsed() {
   DCHECK(IsAvailable());
   if (elapsed_timer_result_.get())
     return elapsed_timer_result_->GetDelta();
@@ -606,13 +607,13 @@
   return false;
 }
 
-int64 GPUTimingClient::GetCurrentCPUTime() {
+int64_t GPUTimingClient::GetCurrentCPUTime() {
   DCHECK(gpu_timing_);
   return gpu_timing_->GetCurrentCPUTime();
 }
 
 void GPUTimingClient::SetCpuTimeForTesting(
-    const base::Callback<int64(void)>& cpu_time) {
+    const base::Callback<int64_t(void)>& cpu_time) {
   DCHECK(gpu_timing_);
   gpu_timing_->SetCpuTimeForTesting(cpu_time);
 }
diff --git a/ui/gl/gpu_timing.h b/ui/gl/gpu_timing.h
index 4082b91..d17dd5d 100644
--- a/ui/gl/gpu_timing.h
+++ b/ui/gl/gpu_timing.h
@@ -5,10 +5,13 @@
 #ifndef UI_GL_GPU_TIMING_H_
 #define UI_GL_GPU_TIMING_H_
 
+#include <stdint.h>
+
 #include <memory>
 #include <queue>
 
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/gl/gl_export.h"
 
@@ -96,8 +99,8 @@
 
   bool IsAvailable();
 
-  void GetStartEndTimestamps(int64* start, int64* end);
-  int64 GetDeltaElapsed();
+  void GetStartEndTimestamps(int64_t* start, int64_t* end);
+  int64_t GetDeltaElapsed();
 
  private:
   friend class GPUTimingClient;
@@ -138,8 +141,8 @@
   // discarded.
   bool CheckAndResetTimerErrors();
 
-  int64 GetCurrentCPUTime();
-  void SetCpuTimeForTesting(const base::Callback<int64(void)>& cpu_time);
+  int64_t GetCurrentCPUTime();
+  void SetCpuTimeForTesting(const base::Callback<int64_t(void)>& cpu_time);
 
   bool IsForceTimeElapsedQuery();
   void ForceTimeElapsedQuery();
diff --git a/ui/gl/gpu_timing_fake.h b/ui/gl/gpu_timing_fake.h
index 33d7bc3d..4f206e0 100644
--- a/ui/gl/gpu_timing_fake.h
+++ b/ui/gl/gpu_timing_fake.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_GPU_TIMING_FAKE_H_
 #define UI_GL_GPU_TIMING_FAKE_H_
 
+#include <stdint.h>
+
 #include <map>
 #include <set>
 
diff --git a/ui/gl/gpu_timing_unittest.cc b/ui/gl/gpu_timing_unittest.cc
index 865eb24..222fa55 100644
--- a/ui/gl/gpu_timing_unittest.cc
+++ b/ui/gl/gpu_timing_unittest.cc
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stdint.h>
+
 #include "base/bind.h"
 #include "base/memory/scoped_ptr.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -125,7 +127,7 @@
 
   EXPECT_EQ(0, gpu_timer->GetDeltaElapsed());
 
-  int64 start, end;
+  int64_t start, end;
   gpu_timer->GetStartEndTimestamps(&start, &end);
   EXPECT_EQ(begin_cpu_time, start);
   EXPECT_EQ(begin_cpu_time, end);
@@ -155,7 +157,7 @@
   EXPECT_TRUE(gpu_timer->IsAvailable());
   EXPECT_EQ(0, gpu_timer->GetDeltaElapsed());
 
-  int64 start, end;
+  int64_t start, end;
   gpu_timer->GetStartEndTimestamps(&start, &end);
   EXPECT_EQ(begin_cpu_time, start);
   EXPECT_EQ(begin_cpu_time, end);
diff --git a/ui/gl/scoped_api.h b/ui/gl/scoped_api.h
index dd9af50..d17076bc 100644
--- a/ui/gl/scoped_api.h
+++ b/ui/gl/scoped_api.h
@@ -5,7 +5,7 @@
 #ifndef UI_GL_SCOPED_API_H_
 #define UI_GL_SCOPED_API_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "ui/gl/gl_export.h"
 
 namespace gfx {
diff --git a/ui/gl/scoped_binders.h b/ui/gl/scoped_binders.h
index 102e47e..5c32721 100644
--- a/ui/gl/scoped_binders.h
+++ b/ui/gl/scoped_binders.h
@@ -5,7 +5,7 @@
 #ifndef UI_GL_SCOPED_BINDERS_H_
 #define UI_GL_SCOPED_BINDERS_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "ui/gl/gl_export.h"
 
 namespace gfx {
diff --git a/ui/gl/scoped_cgl.h b/ui/gl/scoped_cgl.h
index 71af2bd..071b6587 100644
--- a/ui/gl/scoped_cgl.h
+++ b/ui/gl/scoped_cgl.h
@@ -8,6 +8,7 @@
 #include <OpenGL/OpenGL.h>
 
 #include "base/mac/scoped_typeref.h"
+#include "base/macros.h"
 #include "ui/gl/gl_export.h"
 
 namespace base {
diff --git a/ui/gl/scoped_make_current.h b/ui/gl/scoped_make_current.h
index 59f34d7..ce4c7a8 100644
--- a/ui/gl/scoped_make_current.h
+++ b/ui/gl/scoped_make_current.h
@@ -5,7 +5,7 @@
 #ifndef UI_GL_SCOPED_MAKE_CURRENT_H_
 #define UI_GL_SCOPED_MAKE_CURRENT_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "ui/gl/gl_export.h"
 
diff --git a/ui/gl/sync_control_vsync_provider.cc b/ui/gl/sync_control_vsync_provider.cc
index 9fee368..836ec21 100644
--- a/ui/gl/sync_control_vsync_provider.cc
+++ b/ui/gl/sync_control_vsync_provider.cc
@@ -9,12 +9,13 @@
 #include "base/logging.h"
 #include "base/time/time.h"
 #include "base/trace_event/trace_event.h"
+#include "build/build_config.h"
 
 #if defined(OS_LINUX)
 // These constants define a reasonable range for a calculated refresh interval.
 // Calculating refreshes out of this range will be considered a fatal error.
-const int64 kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
-const int64 kMaxVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 10;
+const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+const int64_t kMaxVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 10;
 
 // How much noise we'll tolerate between successive computed intervals before
 // we think the latest computed interval is invalid (noisey due to
@@ -47,9 +48,9 @@
   // was produced by the clock whose current time is closest to it, subject
   // to the restriction that the returned time must not be in the future
   // (since it is the time of a vblank that has already occurred).
-  int64 system_time;
-  int64 media_stream_counter;
-  int64 swap_buffer_counter;
+  int64_t system_time;
+  int64_t media_stream_counter;
+  int64_t swap_buffer_counter;
   if (!GetSyncValues(&system_time, &media_stream_counter, &swap_buffer_counter))
     return;
 
@@ -69,10 +70,10 @@
   clock_gettime(CLOCK_REALTIME, &real_time);
   clock_gettime(CLOCK_MONOTONIC, &monotonic_time);
 
-  int64 real_time_in_microseconds =
+  int64_t real_time_in_microseconds =
       real_time.tv_sec * base::Time::kMicrosecondsPerSecond +
       real_time.tv_nsec / base::Time::kNanosecondsPerMicrosecond;
-  int64 monotonic_time_in_microseconds =
+  int64_t monotonic_time_in_microseconds =
       monotonic_time.tv_sec * base::Time::kMicrosecondsPerSecond +
       monotonic_time.tv_nsec / base::Time::kNanosecondsPerMicrosecond;
 
@@ -86,7 +87,7 @@
     system_time += monotonic_time_in_microseconds - real_time_in_microseconds;
 
   // Return if |system_time| is more than 1 frames in the future.
-  int64 interval_in_microseconds = last_good_interval_.InMicroseconds();
+  int64_t interval_in_microseconds = last_good_interval_.InMicroseconds();
   if (system_time > monotonic_time_in_microseconds + interval_in_microseconds)
     return;
 
@@ -106,13 +107,13 @@
   while (last_computed_intervals_.size() > 1)
     last_computed_intervals_.pop();
 
-  int32 numerator, denominator;
+  int32_t numerator, denominator;
   if (GetMscRate(&numerator, &denominator)) {
     last_computed_intervals_.push(base::TimeDelta::FromSeconds(denominator) /
                                   numerator);
   } else if (!last_timebase_.is_null()) {
     base::TimeDelta timebase_diff = timebase - last_timebase_;
-    int64 counter_diff = media_stream_counter - last_media_stream_counter_;
+    int64_t counter_diff = media_stream_counter - last_media_stream_counter_;
     if (counter_diff > 0 && timebase > last_timebase_)
       last_computed_intervals_.push(timebase_diff / counter_diff);
   }
diff --git a/ui/gl/sync_control_vsync_provider.h b/ui/gl/sync_control_vsync_provider.h
index 302980d..8314ed2 100644
--- a/ui/gl/sync_control_vsync_provider.h
+++ b/ui/gl/sync_control_vsync_provider.h
@@ -5,8 +5,11 @@
 #ifndef UI_GL_SYNC_CONTROL_VSYNC_PROVIDER_H_
 #define UI_GL_SYNC_CONTROL_VSYNC_PROVIDER_H_
 
+#include <stdint.h>
+
 #include <queue>
 
+#include "base/macros.h"
 #include "ui/gfx/vsync_provider.h"
 
 namespace gfx {
@@ -21,15 +24,15 @@
   void GetVSyncParameters(const UpdateVSyncCallback& callback) override;
 
  protected:
-  virtual bool GetSyncValues(int64* system_time,
-                             int64* media_stream_counter,
-                             int64* swap_buffer_counter) = 0;
+  virtual bool GetSyncValues(int64_t* system_time,
+                             int64_t* media_stream_counter,
+                             int64_t* swap_buffer_counter) = 0;
 
-  virtual bool GetMscRate(int32* numerator, int32* denominator) = 0;
+  virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
 
  private:
   base::TimeTicks last_timebase_;
-  uint64 last_media_stream_counter_;
+  uint64_t last_media_stream_counter_;
   base::TimeDelta last_good_interval_;
   bool invalid_msc_;
 
diff --git a/ui/gl/test/gl_image_test_support.h b/ui/gl/test/gl_image_test_support.h
index 41258fc0..65708b2 100644
--- a/ui/gl/test/gl_image_test_support.h
+++ b/ui/gl/test/gl_image_test_support.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_TEST_GL_IMAGE_TEST_SUPPORT_H_
 #define UI_GL_TEST_GL_IMAGE_TEST_SUPPORT_H_
 
+#include <stdint.h>
+
 #include "ui/gfx/buffer_types.h"
 #include "ui/gl/gl_bindings.h"
 
diff --git a/ui/gl/test/gl_image_test_template.h b/ui/gl/test/gl_image_test_template.h
index 8b146445..9f2b0716 100644
--- a/ui/gl/test/gl_image_test_template.h
+++ b/ui/gl/test/gl_image_test_template.h
@@ -8,7 +8,8 @@
 #ifndef UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
 #define UI_GL_TEST_GL_IMAGE_TEST_TEMPLATE_H_
 
-#include "base/basictypes.h"
+#include <stdint.h>
+
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/stringize_macros.h"
 #include "base/strings/stringprintf.h"
diff --git a/ui/gl/test/gl_surface_test_support.cc b/ui/gl/test/gl_surface_test_support.cc
index 99ae718..c969e94e 100644
--- a/ui/gl/test/gl_surface_test_support.cc
+++ b/ui/gl/test/gl_surface_test_support.cc
@@ -6,6 +6,7 @@
 
 #include "base/command_line.h"
 #include "base/logging.h"
+#include "build/build_config.h"
 #include "ui/gl/gl_context.h"
 #include "ui/gl/gl_implementation.h"
 #include "ui/gl/gl_surface.h"
diff --git a/ui/gl/test/gl_test_helper.h b/ui/gl/test/gl_test_helper.h
index 98b2e0e..4f8f7502 100644
--- a/ui/gl/test/gl_test_helper.h
+++ b/ui/gl/test/gl_test_helper.h
@@ -5,7 +5,8 @@
 #ifndef UI_GL_TEST_GL_TEST_HELPER_H_
 #define UI_GL_TEST_GL_TEST_HELPER_H_
 
-#include "base/basictypes.h"
+#include <stdint.h>
+
 #include "ui/gl/gl_bindings.h"
 
 namespace gl {
diff --git a/ui/gl/test/run_all_unittests.cc b/ui/gl/test/run_all_unittests.cc
index e84d8c39..e9af318 100644
--- a/ui/gl/test/run_all_unittests.cc
+++ b/ui/gl/test/run_all_unittests.cc
@@ -3,8 +3,10 @@
 // found in the LICENSE file.
 
 #include "base/bind.h"
+#include "base/macros.h"
 #include "base/test/launcher/unit_test_launcher.h"
 #include "base/test/test_suite.h"
+#include "build/build_config.h"
 
 #if defined(OS_MACOSX) && !defined(OS_IOS)
 #include "base/test/mock_chrome_application_mac.h"
diff --git a/ui/gl/trace_util.h b/ui/gl/trace_util.h
index fa7ab19..7a9b60a 100644
--- a/ui/gl/trace_util.h
+++ b/ui/gl/trace_util.h
@@ -5,6 +5,8 @@
 #ifndef UI_GL_TRACE_UTIL_H_
 #define UI_GL_TRACE_UTIL_H_
 
+#include <stdint.h>
+
 #include "base/trace_event/memory_allocator_dump.h"
 #include "ui/gl/gl_export.h"
 
diff --git a/ui/message_center/cocoa/notification_controller.mm b/ui/message_center/cocoa/notification_controller.mm
index c4020e3..47893a50 100644
--- a/ui/message_center/cocoa/notification_controller.mm
+++ b/ui/message_center/cocoa/notification_controller.mm
@@ -4,6 +4,8 @@
 
 #import "ui/message_center/cocoa/notification_controller.h"
 
+#include <stddef.h>
+
 #include <algorithm>
 
 #include "base/mac/foundation_util.h"
diff --git a/ui/message_center/cocoa/notification_controller_unittest.mm b/ui/message_center/cocoa/notification_controller_unittest.mm
index e401091..c6ba5f20 100644
--- a/ui/message_center/cocoa/notification_controller_unittest.mm
+++ b/ui/message_center/cocoa/notification_controller_unittest.mm
@@ -6,6 +6,7 @@
 
 #include "base/mac/foundation_util.h"
 #include "base/mac/scoped_nsobject.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
diff --git a/ui/message_center/dummy_message_center.cc b/ui/message_center/dummy_message_center.cc
index df49992..26225db 100644
--- a/ui/message_center/dummy_message_center.cc
+++ b/ui/message_center/dummy_message_center.cc
@@ -2,6 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "build/build_config.h"
 #include "ui/message_center/message_center.h"
 
 // This file contains dummy implementation of MessageCenter and used to compile
diff --git a/ui/message_center/fake_message_center.h b/ui/message_center/fake_message_center.h
index de40155..003efbc 100644
--- a/ui/message_center/fake_message_center.h
+++ b/ui/message_center/fake_message_center.h
@@ -5,6 +5,9 @@
 #ifndef UI_MESSAGE_CENTER_FAKE_MESSAGE_CENTER_H_
 #define UI_MESSAGE_CENTER_FAKE_MESSAGE_CENTER_H_
 
+#include <stddef.h>
+
+#include "base/macros.h"
 #include "ui/message_center/message_center.h"
 #include "ui/message_center/message_center_types.h"
 
diff --git a/ui/message_center/fake_message_center_tray_delegate.h b/ui/message_center/fake_message_center_tray_delegate.h
index 8457065..cee0c799 100644
--- a/ui/message_center/fake_message_center_tray_delegate.h
+++ b/ui/message_center/fake_message_center_tray_delegate.h
@@ -5,8 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_FAKE_MESSAGE_CENTER_TRAY_DELEGATE_H_
 #define UI_MESSAGE_CENTER_FAKE_MESSAGE_CENTER_TRAY_DELEGATE_H_
 
-#include "base/basictypes.h"
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/message_center/message_center_tray_delegate.h"
 
diff --git a/ui/message_center/fake_notifier_settings_provider.h b/ui/message_center/fake_notifier_settings_provider.h
index 0131d31..d5a2c8a8 100644
--- a/ui/message_center/fake_notifier_settings_provider.h
+++ b/ui/message_center/fake_notifier_settings_provider.h
@@ -5,6 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_FAKE_NOTIFIER_SETTINGS_PROVIDER_H_
 #define UI_MESSAGE_CENTER_FAKE_NOTIFIER_SETTINGS_PROVIDER_H_
 
+#include <stddef.h>
+
 #include "base/memory/scoped_ptr.h"
 #include "ui/message_center/notifier_settings.h"
 
diff --git a/ui/message_center/message_center.h b/ui/message_center/message_center.h
index 3e285a34..00d9545 100644
--- a/ui/message_center/message_center.h
+++ b/ui/message_center/message_center.h
@@ -5,8 +5,11 @@
 #ifndef UI_MESSAGE_CENTER_MESSAGE_CENTER_H_
 #define UI_MESSAGE_CENTER_MESSAGE_CENTER_H_
 
+#include <stddef.h>
+
 #include <string>
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/message_center/message_center_types.h"
diff --git a/ui/message_center/message_center_impl.cc b/ui/message_center/message_center_impl.cc
index c8a01ab..c1a9e122 100644
--- a/ui/message_center/message_center_impl.cc
+++ b/ui/message_center/message_center_impl.cc
@@ -9,9 +9,11 @@
 #include <utility>
 
 #include "base/command_line.h"
+#include "base/macros.h"
 #include "base/memory/scoped_vector.h"
 #include "base/observer_list.h"
 #include "base/stl_util.h"
+#include "build/build_config.h"
 #include "ui/message_center/message_center_style.h"
 #include "ui/message_center/message_center_switches.h"
 #include "ui/message_center/message_center_types.h"
diff --git a/ui/message_center/message_center_impl.h b/ui/message_center/message_center_impl.h
index 872ebcf8..27997922 100644
--- a/ui/message_center/message_center_impl.h
+++ b/ui/message_center/message_center_impl.h
@@ -5,9 +5,12 @@
 #ifndef UI_MESSAGE_CENTER_MESSAGE_CENTER_IMPL_H_
 #define UI_MESSAGE_CENTER_MESSAGE_CENTER_IMPL_H_
 
+#include <stddef.h>
+
 #include <string>
 #include <vector>
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
diff --git a/ui/message_center/message_center_impl_unittest.cc b/ui/message_center/message_center_impl_unittest.cc
index e22dc51..2b405fe6 100644
--- a/ui/message_center/message_center_impl_unittest.cc
+++ b/ui/message_center/message_center_impl_unittest.cc
@@ -7,9 +7,11 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/macros.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/geometry/size.h"
diff --git a/ui/message_center/message_center_style.h b/ui/message_center/message_center_style.h
index ab73a80..d818726 100644
--- a/ui/message_center/message_center_style.h
+++ b/ui/message_center/message_center_style.h
@@ -5,7 +5,9 @@
 #ifndef UI_MESSAGE_CENTER_MESSAGE_CENTER_STYLE_H_
 #define UI_MESSAGE_CENTER_MESSAGE_CENTER_STYLE_H_
 
-#include "base/basictypes.h"
+#include <stddef.h>
+
+#include "build/build_config.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/message_center/message_center_export.h"
diff --git a/ui/message_center/message_center_tray.cc b/ui/message_center/message_center_tray.cc
index 3b2cbac..00891ac 100644
--- a/ui/message_center/message_center_tray.cc
+++ b/ui/message_center/message_center_tray.cc
@@ -4,8 +4,10 @@
 
 #include "ui/message_center/message_center_tray.h"
 
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/models/simple_menu_model.h"
 #include "ui/message_center/message_center.h"
diff --git a/ui/message_center/message_center_tray.h b/ui/message_center/message_center_tray.h
index 5cd6b8d..e6e9862 100644
--- a/ui/message_center/message_center_tray.h
+++ b/ui/message_center/message_center_tray.h
@@ -5,6 +5,7 @@
 #ifndef UI_MESSAGE_CENTER_MESSAGE_CENTER_TRAY_H_
 #define UI_MESSAGE_CENTER_MESSAGE_CENTER_TRAY_H_
 
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "base/strings/string16.h"
 #include "ui/message_center/message_center_export.h"
diff --git a/ui/message_center/message_center_tray_unittest.cc b/ui/message_center/message_center_tray_unittest.cc
index 1143e40..ec5130d 100644
--- a/ui/message_center/message_center_tray_unittest.cc
+++ b/ui/message_center/message_center_tray_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/models/menu_model.h"
diff --git a/ui/message_center/notification.h b/ui/message_center/notification.h
index f4dce7b..491943d 100644
--- a/ui/message_center/notification.h
+++ b/ui/message_center/notification.h
@@ -5,6 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_NOTIFICATION_H_
 #define UI_MESSAGE_CENTER_NOTIFICATION_H_
 
+#include <stddef.h>
+
 #include <string>
 #include <vector>
 
diff --git a/ui/message_center/notification_delegate.h b/ui/message_center/notification_delegate.h
index 34082fa7..059a15d 100644
--- a/ui/message_center/notification_delegate.h
+++ b/ui/message_center/notification_delegate.h
@@ -8,6 +8,7 @@
 #include <string>
 
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "ui/message_center/message_center_export.h"
 
diff --git a/ui/message_center/notification_delegate_unittest.cc b/ui/message_center/notification_delegate_unittest.cc
index 72a3241..3a8fe71 100644
--- a/ui/message_center/notification_delegate_unittest.cc
+++ b/ui/message_center/notification_delegate_unittest.cc
@@ -4,9 +4,9 @@
 
 #include "ui/message_center/notification_delegate.h"
 
-#include "base/basictypes.h"
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/ui/message_center/notification_list.h b/ui/message_center/notification_list.h
index 7b49994..defa92b 100644
--- a/ui/message_center/notification_list.h
+++ b/ui/message_center/notification_list.h
@@ -5,11 +5,14 @@
 #ifndef UI_MESSAGE_CENTER_NOTIFICATION_LIST_H_
 #define UI_MESSAGE_CENTER_NOTIFICATION_LIST_H_
 
+#include <stddef.h>
+
 #include <list>
 #include <set>
 #include <string>
 
 #include "base/gtest_prod_util.h"
+#include "base/macros.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/message_center/notification_blocker.h"
 #include "ui/message_center/notification_types.h"
diff --git a/ui/message_center/notification_list_unittest.cc b/ui/message_center/notification_list_unittest.cc
index f813128..330ae236 100644
--- a/ui/message_center/notification_list_unittest.cc
+++ b/ui/message_center/notification_list_unittest.cc
@@ -4,10 +4,12 @@
 
 #include "ui/message_center/notification_list.h"
 
+#include <stddef.h>
+
 #include <utility>
 
-#include "base/basictypes.h"
 #include "base/i18n/time_formatting.h"
+#include "base/macros.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
diff --git a/ui/message_center/notifier_settings.h b/ui/message_center/notifier_settings.h
index 8bed9c66..95646af 100644
--- a/ui/message_center/notifier_settings.h
+++ b/ui/message_center/notifier_settings.h
@@ -5,9 +5,12 @@
 #ifndef UI_MESSAGE_CENTER_NOTIFIER_SETTINGS_H_
 #define UI_MESSAGE_CENTER_NOTIFIER_SETTINGS_H_
 
+#include <stddef.h>
+
 #include <string>
 
 #include "base/gtest_prod_util.h"
+#include "base/macros.h"
 #include "base/strings/string16.h"
 #include "ui/gfx/image/image.h"
 #include "ui/message_center/message_center_export.h"
diff --git a/ui/message_center/popup_timer.h b/ui/message_center/popup_timer.h
index a822ca8..7ffca1b 100644
--- a/ui/message_center/popup_timer.h
+++ b/ui/message_center/popup_timer.h
@@ -9,6 +9,7 @@
 #include <string>
 #include <vector>
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
diff --git a/ui/message_center/test/run_all_unittests.cc b/ui/message_center/test/run_all_unittests.cc
index cdf8b4f..0211bc3a 100644
--- a/ui/message_center/test/run_all_unittests.cc
+++ b/ui/message_center/test/run_all_unittests.cc
@@ -2,13 +2,14 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/basictypes.h"
 #include "base/bind.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/path_service.h"
 #include "base/test/launcher/unit_test_launcher.h"
 #include "base/test/test_discardable_memory_allocator.h"
 #include "base/test/test_suite.h"
+#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/ui_base_paths.h"
diff --git a/ui/message_center/views/bounded_label.cc b/ui/message_center/views/bounded_label.cc
index f9f6ffb..dbd403e 100644
--- a/ui/message_center/views/bounded_label.cc
+++ b/ui/message_center/views/bounded_label.cc
@@ -4,8 +4,11 @@
 
 #include "ui/message_center/views/bounded_label.h"
 
+#include <stddef.h>
+
 #include <limits>
 
+#include "base/macros.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ui/gfx/canvas.h"
diff --git a/ui/message_center/views/bounded_label.h b/ui/message_center/views/bounded_label.h
index 076f91d..c1cac4e 100644
--- a/ui/message_center/views/bounded_label.h
+++ b/ui/message_center/views/bounded_label.h
@@ -8,6 +8,7 @@
 #include <list>
 #include <map>
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/message_center/message_center_export.h"
diff --git a/ui/message_center/views/constants.h b/ui/message_center/views/constants.h
index 9a0cf885..2600d91 100644
--- a/ui/message_center/views/constants.h
+++ b/ui/message_center/views/constants.h
@@ -5,7 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_CONSTANTS_H_
 #define UI_MESSAGE_CENTER_VIEWS_CONSTANTS_H_
 
-#include "base/basictypes.h"
+#include <stddef.h>
+
 #include "third_party/skia/include/core/SkColor.h"
 #include "ui/gfx/geometry/size.h"
 #include "ui/message_center/message_center_style.h"
diff --git a/ui/message_center/views/desktop_popup_alignment_delegate.h b/ui/message_center/views/desktop_popup_alignment_delegate.h
index 58f26bf..6f26fb6 100644
--- a/ui/message_center/views/desktop_popup_alignment_delegate.h
+++ b/ui/message_center/views/desktop_popup_alignment_delegate.h
@@ -5,6 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_DESKTOP_POPUP_ALIGNMENT_DELEGATE_H_
 #define UI_MESSAGE_CENTER_VIEWS_DESKTOP_POPUP_ALIGNMENT_DELEGATE_H_
 
+#include <stdint.h>
+
 #include "base/macros.h"
 #include "ui/gfx/display_observer.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/message_center/views/message_bubble_base.h b/ui/message_center/views/message_bubble_base.h
index 5c37365..4bfbf60 100644
--- a/ui/message_center/views/message_bubble_base.h
+++ b/ui/message_center/views/message_bubble_base.h
@@ -5,6 +5,7 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_BUBBLE_BASE_H_
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_BUBBLE_BASE_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/message_center/message_center.h"
 #include "ui/message_center/message_center_export.h"
diff --git a/ui/message_center/views/message_center_bubble.cc b/ui/message_center/views/message_center_bubble.cc
index eef4c38c..93ae98a 100644
--- a/ui/message_center/views/message_center_bubble.cc
+++ b/ui/message_center/views/message_center_bubble.cc
@@ -4,6 +4,7 @@
 
 #include "ui/message_center/views/message_center_bubble.h"
 
+#include "base/macros.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/message_center/message_center_style.h"
 #include "ui/message_center/views/message_center_view.h"
diff --git a/ui/message_center/views/message_center_bubble.h b/ui/message_center/views/message_center_bubble.h
index c5a0047638..05c435a 100644
--- a/ui/message_center/views/message_center_bubble.h
+++ b/ui/message_center/views/message_center_bubble.h
@@ -5,6 +5,9 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUBBLE_H_
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUBBLE_H_
 
+#include <stddef.h>
+
+#include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/message_center/views/message_bubble_base.h"
diff --git a/ui/message_center/views/message_center_button_bar.cc b/ui/message_center/views/message_center_button_bar.cc
index ee0b36f2..6a11fd5 100644
--- a/ui/message_center/views/message_center_button_bar.cc
+++ b/ui/message_center/views/message_center_button_bar.cc
@@ -4,6 +4,8 @@
 
 #include "ui/message_center/views/message_center_button_bar.h"
 
+#include "base/macros.h"
+#include "build/build_config.h"
 #include "ui/base/models/simple_menu_model.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/gfx/canvas.h"
diff --git a/ui/message_center/views/message_center_button_bar.h b/ui/message_center/views/message_center_button_bar.h
index be52cb8..74c7b84 100644
--- a/ui/message_center/views/message_center_button_bar.h
+++ b/ui/message_center/views/message_center_button_bar.h
@@ -5,6 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_BUTTON_BAR_H_
 
+#include "base/macros.h"
+#include "build/build_config.h"
 #include "ui/views/controls/button/button.h"
 #include "ui/views/controls/button/image_button.h"
 #include "ui/views/view.h"
diff --git a/ui/message_center/views/message_center_view.cc b/ui/message_center/views/message_center_view.cc
index 99086c6..dc6d527 100644
--- a/ui/message_center/views/message_center_view.cc
+++ b/ui/message_center/views/message_center_view.cc
@@ -7,9 +7,11 @@
 #include <list>
 #include <map>
 
+#include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/message_loop/message_loop.h"
 #include "base/stl_util.h"
+#include "build/build_config.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/animation/multi_animation.h"
 #include "ui/gfx/canvas.h"
diff --git a/ui/message_center/views/message_center_view.h b/ui/message_center/views/message_center_view.h
index dfe8c38..2a99bea 100644
--- a/ui/message_center/views/message_center_view.h
+++ b/ui/message_center/views/message_center_view.h
@@ -6,6 +6,9 @@
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_VIEW_H_
 
 
+#include <stddef.h>
+
+#include "base/macros.h"
 #include "ui/gfx/animation/animation_delegate.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/message_center/message_center_observer.h"
diff --git a/ui/message_center/views/message_center_view_unittest.cc b/ui/message_center/views/message_center_view_unittest.cc
index 8c3043a3..25f8bb69 100644
--- a/ui/message_center/views/message_center_view_unittest.cc
+++ b/ui/message_center/views/message_center_view_unittest.cc
@@ -8,6 +8,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/message_center/views/message_list_view.h b/ui/message_center/views/message_list_view.h
index b961cf8..2909f20 100644
--- a/ui/message_center/views/message_list_view.h
+++ b/ui/message_center/views/message_list_view.h
@@ -8,6 +8,7 @@
 #include <list>
 #include <set>
 
+#include "base/macros.h"
 #include "ui/compositor/paint_context.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/gfx/geometry/size.h"
diff --git a/ui/message_center/views/message_popup_collection.h b/ui/message_center/views/message_popup_collection.h
index d86ade78..138035c 100644
--- a/ui/message_center/views/message_popup_collection.h
+++ b/ui/message_center/views/message_popup_collection.h
@@ -5,10 +5,13 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_POPUP_COLLECTION_H_
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_POPUP_COLLECTION_H_
 
+#include <stddef.h>
+
 #include <list>
 #include <map>
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/message_center/views/message_popup_collection_unittest.cc b/ui/message_center/views/message_popup_collection_unittest.cc
index c72bed3f..e38bb4b 100644
--- a/ui/message_center/views/message_popup_collection_unittest.cc
+++ b/ui/message_center/views/message_popup_collection_unittest.cc
@@ -4,12 +4,15 @@
 
 #include "ui/message_center/views/message_popup_collection.h"
 
+#include <stddef.h>
+
 #include <list>
 #include <utility>
 
 #include "base/message_loop/message_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/events/event.h"
 #include "ui/events/event_constants.h"
diff --git a/ui/message_center/views/message_view.h b/ui/message_center/views/message_view.h
index 28cd607..47840df 100644
--- a/ui/message_center/views/message_view.h
+++ b/ui/message_center/views/message_view.h
@@ -5,6 +5,7 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_VIEW_H_
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_VIEW_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/string16.h"
 #include "third_party/skia/include/core/SkBitmap.h"
diff --git a/ui/message_center/views/message_view_context_menu_controller.h b/ui/message_center/views/message_view_context_menu_controller.h
index ce30ebb5..996ae590 100644
--- a/ui/message_center/views/message_view_context_menu_controller.h
+++ b/ui/message_center/views/message_view_context_menu_controller.h
@@ -5,8 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_VIEW_CONTEXT_MENU_CONTROLLER_H_
 #define UI_MESSAGE_CENTER_VIEWS_MESSAGE_VIEW_CONTEXT_MENU_CONTROLLER_H_
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/views/context_menu_controller.h"
 
 namespace message_center {
diff --git a/ui/message_center/views/notification_button.h b/ui/message_center/views/notification_button.h
index 7c483ea2..67591f2 100644
--- a/ui/message_center/views/notification_button.h
+++ b/ui/message_center/views/notification_button.h
@@ -5,6 +5,7 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_BUTTON_H_
 #define UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_BUTTON_H_
 
+#include "base/macros.h"
 #include "ui/gfx/image/image_skia.h"
 #include "ui/views/controls/button/custom_button.h"
 #include "ui/views/painter.h"
diff --git a/ui/message_center/views/notification_view.cc b/ui/message_center/views/notification_view.cc
index 1bb5392e..b66de849 100644
--- a/ui/message_center/views/notification_view.cc
+++ b/ui/message_center/views/notification_view.cc
@@ -4,10 +4,14 @@
 
 #include "ui/message_center/views/notification_view.h"
 
+#include <stddef.h>
+
 #include "base/command_line.h"
+#include "base/macros.h"
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "build/build_config.h"
 #include "components/url_formatter/elide_url.h"
 #include "third_party/skia/include/core/SkPaint.h"
 #include "third_party/skia/include/core/SkPath.h"
diff --git a/ui/message_center/views/notification_view.h b/ui/message_center/views/notification_view.h
index 2efe8e4..491080cf 100644
--- a/ui/message_center/views/notification_view.h
+++ b/ui/message_center/views/notification_view.h
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "base/gtest_prod_util.h"
+#include "base/macros.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/message_center/views/message_view.h"
 #include "ui/views/view_targeter_delegate.h"
diff --git a/ui/message_center/views/notification_view_unittest.cc b/ui/message_center/views/notification_view_unittest.cc
index ea589c9..383d1989 100644
--- a/ui/message_center/views/notification_view_unittest.cc
+++ b/ui/message_center/views/notification_view_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/message_center/views/notification_view.h"
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ui/message_center/views/notifier_settings_view.cc b/ui/message_center/views/notifier_settings_view.cc
index 954d850..145512d 100644
--- a/ui/message_center/views/notifier_settings_view.cc
+++ b/ui/message_center/views/notifier_settings_view.cc
@@ -4,10 +4,13 @@
 
 #include "ui/message_center/views/notifier_settings_view.h"
 
+#include <stddef.h>
+
 #include <set>
 #include <string>
 #include <utility>
 
+#include "base/macros.h"
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
 #include "skia/ext/image_operations.h"
diff --git a/ui/message_center/views/notifier_settings_view.h b/ui/message_center/views/notifier_settings_view.h
index 3ed70c76..1c635de0 100644
--- a/ui/message_center/views/notifier_settings_view.h
+++ b/ui/message_center/views/notifier_settings_view.h
@@ -8,6 +8,7 @@
 #include <set>
 
 #include "base/gtest_prod_util.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/message_center/notifier_settings.h"
diff --git a/ui/message_center/views/notifier_settings_view_unittest.cc b/ui/message_center/views/notifier_settings_view_unittest.cc
index 1c0841f..94181d1 100644
--- a/ui/message_center/views/notifier_settings_view_unittest.cc
+++ b/ui/message_center/views/notifier_settings_view_unittest.cc
@@ -2,6 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <stddef.h>
+
+#include "base/macros.h"
 #include "base/strings/utf_string_conversions.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/message_center/fake_notifier_settings_provider.h"
diff --git a/ui/message_center/views/padded_button.h b/ui/message_center/views/padded_button.h
index 64ea7e7..fc7df83 100644
--- a/ui/message_center/views/padded_button.h
+++ b/ui/message_center/views/padded_button.h
@@ -5,8 +5,8 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_PADDED_BUTTON_H_
 #define UI_MESSAGE_CENTER_VIEWS_PADDED_BUTTON_H_
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/views/controls/button/image_button.h"
 
 namespace message_center {
diff --git a/ui/message_center/views/proportional_image_view.h b/ui/message_center/views/proportional_image_view.h
index a138cc6c..02430f3 100644
--- a/ui/message_center/views/proportional_image_view.h
+++ b/ui/message_center/views/proportional_image_view.h
@@ -5,6 +5,7 @@
 #ifndef UI_MESSAGE_CENTER_VIEWS_PROPORTIONAL_IMAGE_VIEW_H_
 #define UI_MESSAGE_CENTER_VIEWS_PROPORTIONAL_IMAGE_VIEW_H_
 
+#include "base/macros.h"
 #include "ui/gfx/image/image_skia.h"
 #include "ui/message_center/message_center_export.h"
 #include "ui/views/view.h"
diff --git a/ui/message_center/views/toast_contents_view.cc b/ui/message_center/views/toast_contents_view.cc
index 9dcf7ea..a11b3b98 100644
--- a/ui/message_center/views/toast_contents_view.cc
+++ b/ui/message_center/views/toast_contents_view.cc
@@ -9,6 +9,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
+#include "build/build_config.h"
 #include "ui/accessibility/ax_view_state.h"
 #include "ui/gfx/animation/animation_delegate.h"
 #include "ui/gfx/animation/slide_animation.h"
diff --git a/ui/message_center/views/toast_contents_view.h b/ui/message_center/views/toast_contents_view.h
index 4ffa2f98..cb62092 100644
--- a/ui/message_center/views/toast_contents_view.h
+++ b/ui/message_center/views/toast_contents_view.h
@@ -6,6 +6,7 @@
 #define UI_MESSAGE_CENTER_VIEWS_TOAST_CONTENTS_VIEW_H_
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "ui/gfx/animation/animation_delegate.h"
 #include "ui/gfx/geometry/point.h"
diff --git a/ui/wm/core/accelerator_filter.cc b/ui/wm/core/accelerator_filter.cc
index 5ce6172..9306555c 100644
--- a/ui/wm/core/accelerator_filter.cc
+++ b/ui/wm/core/accelerator_filter.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "build/build_config.h"
 #include "ui/base/accelerators/accelerator.h"
 #include "ui/base/accelerators/accelerator_history.h"
 #include "ui/events/event.h"
diff --git a/ui/wm/core/base_focus_rules.h b/ui/wm/core/base_focus_rules.h
index 4ce5e3ab..0e84e29c 100644
--- a/ui/wm/core/base_focus_rules.h
+++ b/ui/wm/core/base_focus_rules.h
@@ -5,8 +5,8 @@
 #ifndef UI_WM_CORE_BASE_FOCUS_RULES_H_
 #define UI_WM_CORE_BASE_FOCUS_RULES_H_
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/wm/core/focus_rules.h"
 
 namespace wm {
diff --git a/ui/wm/core/capture_controller.h b/ui/wm/core/capture_controller.h
index cc32ae77..bad56e6 100644
--- a/ui/wm/core/capture_controller.h
+++ b/ui/wm/core/capture_controller.h
@@ -7,8 +7,8 @@
 
 #include <map>
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/aura/client/capture_client.h"
 #include "ui/aura/window_observer.h"
 #include "ui/wm/wm_export.h"
diff --git a/ui/wm/core/capture_controller_unittest.cc b/ui/wm/core/capture_controller_unittest.cc
index 5129c2f..b288e0c 100644
--- a/ui/wm/core/capture_controller_unittest.cc
+++ b/ui/wm/core/capture_controller_unittest.cc
@@ -7,6 +7,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/macros.h"
 #include "ui/aura/client/capture_delegate.h"
 #include "ui/aura/env.h"
 #include "ui/aura/test/aura_test_base.h"
diff --git a/ui/wm/core/compound_event_filter.cc b/ui/wm/core/compound_event_filter.cc
index 8861061..70f76c6 100644
--- a/ui/wm/core/compound_event_filter.cc
+++ b/ui/wm/core/compound_event_filter.cc
@@ -6,6 +6,7 @@
 
 #include "base/containers/hash_tables.h"
 #include "base/logging.h"
+#include "build/build_config.h"
 #include "ui/aura/client/cursor_client.h"
 #include "ui/aura/env.h"
 #include "ui/aura/window.h"
diff --git a/ui/wm/core/compound_event_filter.h b/ui/wm/core/compound_event_filter.h
index 26da51d8..d96ece49 100644
--- a/ui/wm/core/compound_event_filter.h
+++ b/ui/wm/core/compound_event_filter.h
@@ -6,6 +6,7 @@
 #define UI_WM_CORE_COMPOUND_EVENT_FILTER_H_
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "ui/events/event.h"
 #include "ui/events/event_handler.h"
diff --git a/ui/wm/core/compound_event_filter_unittest.cc b/ui/wm/core/compound_event_filter_unittest.cc
index 4ffdd26..140dd4c 100644
--- a/ui/wm/core/compound_event_filter_unittest.cc
+++ b/ui/wm/core/compound_event_filter_unittest.cc
@@ -4,6 +4,8 @@
 
 #include "ui/wm/core/compound_event_filter.h"
 
+#include "base/macros.h"
+#include "build/build_config.h"
 #include "ui/aura/client/cursor_client.h"
 #include "ui/aura/env.h"
 #include "ui/aura/test/aura_test_base.h"
diff --git a/ui/wm/core/cursor_manager.cc b/ui/wm/core/cursor_manager.cc
index 163c701..51a30ac6 100644
--- a/ui/wm/core/cursor_manager.cc
+++ b/ui/wm/core/cursor_manager.cc
@@ -7,6 +7,7 @@
 #include <utility>
 
 #include "base/logging.h"
+#include "base/macros.h"
 #include "ui/aura/client/cursor_client_observer.h"
 #include "ui/wm/core/native_cursor_manager.h"
 #include "ui/wm/core/native_cursor_manager_delegate.h"
diff --git a/ui/wm/core/cursor_manager.h b/ui/wm/core/cursor_manager.h
index 168f104..a3afdd3 100644
--- a/ui/wm/core/cursor_manager.h
+++ b/ui/wm/core/cursor_manager.h
@@ -5,8 +5,8 @@
 #ifndef UI_WM_CORE_CURSOR_MANAGER_H_
 #define UI_WM_CORE_CURSOR_MANAGER_H_
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/observer_list.h"
 #include "ui/aura/client/cursor_client.h"
diff --git a/ui/wm/core/cursor_manager_unittest.cc b/ui/wm/core/cursor_manager_unittest.cc
index 24de948..7add1069 100644
--- a/ui/wm/core/cursor_manager_unittest.cc
+++ b/ui/wm/core/cursor_manager_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/wm/core/cursor_manager.h"
 
+#include "base/macros.h"
 #include "ui/aura/client/cursor_client_observer.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/wm/core/native_cursor_manager.h"
diff --git a/ui/wm/core/default_activation_client.cc b/ui/wm/core/default_activation_client.cc
index 2a2c23d..aa41326 100644
--- a/ui/wm/core/default_activation_client.cc
+++ b/ui/wm/core/default_activation_client.cc
@@ -4,6 +4,7 @@
 
 #include "ui/wm/core/default_activation_client.h"
 
+#include "base/macros.h"
 #include "ui/aura/window.h"
 #include "ui/wm/public/activation_change_observer.h"
 #include "ui/wm/public/activation_delegate.h"
diff --git a/ui/wm/core/default_activation_client.h b/ui/wm/core/default_activation_client.h
index 894bccff..073e281 100644
--- a/ui/wm/core/default_activation_client.h
+++ b/ui/wm/core/default_activation_client.h
@@ -9,6 +9,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "ui/aura/window_observer.h"
 #include "ui/wm/public/activation_change_observer.h"
diff --git a/ui/wm/core/default_screen_position_client.h b/ui/wm/core/default_screen_position_client.h
index b27c91f..5678869 100644
--- a/ui/wm/core/default_screen_position_client.h
+++ b/ui/wm/core/default_screen_position_client.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_CORE_DEFAULT_SCREEN_POSITION_CLIENT_H_
 #define UI_WM_CORE_DEFAULT_SCREEN_POSITION_CLIENT_H_
 
+#include "base/macros.h"
 #include "ui/aura/client/screen_position_client.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/core/easy_resize_window_targeter.h b/ui/wm/core/easy_resize_window_targeter.h
index c6a47af..7ff604731 100644
--- a/ui/wm/core/easy_resize_window_targeter.h
+++ b/ui/wm/core/easy_resize_window_targeter.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_CORE_EASY_RESIZE_WINDOW_TARGETER_H_
 #define UI_WM_CORE_EASY_RESIZE_WINDOW_TARGETER_H_
 
+#include "base/macros.h"
 #include "ui/aura/window_targeter.h"
 #include "ui/gfx/geometry/insets.h"
 #include "ui/wm/wm_export.h"
diff --git a/ui/wm/core/focus_controller.h b/ui/wm/core/focus_controller.h
index 5bb672c..5886314 100644
--- a/ui/wm/core/focus_controller.h
+++ b/ui/wm/core/focus_controller.h
@@ -6,6 +6,7 @@
 #define UI_WM_CORE_FOCUS_CONTROLLER_H_
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/observer_list.h"
 #include "base/scoped_observer.h"
diff --git a/ui/wm/core/focus_controller_unittest.cc b/ui/wm/core/focus_controller_unittest.cc
index d871777..eb8ed78f 100644
--- a/ui/wm/core/focus_controller_unittest.cc
+++ b/ui/wm/core/focus_controller_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <map>
 
+#include "base/macros.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/client/default_capture_client.h"
 #include "ui/aura/client/focus_change_observer.h"
diff --git a/ui/wm/core/image_grid.h b/ui/wm/core/image_grid.h
index 0a300d8..8d22595d 100644
--- a/ui/wm/core/image_grid.h
+++ b/ui/wm/core/image_grid.h
@@ -5,7 +5,7 @@
 #ifndef UI_WM_CORE_IMAGE_GRID_H_
 #define UI_WM_CORE_IMAGE_GRID_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/compositor/layer.h"
 #include "ui/compositor/layer_delegate.h"
diff --git a/ui/wm/core/masked_window_targeter.h b/ui/wm/core/masked_window_targeter.h
index 00617bf..940aa66 100644
--- a/ui/wm/core/masked_window_targeter.h
+++ b/ui/wm/core/masked_window_targeter.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_CORE_MASKED_WINDOW_TARGETER_H_
 #define UI_WM_CORE_MASKED_WINDOW_TARGETER_H_
 
+#include "base/macros.h"
 #include "ui/aura/window_targeter.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/core/nested_accelerator_controller.h b/ui/wm/core/nested_accelerator_controller.h
index 70cb6c1..27cb8de 100644
--- a/ui/wm/core/nested_accelerator_controller.h
+++ b/ui/wm/core/nested_accelerator_controller.h
@@ -6,6 +6,7 @@
 #define UI_WM_CORE_NESTED_ACCELERATOR_CONTROLLER_H_
 
 #include "base/callback.h"
+#include "base/macros.h"
 #include "base/message_loop/message_loop.h"
 #include "ui/wm/public/dispatcher_client.h"
 #include "ui/wm/wm_export.h"
diff --git a/ui/wm/core/nested_accelerator_controller_unittest.cc b/ui/wm/core/nested_accelerator_controller_unittest.cc
index cec37c90..0266999 100644
--- a/ui/wm/core/nested_accelerator_controller_unittest.cc
+++ b/ui/wm/core/nested_accelerator_controller_unittest.cc
@@ -4,9 +4,13 @@
 
 #include "ui/wm/core/nested_accelerator_controller.h"
 
+#include <stdint.h>
+
 #include "base/bind.h"
 #include "base/event_types.h"
+#include "base/macros.h"
 #include "base/message_loop/message_loop.h"
+#include "build/build_config.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/aura/test/test_windows.h"
 #include "ui/aura/window.h"
diff --git a/ui/wm/core/nested_accelerator_dispatcher_linux.cc b/ui/wm/core/nested_accelerator_dispatcher_linux.cc
index 214c99c..d9060041 100644
--- a/ui/wm/core/nested_accelerator_dispatcher_linux.cc
+++ b/ui/wm/core/nested_accelerator_dispatcher_linux.cc
@@ -4,6 +4,9 @@
 
 #include "ui/wm/core/nested_accelerator_dispatcher.h"
 
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/run_loop.h"
 #include "ui/base/accelerators/accelerator.h"
diff --git a/ui/wm/core/nested_accelerator_dispatcher_win.cc b/ui/wm/core/nested_accelerator_dispatcher_win.cc
index a8defb1..1b59d68 100644
--- a/ui/wm/core/nested_accelerator_dispatcher_win.cc
+++ b/ui/wm/core/nested_accelerator_dispatcher_win.cc
@@ -4,6 +4,9 @@
 
 #include "ui/wm/core/nested_accelerator_dispatcher.h"
 
+#include <stdint.h>
+
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/message_loop/message_pump_dispatcher.h"
 #include "base/run_loop.h"
diff --git a/ui/wm/core/shadow.h b/ui/wm/core/shadow.h
index 0166d9b..f533244 100644
--- a/ui/wm/core/shadow.h
+++ b/ui/wm/core/shadow.h
@@ -5,7 +5,7 @@
 #ifndef UI_WM_CORE_SHADOW_H_
 #define UI_WM_CORE_SHADOW_H_
 
-#include "base/basictypes.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/compositor/layer_animation_observer.h"
 #include "ui/gfx/geometry/rect.h"
diff --git a/ui/wm/core/shadow_controller.cc b/ui/wm/core/shadow_controller.cc
index 1e5dd49..f070b43 100644
--- a/ui/wm/core/shadow_controller.cc
+++ b/ui/wm/core/shadow_controller.cc
@@ -8,6 +8,7 @@
 
 #include "base/command_line.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/memory/linked_ptr.h"
 #include "base/scoped_observer.h"
 #include "ui/aura/client/aura_constants.h"
diff --git a/ui/wm/core/shadow_controller.h b/ui/wm/core/shadow_controller.h
index b307c02..0d2be6b 100644
--- a/ui/wm/core/shadow_controller.h
+++ b/ui/wm/core/shadow_controller.h
@@ -7,8 +7,8 @@
 
 #include <map>
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "ui/wm/public/activation_change_observer.h"
 #include "ui/wm/wm_export.h"
diff --git a/ui/wm/core/shadow_controller_unittest.cc b/ui/wm/core/shadow_controller_unittest.cc
index 3c8ab0c..e0f346ee 100644
--- a/ui/wm/core/shadow_controller_unittest.cc
+++ b/ui/wm/core/shadow_controller_unittest.cc
@@ -7,6 +7,7 @@
 #include <algorithm>
 #include <vector>
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/client/window_tree_client.h"
diff --git a/ui/wm/core/shadow_unittest.cc b/ui/wm/core/shadow_unittest.cc
index 28376f2b..1423687 100644
--- a/ui/wm/core/shadow_unittest.cc
+++ b/ui/wm/core/shadow_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/wm/core/shadow.h"
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "base/path_service.h"
 #include "third_party/skia/include/core/SkBitmap.h"
diff --git a/ui/wm/core/transient_window_controller.h b/ui/wm/core/transient_window_controller.h
index 0dcf989..2ba28bb 100644
--- a/ui/wm/core/transient_window_controller.h
+++ b/ui/wm/core/transient_window_controller.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_CORE_TRANSIENT_WINDOW_CONTROLLER_H_
 #define UI_WM_CORE_TRANSIENT_WINDOW_CONTROLLER_H_
 
+#include "base/macros.h"
 #include "ui/wm/public/transient_window_client.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/core/transient_window_manager.h b/ui/wm/core/transient_window_manager.h
index 3f84420..9389954 100644
--- a/ui/wm/core/transient_window_manager.h
+++ b/ui/wm/core/transient_window_manager.h
@@ -7,6 +7,7 @@
 
 #include <vector>
 
+#include "base/macros.h"
 #include "base/observer_list.h"
 #include "ui/aura/window_observer.h"
 #include "ui/wm/wm_export.h"
diff --git a/ui/wm/core/transient_window_manager_unittest.cc b/ui/wm/core/transient_window_manager_unittest.cc
index 81e82023..c5e2de8 100644
--- a/ui/wm/core/transient_window_manager_unittest.cc
+++ b/ui/wm/core/transient_window_manager_unittest.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "base/macros.h"
 #include "ui/aura/client/window_tree_client.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/aura/test/test_windows.h"
diff --git a/ui/wm/core/transient_window_stacking_client.cc b/ui/wm/core/transient_window_stacking_client.cc
index 9be72b6..370d130 100644
--- a/ui/wm/core/transient_window_stacking_client.cc
+++ b/ui/wm/core/transient_window_stacking_client.cc
@@ -4,6 +4,8 @@
 
 #include "ui/wm/core/transient_window_stacking_client.h"
 
+#include <stddef.h>
+
 #include <algorithm>
 
 #include "ui/wm/core/transient_window_manager.h"
diff --git a/ui/wm/core/transient_window_stacking_client.h b/ui/wm/core/transient_window_stacking_client.h
index 77a129f..2b3e04a 100644
--- a/ui/wm/core/transient_window_stacking_client.h
+++ b/ui/wm/core/transient_window_stacking_client.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_CORE_TRANSIENT_WINDOW_STACKING_CLIENT_H_
 #define UI_WM_CORE_TRANSIENT_WINDOW_STACKING_CLIENT_H_
 
+#include "base/macros.h"
 #include "ui/aura/client/window_stacking_client.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/core/transient_window_stacking_client_unittest.cc b/ui/wm/core/transient_window_stacking_client_unittest.cc
index 5e37cf4..6c6e146 100644
--- a/ui/wm/core/transient_window_stacking_client_unittest.cc
+++ b/ui/wm/core/transient_window_stacking_client_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/wm/core/transient_window_stacking_client.h"
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/aura/test/test_windows.h"
diff --git a/ui/wm/core/visibility_controller.h b/ui/wm/core/visibility_controller.h
index 0e30454..78c15adf 100644
--- a/ui/wm/core/visibility_controller.h
+++ b/ui/wm/core/visibility_controller.h
@@ -7,6 +7,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "ui/aura/client/visibility_client.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/core/window_animations.cc b/ui/wm/core/window_animations.cc
index 9ef09cd..80950c6 100644
--- a/ui/wm/core/window_animations.cc
+++ b/ui/wm/core/window_animations.cc
@@ -12,6 +12,7 @@
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
 #include "base/logging.h"
+#include "base/macros.h"
 #include "base/message_loop/message_loop.h"
 #include "base/stl_util.h"
 #include "base/time/time.h"
diff --git a/ui/wm/core/window_animations.h b/ui/wm/core/window_animations.h
index 422167e3..1ef34ce 100644
--- a/ui/wm/core/window_animations.h
+++ b/ui/wm/core/window_animations.h
@@ -7,6 +7,7 @@
 
 #include <vector>
 
+#include "base/macros.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/core/window_animations_unittest.cc b/ui/wm/core/window_animations_unittest.cc
index ef642c0..3c22470 100644
--- a/ui/wm/core/window_animations_unittest.cc
+++ b/ui/wm/core/window_animations_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ui/wm/core/window_animations.h"
 
+#include "base/macros.h"
 #include "base/time/time.h"
 #include "ui/aura/test/aura_test_base.h"
 #include "ui/aura/test/test_windows.h"
diff --git a/ui/wm/core/window_modality_controller.cc b/ui/wm/core/window_modality_controller.cc
index 8b7d66a..d017d0b 100644
--- a/ui/wm/core/window_modality_controller.cc
+++ b/ui/wm/core/window_modality_controller.cc
@@ -4,6 +4,8 @@
 
 #include "ui/wm/core/window_modality_controller.h"
 
+#include <stddef.h>
+
 #include <algorithm>
 
 #include "ui/aura/client/aura_constants.h"
diff --git a/ui/wm/core/window_modality_controller.h b/ui/wm/core/window_modality_controller.h
index 1b3baaf3..106db131 100644
--- a/ui/wm/core/window_modality_controller.h
+++ b/ui/wm/core/window_modality_controller.h
@@ -8,6 +8,7 @@
 #include <vector>
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "ui/aura/env_observer.h"
 #include "ui/aura/window_observer.h"
 #include "ui/events/event_handler.h"
diff --git a/ui/wm/core/window_util.h b/ui/wm/core/window_util.h
index 78f2ffbf..3f2495c8 100644
--- a/ui/wm/core/window_util.h
+++ b/ui/wm/core/window_util.h
@@ -7,7 +7,6 @@
 
 #include <vector>
 
-#include "base/basictypes.h"
 #include "base/compiler_specific.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/wm/wm_export.h"
diff --git a/ui/wm/core/wm_state.h b/ui/wm/core/wm_state.h
index 289c9dac..217434ff 100644
--- a/ui/wm/core/wm_state.h
+++ b/ui/wm/core/wm_state.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_CORE_WM_STATE_H_
 #define UI_WM_CORE_WM_STATE_H_
 
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/wm/wm_export.h"
 
diff --git a/ui/wm/public/scoped_tooltip_disabler.h b/ui/wm/public/scoped_tooltip_disabler.h
index 82d98799..c9dfd8f7 100644
--- a/ui/wm/public/scoped_tooltip_disabler.h
+++ b/ui/wm/public/scoped_tooltip_disabler.h
@@ -5,6 +5,7 @@
 #ifndef UI_WM_PUBLIC_SCOPED_TOOLTIP_DISABLER_H_
 #define UI_WM_PUBLIC_SCOPED_TOOLTIP_DISABLER_H_
 
+#include "base/macros.h"
 #include "ui/aura/window_observer.h"
 
 namespace aura {
diff --git a/ui/wm/public/transient_window_client.cc b/ui/wm/public/transient_window_client.cc
index aab8e51..6397e669 100644
--- a/ui/wm/public/transient_window_client.cc
+++ b/ui/wm/public/transient_window_client.cc
@@ -9,7 +9,7 @@
 
 namespace {
 
-TransientWindowClient* instance = NULL;
+TransientWindowClient* instance = nullptr;
 
 }  // namespace
 
diff --git a/ui/wm/public/transient_window_client.h b/ui/wm/public/transient_window_client.h
index 2086100..4ce537f 100644
--- a/ui/wm/public/transient_window_client.h
+++ b/ui/wm/public/transient_window_client.h
@@ -5,7 +5,6 @@
 #ifndef UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_
 #define UI_WM_PUBLIC_TRANSIENT_WINDOW_CLIENT_H_
 
-#include "base/basictypes.h"
 #include "ui/aura/aura_export.h"
 
 namespace aura {
diff --git a/ui/wm/test/run_all_unittests.cc b/ui/wm/test/run_all_unittests.cc
index 970da37..24e0fa2 100644
--- a/ui/wm/test/run_all_unittests.cc
+++ b/ui/wm/test/run_all_unittests.cc
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "base/basictypes.h"
 #include "base/bind.h"
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/path_service.h"
 #include "base/test/launcher/unit_test_launcher.h"
 #include "base/test/test_suite.h"
diff --git a/ui/wm/test/wm_test_helper.h b/ui/wm/test/wm_test_helper.h
index c0c09f60..143a614 100644
--- a/ui/wm/test/wm_test_helper.h
+++ b/ui/wm/test/wm_test_helper.h
@@ -6,6 +6,7 @@
 #define UI_WM_TEST_WM_TEST_HELPER_H_
 
 #include "base/compiler_specific.h"
+#include "base/macros.h"
 #include "base/memory/scoped_ptr.h"
 #include "ui/aura/client/window_tree_client.h"
 #include "ui/aura/window_tree_host.h"