New issue
Advanced search Search tips

Issue 731129 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 3
Type: Bug



Sign in to add a comment

BrowserViewControllerTest.TestSharePageCommandHandling fails when building with Xcode 9 beta

Project Member Reported by sdefresne@chromium.org, Jun 8 2017

Issue description

The test fails with a NSException. This is because OCMEqualTypesAllowingOpaqueStructs() returns false for the following two types:

^{ChromeBrowserState=^^?{map<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> >, std::__1::less<const void *>, std::__1::allocator<std::__1::pair<const void *const, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > > > >={__tree<std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, std::__1::__map_value_compare<const void *, std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, std::__1::less<const void *>, true>, std::__1::allocator<std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > > > >=^{}{__compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *> *>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, void *> > >={__tree_end_node<std::__1::__tree_node_base<void *> *>=^{}}}{__compressed_pair<unsigned long, std::__1::__map_value_compare<const void *, std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, std::__1::less<const void *>, true> >=Q}}}{SequenceChecker={Lock={PlatformThreadRef=^{}}{LockImpl={_opaque_pthread_mutex_t=q[56c]}}}{unique_ptr<base::SequenceCheckerImpl::Core, std::__1::default_delete<base::SequenceCheckerImpl::Core> >={__compressed_pair<base::SequenceCheckerImpl::Core *, std::__1::default_delete<base::SequenceCheckerImpl::Core> >=^{}}}}^{}{scoped_refptr<net::URLRequestContextGetter>=^{}}}

^{ChromeBrowserState=^^?{map<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> >, std::__1::less<const void *>, std::__1::allocator<std::__1::pair<const void *const, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > > > >={__tree<std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, std::__1::__map_value_compare<const void *, std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, std::__1::less<const void *>, true>, std::__1::allocator<std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > > > >=^{__tree_end_node<std::__1::__tree_node_base<void *> *>}{__compressed_pair<std::__1::__tree_end_node<std::__1::__tree_node_base<void *> *>, std::__1::allocator<std::__1::__tree_node<std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, void *> > >={__tree_end_node<std::__1::__tree_node_base<void *> *>=^{__tree_node_base<void *>}}}{__compressed_pair<unsigned long, std::__1::__map_value_compare<const void *, std::__1::__value_type<const void *, std::__1::unique_ptr<base::SupportsUserData::Data, std::__1::default_delete<base::SupportsUserData::Data> > >, std::__1::less<const void *>, true> >=Q}}}{SequenceChecker={Lock={PlatformThreadRef=^{_opaque_pthread_t}}{LockImpl={_opaque_pthread_mutex_t=q[56c]}}}{unique_ptr<base::SequenceCheckerImpl::Core, std::__1::default_delete<base::SequenceCheckerImpl::Core> >={__compressed_pair<base::SequenceCheckerImpl::Core *, std::__1::default_delete<base::SequenceCheckerImpl::Core> >=^{Core}}}}^{URLDataManagerIOSBackend}{scoped_refptr<net::URLRequestContextGetter>=^{URLRequestContextGetter}}}

Note that the differences are due to some unnamed types in substructures (compare for example "scoped_refptr<net::URLRequestContextGetter>=^{}" and "scoped_refptr<net::URLRequestContextGetter>=^{URLRequestContextGetter}").


 
Cc: justincohen@chromium.org
Owner: sdefresne@chromium.org
Status: Started (was: Untriaged)
Labels: Hotlist-iOS11
Project Member

Comment 4 by bugdroid1@chromium.org, Jun 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7405410d7e2280ae94a742af005204ef24d085b5

commit 7405410d7e2280ae94a742af005204ef24d085b5
Author: Sylvain Defresne <sdefresne@chromium.org>
Date: Fri Jun 09 10:04:08 2017

Fix to allow OCMock to work with Xcode 9.

The following two types should be considered equal:
- scoped_refptr<net::URLRequestContextGetter>=^{}
- scoped_refptr<net::URLRequestContextGetter>=^{URLRequestContextGetter}

BUG= 731129 

Change-Id: Ie7debc4b1fbfe8b5ad892e158af0f3ce34211b66
Reviewed-on: https://chromium-review.googlesource.com/527441
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#478240}
[modify] https://crrev.com/7405410d7e2280ae94a742af005204ef24d085b5/third_party/ocmock/OCMock/OCMFunctions.m
[modify] https://crrev.com/7405410d7e2280ae94a742af005204ef24d085b5/third_party/ocmock/README.chromium

Status: Fixed (was: Started)

Sign in to add a comment