diff --git a/DEPS b/DEPS index 36807e5..ddee0bc4 100644 --- a/DEPS +++ b/DEPS
@@ -44,7 +44,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '64735758443e0a81a2f8a67338a5203fd725c2f3', + 'v8_revision': '71c20abb86b91696bf5d96eadc5290d4c0c566f0', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -235,7 +235,7 @@ Var('chromium_git') + '/native_client/src/third_party/scons-2.0.1.git' + '@' + '1c1550e17fc26355d08627fbdec13d8291227067', 'src/third_party/webrtc': - Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + 'db65e09f7280a3cbe98bb11a394f1f4c2a952603', # commit position 18709 + Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + 'e69e1db6a0089106915f93d8c30e1840c16893f8', # commit position 18757 'src/third_party/openmax_dl': Var('chromium_git') + '/external/webrtc/deps/third_party/openmax.git' + '@' + Var('openmax_dl_revision'),
diff --git a/chrome/browser/chromeos/policy/policy_cert_service_factory.cc b/chrome/browser/chromeos/policy/policy_cert_service_factory.cc index 246c8ea..8c86647f 100644 --- a/chrome/browser/chromeos/policy/policy_cert_service_factory.cc +++ b/chrome/browser/chromeos/policy/policy_cert_service_factory.cc
@@ -10,14 +10,11 @@ #include "chrome/browser/chromeos/policy/policy_cert_verifier.h" #include "chrome/browser/chromeos/policy/user_network_configuration_updater_factory.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" -#include "chrome/browser/lifetime/application_lifetime.h" #include "chrome/browser/profiles/incognito_helpers.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/pref_names.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" -#include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_registry_simple.h" -#include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" #include "components/user_manager/user_manager.h" @@ -101,28 +98,6 @@ if (!user) return NULL; - // Backwards compatibility: profiles that used policy-pushed certificates used - // to have this condition marked in their prefs. This signal has moved to - // local_state though, to support checking it before the profile is loaded. - // Check the profile here and update the local_state, if appropriate. - // TODO(joaodasilva): remove this, eventually. - PrefService* prefs = profile->GetOriginalProfile()->GetPrefs(); - if (prefs->GetBoolean(prefs::kUsedPolicyCertificatesOnce)) { - SetUsedPolicyCertificates(user->GetAccountId().GetUserEmail()); - prefs->ClearPref(prefs::kUsedPolicyCertificatesOnce); - - if (user_manager->GetLoggedInUsers().size() > 1u) { - // This login should not have been allowed. After rebooting, local_state - // will contain the updated list of users that used policy-pushed - // certificates and this won't happen again. - // Note that a user becomes logged in before their profile is created. - LOG(ERROR) << "Shutdown session because a tainted profile was added."; - g_browser_process->local_state()->CommitPendingWrite(); - prefs->CommitPendingWrite(); - chrome::AttemptUserExit(); - } - } - UserNetworkConfigurationUpdater* net_conf_updater = UserNetworkConfigurationUpdaterFactory::GetForProfile(profile); if (!net_conf_updater) @@ -137,13 +112,6 @@ return chrome::GetBrowserContextOwnInstanceInIncognito(context); } -void PolicyCertServiceFactory::RegisterProfilePrefs( - user_prefs::PrefRegistrySyncable* registry) { - // TODO(joaodasilva): this is used for backwards compatibility. - // Remove once it's not necessary anymore. - registry->RegisterBooleanPref(prefs::kUsedPolicyCertificatesOnce, false); -} - bool PolicyCertServiceFactory::ServiceIsNULLWhileTesting() const { return true; }
diff --git a/chrome/browser/chromeos/policy/policy_cert_service_factory.h b/chrome/browser/chromeos/policy/policy_cert_service_factory.h index 1a135ef..8ee3aef 100644 --- a/chrome/browser/chromeos/policy/policy_cert_service_factory.h +++ b/chrome/browser/chromeos/policy/policy_cert_service_factory.h
@@ -62,8 +62,6 @@ content::BrowserContext* context) const override; content::BrowserContext* GetBrowserContextToUse( content::BrowserContext* context) const override; - void RegisterProfilePrefs( - user_prefs::PrefRegistrySyncable* registry) override; bool ServiceIsNULLWhileTesting() const override; DISALLOW_COPY_AND_ASSIGN(PolicyCertServiceFactory);
diff --git a/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto b/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto index eaffd32..e12ba924 100644 --- a/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto +++ b/chrome/browser/chromeos/policy/proto/chrome_device_policy.proto
@@ -799,15 +799,18 @@ // functionality. message DeviceSecondFactorAuthenticationProto { enum U2fMode { + // Default value, unspecified. + UNSET = 0; // Feature disabled. - DISABLED = 0; - // U2F as defined by the FIDO Alliance specification. - U2F = 1; + DISABLED = 1; + // U2F as defined by the FIDO Alliance specification: + // https://fidoalliance.org/specs/fido-u2f-v1.1-id-20160915.zip + U2F = 2; // U2F plus extensions for individual attestation certificate. - U2F_EXTENDED = 2; + U2F_EXTENDED = 3; }; - optional U2fMode mode = 1 [default = DISABLED]; + optional U2fMode mode = 1; } message ChromeDeviceSettingsProto {
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc index dcf21cd..f974f24 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc +++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.cc
@@ -99,8 +99,7 @@ store_(std::move(store)), external_data_manager_(std::move(external_data_manager)), component_policy_cache_path_(component_policy_cache_path), - wait_for_policy_fetch_(wait_for_policy_fetch), - policy_fetch_timeout_(false, false) { + wait_for_policy_fetch_(wait_for_policy_fetch) { time_init_started_ = base::Time::Now(); // Caller must pass a non-zero policy_fetch_timeout iff @@ -111,8 +110,7 @@ chromeos::switches::kAllowFailedPolicyFetchForTest) || !initial_policy_fetch_timeout.is_max(); // No need to set the timer when the timeout is infinite. - if (wait_for_policy_fetch_ && allow_failed_policy_fetches_ && - !initial_policy_fetch_timeout.is_max()) { + if (wait_for_policy_fetch_ && !initial_policy_fetch_timeout.is_max()) { policy_fetch_timeout_.Start( FROM_HERE, initial_policy_fetch_timeout,
diff --git a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h index e3ef616..a7403924 100644 --- a/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h +++ b/chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h
@@ -44,8 +44,10 @@ public CloudPolicyService::Observer, public KeyedService { public: - // If |wait_for_policy_fetch| is true, IsInitializationComplete() will return - // false as long as there hasn't been a successful policy fetch. + // If |wait_for_policy_fetch| is true, IsInitializationComplete() is forced to + // false until either there has been a successful policy fetch from the server + // or |initial_policy_fetch_timeout| has expired. (The timeout may be set to + // TimeDelta::Max() to block permanently.) // |task_runner| is the runner for policy refresh tasks. // |file_task_runner| is used for file operations. Currently this must be the // FILE BrowserThread. @@ -164,7 +166,7 @@ // A timer that puts a hard limit on the maximum time to wait for the initial // policy fetch. - base::Timer policy_fetch_timeout_; + base::Timer policy_fetch_timeout_{false, false}; // The pref service to pass to the refresh scheduler on initialization. PrefService* local_state_;
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index d66b7d48..efd6292 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -820,13 +820,6 @@ // honored for public accounts. const char kTermsOfServiceURL[] = "terms_of_service.url"; -// Indicates that the Profile has made navigations that used a certificate -// installed by the system administrator. If that is true then the local cache -// of remote data is tainted (e.g. shared scripts), and future navigations -// show a warning indicating that the organization may track the browsing -// session. -const char kUsedPolicyCertificatesOnce[] = "used_policy_certificates_once"; - // Indicates whether the remote attestation is enabled for the user. const char kAttestationEnabled[] = "attestation.enabled"; // The list of extensions allowed to use the platformKeysPrivate API for
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index a6e4507..184079a2 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -290,7 +290,6 @@ extern const char kPowerWaitForInitialUserActivity[]; extern const char kPowerForceNonzeroBrightnessForUserActivity[]; extern const char kTermsOfServiceURL[]; -extern const char kUsedPolicyCertificatesOnce[]; extern const char kAttestationEnabled[]; extern const char kAttestationExtensionWhitelist[]; extern const char kTouchHudProjectionEnabled[];
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 6ab8e159..552424f 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -9638,22 +9638,22 @@ 'type': 'int-enum', 'schema': { 'type': 'integer', - 'enum': [ 0, 1, 2 ], + 'enum': [ 0, 1, 2, 3 ], }, 'items': [ { 'name': 'Disabled', - 'value': 0, + 'value': 1, 'caption': '''Second factor disabled''', }, { 'name': 'U2F', - 'value': 1, + 'value': 2, 'caption': '''U2F (Universal Second Factor)''', }, { 'name': 'U2F_EXTENDED', - 'value': 2, + 'value': 3, 'caption': '''U2F plus extensions for individual attestation''', }, ], @@ -9662,13 +9662,13 @@ 'features': { 'dynamic_refresh': False, }, - 'example_value': 1, + 'example_value': 2, 'id': 372, 'caption': '''Integrated second factor authentication mode''', 'tags': ['system-security'], 'desc': '''Specifies how the on-board secure element hardware can be used to provide a second-factor authentication if it is compatible with this feature. The machine power button is used to detect the user physical presence. - If 'Disabled' is selected or the policy is left unset, no second factor is provided. + If 'Disabled' is selected, no second factor is provided. If 'U2F' is selected, the integrated second factor will behave according the FIDO U2F specification.
diff --git a/content/browser/bad_message.h b/content/browser/bad_message.h index 79cdf4f..528f094a 100644 --- a/content/browser/bad_message.h +++ b/content/browser/bad_message.h
@@ -82,8 +82,8 @@ SWDH_GET_REGISTRATION_FOR_READY_NO_HOST = 58, SWDH_GET_REGISTRATION_FOR_READY_ALREADY_IN_PROGRESS = 59, SWDH_POST_MESSAGE = 60, - SWDH_PROVIDER_CREATED_NO_HOST = 61, - SWDH_PROVIDER_DESTROYED_NO_HOST = 62, + SWDH_PROVIDER_CREATED_NO_HOST = 61, // obsolete; no longer used + SWDH_PROVIDER_DESTROYED_NO_HOST = 62, // obsolete; no longer used SWDH_SET_HOSTED_VERSION_NO_HOST = 63, OBSOLETE_SWDH_SET_HOSTED_VERSION = 64, SWDH_WORKER_SCRIPT_LOAD_NO_HOST = 65, @@ -194,7 +194,11 @@ RFH_ILLEGAL_UPLOAD_PARAMS = 170, RFH_BASE_URL_FOR_DATA_URL_SPECIFIED = 171, RFPH_ILLEGAL_UPLOAD_PARAMS = 172, - SWDH_PROVIDER_CREATED_ILLEGAL_TYPE = 173, + SWDH_PROVIDER_CREATED_ILLEGAL_TYPE = 173, // obsolete; no longer used + SWDH_PROVIDER_CREATED_ILLEGAL_TYPE_NOT_WINDOW = 174, + SWDH_PROVIDER_CREATED_ILLEGAL_TYPE_CONTROLLER = 175, + SWDH_PROVIDER_CREATED_DUPLICATE_ID = 176, + SWDH_PROVIDER_CREATED_BAD_ID = 177, // Please add new elements here. The naming convention is abbreviated class // name (e.g. RenderFrameHost becomes RFH) plus a unique description of the
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc index 729707f9..38d7534e 100644 --- a/content/browser/service_worker/embedded_worker_instance.cc +++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -83,24 +83,22 @@ void(std::unique_ptr<EmbeddedWorkerInstance::DevToolsProxy>, bool wait_for_debugger)>& callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - std::unique_ptr<EmbeddedWorkerInstance::DevToolsProxy> devtools_proxy; - int worker_devtools_agent_route_id = MSG_ROUTING_NONE; - bool wait_for_debugger = false; - if (RenderProcessHost* rph = RenderProcessHost::FromID(process_id)) { - // |rph| may be NULL in unit tests. - worker_devtools_agent_route_id = rph->GetNextRoutingID(); - wait_for_debugger = - ServiceWorkerDevToolsManager::GetInstance()->WorkerCreated( - process_id, worker_devtools_agent_route_id, - ServiceWorkerDevToolsManager::ServiceWorkerIdentifier( - service_worker_context, service_worker_context_weak, - service_worker_version_id, url, scope), - is_installed); - if (request.is_pending()) - BindInterface(rph, std::move(request)); - devtools_proxy = base::MakeUnique<EmbeddedWorkerInstance::DevToolsProxy>( - process_id, worker_devtools_agent_route_id); - } + RenderProcessHost* rph = RenderProcessHost::FromID(process_id); + // TODO(shimazu): Temporary CHECK to debug https://crbug.com/736649. + CHECK(rph); + int worker_devtools_agent_route_id = rph->GetNextRoutingID(); + bool wait_for_debugger = + ServiceWorkerDevToolsManager::GetInstance()->WorkerCreated( + process_id, worker_devtools_agent_route_id, + ServiceWorkerDevToolsManager::ServiceWorkerIdentifier( + service_worker_context, service_worker_context_weak, + service_worker_version_id, url, scope), + is_installed); + if (request.is_pending()) + BindInterface(rph, std::move(request)); + std::unique_ptr<EmbeddedWorkerInstance::DevToolsProxy> devtools_proxy = + base::MakeUnique<EmbeddedWorkerInstance::DevToolsProxy>( + process_id, worker_devtools_agent_route_id); BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, base::Bind(callback, base::Passed(&devtools_proxy), wait_for_debugger)); @@ -591,7 +589,8 @@ std::unique_ptr<EmbeddedWorkerStartParams> params) { if (!context_) return SERVICE_WORKER_ERROR_ABORT; - DCHECK(pending_dispatcher_request_.is_pending()); + // TODO(shimazu): Temporary CHECK to debug https://crbug.com/736649. + CHECK(pending_dispatcher_request_.is_pending()); DCHECK(!instance_host_binding_.is_bound()); mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo host_ptr_info;
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc index 71be1360..e727135 100644 --- a/content/browser/service_worker/service_worker_dispatcher_host.cc +++ b/content/browser/service_worker/service_worker_dispatcher_host.cc
@@ -87,15 +87,12 @@ ResourceContext* resource_context) : BrowserMessageFilter(kFilteredMessageClasses, arraysize(kFilteredMessageClasses)), + BrowserAssociatedInterface<mojom::ServiceWorkerDispatcherHost>(this, + this), render_process_id_(render_process_id), resource_context_(resource_context), channel_ready_(false), - weak_factory_(this) { - AddAssociatedInterface( - mojom::ServiceWorkerDispatcherHost::Name_, - base::Bind(&ServiceWorkerDispatcherHost::AddMojoBinding, - base::Unretained(this))); -} + weak_factory_(this) {} ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { if (GetContext()) @@ -188,13 +185,6 @@ return handled; } -void ServiceWorkerDispatcherHost::AddMojoBinding( - mojo::ScopedInterfaceEndpointHandle handle) { - bindings_.AddBinding( - this, - mojom::ServiceWorkerDispatcherHostAssociatedRequest(std::move(handle))); -} - bool ServiceWorkerDispatcherHost::Send(IPC::Message* message) { if (channel_ready_) { BrowserMessageFilter::Send(message); @@ -940,8 +930,8 @@ if (!GetContext()) return; if (GetContext()->GetProviderHost(render_process_id_, info.provider_id)) { - bad_message::ReceivedBadMessage(this, - bad_message::SWDH_PROVIDER_CREATED_NO_HOST); + bad_message::ReceivedBadMessage( + this, bad_message::SWDH_PROVIDER_CREATED_DUPLICATE_ID); return; } @@ -966,7 +956,7 @@ // Otherwise, completed the initialization of the pre-created host. if (info.type != SERVICE_WORKER_PROVIDER_FOR_WINDOW) { bad_message::ReceivedBadMessage( - this, bad_message::SWDH_PROVIDER_CREATED_ILLEGAL_TYPE); + this, bad_message::SWDH_PROVIDER_CREATED_ILLEGAL_TYPE_NOT_WINDOW); return; } provider_host->CompleteNavigationInitialized(render_process_id_, @@ -977,12 +967,12 @@ // ServiceWorkerVersion. if (info.type == SERVICE_WORKER_PROVIDER_FOR_CONTROLLER) { bad_message::ReceivedBadMessage( - this, bad_message::SWDH_PROVIDER_CREATED_ILLEGAL_TYPE); + this, bad_message::SWDH_PROVIDER_CREATED_ILLEGAL_TYPE_CONTROLLER); return; } if (ServiceWorkerUtils::IsBrowserAssignedProviderId(info.provider_id)) { bad_message::ReceivedBadMessage( - this, bad_message::SWDH_PROVIDER_CREATED_NO_HOST); + this, bad_message::SWDH_PROVIDER_CREATED_BAD_ID); return; } GetContext()->AddProviderHost(ServiceWorkerProviderHost::Create(
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.h b/content/browser/service_worker/service_worker_dispatcher_host.h index 85f93955..32029b3 100644 --- a/content/browser/service_worker/service_worker_dispatcher_host.h +++ b/content/browser/service_worker/service_worker_dispatcher_host.h
@@ -18,9 +18,8 @@ #include "content/browser/service_worker/service_worker_registration_status.h" #include "content/common/service_worker/service_worker.mojom.h" #include "content/common/service_worker/service_worker_types.h" +#include "content/public/browser/browser_associated_interface.h" #include "content/public/browser/browser_message_filter.h" -#include "mojo/public/cpp/bindings/associated_binding_set.h" -#include "mojo/public/cpp/bindings/strong_associated_binding_set.h" class GURL; @@ -48,8 +47,9 @@ // content::ServiceWorkerDispatcherHost. This can be overridden only for // testing. class CONTENT_EXPORT ServiceWorkerDispatcherHost - : public mojom::ServiceWorkerDispatcherHost, - public BrowserMessageFilter { + : public BrowserMessageFilter, + public BrowserAssociatedInterface<mojom::ServiceWorkerDispatcherHost>, + public mojom::ServiceWorkerDispatcherHost { public: ServiceWorkerDispatcherHost( int render_process_id, @@ -116,10 +116,6 @@ using StatusCallback = base::Callback<void(ServiceWorkerStatusCode status)>; enum class ProviderStatus { OK, NO_CONTEXT, DEAD_HOST, NO_HOST, NO_URL }; - // Called when mojom::ServiceWorkerDispatcherHostPtr is created on the - // renderer-side. - void AddMojoBinding(mojo::ScopedInterfaceEndpointHandle handle); - // mojom::ServiceWorkerDispatcherHost implementation void OnProviderCreated(ServiceWorkerProviderHostInfo info) override; @@ -277,8 +273,6 @@ bool channel_ready_; // True after BrowserMessageFilter::sender_ != NULL. std::vector<std::unique_ptr<IPC::Message>> pending_messages_; - mojo::AssociatedBindingSet<mojom::ServiceWorkerDispatcherHost> bindings_; - base::WeakPtrFactory<ServiceWorkerDispatcherHost> weak_factory_; DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDispatcherHost);
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc index 0f5c67b..839812e 100644 --- a/content/browser/service_worker/service_worker_provider_host.cc +++ b/content/browser/service_worker/service_worker_provider_host.cc
@@ -100,6 +100,44 @@ context->RemoveProviderHost(process_id, provider_id); } +// Wraps associated request for another associated request. +class AssociatedURLLoaderRelay final : public mojom::URLLoader { + public: + static void CreateLoaderAndStart( + mojom::URLLoaderFactory* factory, + mojom::URLLoaderAssociatedRequest request, + int routing_id, + int request_id, + uint32_t options, + const ResourceRequest& resource_request, + mojom::URLLoaderClientPtr client, + const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { + mojom::URLLoaderAssociatedPtr associated_ptr; + mojom::URLLoaderAssociatedRequest associated_request = + mojo::MakeRequest(&associated_ptr); + factory->CreateLoaderAndStart(std::move(associated_request), routing_id, + request_id, options, resource_request, + std::move(client), traffic_annotation); + mojo::MakeStrongAssociatedBinding( + base::MakeUnique<AssociatedURLLoaderRelay>(std::move(associated_ptr)), + std::move(request)); + } + + explicit AssociatedURLLoaderRelay( + mojom::URLLoaderAssociatedPtr associated_ptr) + : associated_ptr_(std::move(associated_ptr)) {} + ~AssociatedURLLoaderRelay() override {} + void FollowRedirect() override { associated_ptr_->FollowRedirect(); } + void SetPriority(net::RequestPriority priority, + int intra_priority_value) override { + associated_ptr_->SetPriority(priority, intra_priority_value); + } + + private: + mojom::URLLoaderAssociatedPtr associated_ptr_; + DISALLOW_COPY_AND_ASSIGN(AssociatedURLLoaderRelay); +}; + // Used by a Service Worker for script loading only during the installation // time. For now this is just a proxy loader for the network loader. // Eventually this should replace the existing URLRequestJob-based request @@ -226,10 +264,12 @@ traffic_annotation) override { if (!ShouldHandleScriptRequest(resource_request)) { // If the request should not be handled by ScriptURLLoader, just - // fallback to the network. + // fallback to the network. This needs a relaying as we use different + // associated message pipes. // TODO(kinuko): Record the reason like what we do with netlog in // ServiceWorkerContextRequestHandler. - loader_factory_getter_->GetNetworkFactory()->get()->CreateLoaderAndStart( + AssociatedURLLoaderRelay::CreateLoaderAndStart( + loader_factory_getter_->GetNetworkFactory()->get(), std::move(request), routing_id, request_id, options, resource_request, std::move(client), traffic_annotation); return;
diff --git a/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.cc b/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.cc index 685e576b..52a14ea 100644 --- a/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.cc +++ b/content/renderer/media/webrtc/webrtc_media_stream_track_adapter_map.cc
@@ -21,7 +21,6 @@ } WebRtcMediaStreamTrackAdapterMap::AdapterEntry::~AdapterEntry() { - DCHECK(!adapter || !adapter->is_initialized()); } WebRtcMediaStreamTrackAdapterMap::AdapterRef::AdapterRef( @@ -35,14 +34,23 @@ WebRtcMediaStreamTrackAdapterMap::AdapterRef::~AdapterRef() { DCHECK(map_->main_thread_->BelongsToCurrentThread()); - base::AutoLock scoped_lock(map_->lock_); - adapter_ = nullptr; - if (entry()->adapter->HasOneRef()) { - entry()->adapter->Dispose(); - if (type_ == Type::kLocal) - map_->local_track_adapters_.erase(it_); - else - map_->remote_track_adapters_.erase(it_); + scoped_refptr<WebRtcMediaStreamTrackAdapter> removed_adapter; + { + base::AutoLock scoped_lock(map_->lock_); + adapter_ = nullptr; + if (entry()->adapter->HasOneRef()) { + removed_adapter = entry()->adapter; + if (type_ == Type::kLocal) + map_->local_track_adapters_.erase(it_); + else + map_->remote_track_adapters_.erase(it_); + } + } + // Dispose the adapter if it was removed. This is performed after releasing + // the lock so that it is safe for any disposal mechanism to do synchronous + // invokes to the signaling thread without any risk of deadlock. + if (removed_adapter) { + removed_adapter->Dispose(); } }
diff --git a/content/renderer/pepper/pepper_websocket_host.cc b/content/renderer/pepper/pepper_websocket_host.cc index 3cd58d5..7d80841 100644 --- a/content/renderer/pepper/pepper_websocket_host.cc +++ b/content/renderer/pepper/pepper_websocket_host.cc
@@ -18,7 +18,6 @@ #include "third_party/WebKit/public/platform/WebURL.h" #include "third_party/WebKit/public/web/WebArrayBuffer.h" #include "third_party/WebKit/public/web/WebDocument.h" -#include "third_party/WebKit/public/web/WebPepperSocket.h" #include "third_party/WebKit/public/web/WebPluginContainer.h" using blink::WebArrayBuffer; @@ -255,13 +254,11 @@ renderer_ppapi_host_->GetContainerForInstance(pp_instance()); if (!container) return PP_ERROR_BADARGUMENT; - websocket_.reset(WebPepperSocket::Create(container->GetDocument(), this)); + websocket_ = WebPepperSocket::Create(container->GetDocument(), this); DCHECK(websocket_.get()); if (!websocket_) return PP_ERROR_NOTSUPPORTED; - // Set receiving binary object type. - websocket_->SetBinaryType(WebPepperSocket::kBinaryTypeArrayBuffer); websocket_->Connect(web_url, web_protocols); connect_reply_ = context->MakeReplyMessageContext();
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn index 142e159..b08fc31 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn
@@ -245,6 +245,7 @@ } source_set("main") { + configs += [ "//build/config/compiler:enable_arc" ] sources = [ "chrome_exe_main.mm", ]
diff --git a/ios/chrome/app/chrome_exe_main.mm b/ios/chrome/app/chrome_exe_main.mm index 52e072ca..308e50d 100644 --- a/ios/chrome/app/chrome_exe_main.mm +++ b/ios/chrome/app/chrome_exe_main.mm
@@ -12,6 +12,10 @@ #include "ios/chrome/browser/crash_report/crash_keys.h" #include "ios/chrome/common/channel_info.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + namespace { NSString* const kUIApplicationDelegateInfoKey = @"UIApplicationDelegate";
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index e7ab115d..0686c956 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -1118,9 +1118,9 @@ } - (void)startFreeMemoryMonitoring { - base::PostTaskWithTraits( - FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, - base::BindOnce(&ios_internal::AsynchronousFreeMemoryMonitor)); + // No need for a post-task or a deferred initialisation as the memory + // monitoring already happens on a background sequence. + StartFreeMemoryMonitor(); } - (void)scheduleLowPriorityStartupTasks { @@ -1924,8 +1924,8 @@ runBlockIfNecessary:kPrefObserverInit]; DCHECK(_localStatePrefObserverBridge); _settingsNavigationController = [SettingsNavigationController - newSettingsMainControllerWithMainBrowserState:_mainBrowserState - delegate:self]; + newSettingsMainControllerWithBrowserState:_mainBrowserState + delegate:self]; [[self topPresentedViewController] presentViewController:_settingsNavigationController animated:YES
diff --git a/ios/chrome/app/memory_monitor.h b/ios/chrome/app/memory_monitor.h index eb2642f..540911c 100644 --- a/ios/chrome/app/memory_monitor.h +++ b/ios/chrome/app/memory_monitor.h
@@ -5,15 +5,8 @@ #ifndef IOS_CHROME_APP_MEMORY_MONITOR_H_ #define IOS_CHROME_APP_MEMORY_MONITOR_H_ -namespace ios_internal { - -// Timer to launch [UpdateBreakpadMemoryValues] every 5 seconds. -void AsynchronousFreeMemoryMonitor(); - -// Checks the values of free RAM and free disk space and updates breakpad with -// these values. -void UpdateBreakpadMemoryValues(); - -} // namespace ios_internal +// Starts the memory monitor that periodically updates the amount of free +// memory and free disk space with breakpad in the background. +void StartFreeMemoryMonitor(); #endif // IOS_CHROME_APP_MEMORY_MONITOR_H_
diff --git a/ios/chrome/app/memory_monitor.mm b/ios/chrome/app/memory_monitor.mm index 927afc6..f971388 100644 --- a/ios/chrome/app/memory_monitor.mm +++ b/ios/chrome/app/memory_monitor.mm
@@ -14,33 +14,47 @@ #import "base/mac/foundation_util.h" #include "base/strings/sys_string_conversions.h" #include "base/sys_info.h" +#include "base/task_scheduler/post_task.h" +#include "base/threading/thread_restrictions.h" #import "ios/chrome/browser/crash_report/breakpad_helper.h" -#include "ios/web/public/web_thread.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif -namespace ios_internal { +namespace { +// Delay between each invocations of |UpdateBreakpadMemoryValues|. +const int64_t kMemoryMonitorDelayInSeconds = 30; -void AsynchronousFreeMemoryMonitor() { - UpdateBreakpadMemoryValues(); - web::WebThread::PostDelayedTask( - web::WebThread::FILE, FROM_HERE, - base::Bind(&ios_internal::AsynchronousFreeMemoryMonitor), - base::TimeDelta::FromSeconds(30)); -} - +// Checks the values of free RAM and free disk space and updates breakpad with +// these values. void UpdateBreakpadMemoryValues() { - int freeMemory = + base::ThreadRestrictions::AssertIOAllowed(); + const int free_memory = static_cast<int>(base::SysInfo::AmountOfAvailablePhysicalMemory() / 1024); - breakpad_helper::SetCurrentFreeMemoryInKB(freeMemory); + breakpad_helper::SetCurrentFreeMemoryInKB(free_memory); NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* value = base::mac::ObjCCastStrict<NSString>([paths lastObject]); base::FilePath filePath = base::FilePath(base::SysNSStringToUTF8(value)); - int freeDiskSpace = + const int free_disk_space = static_cast<int>(base::SysInfo::AmountOfFreeDiskSpace(filePath) / 1024); - breakpad_helper::SetCurrentFreeDiskInKB(freeDiskSpace); + breakpad_helper::SetCurrentFreeDiskInKB(free_disk_space); } + +// Invokes |UpdateBreakpadMemoryValues| and schedules itself to be called +// after |kMemoryMonitorDelayInSeconds|. +void AsynchronousFreeMemoryMonitor() { + UpdateBreakpadMemoryValues(); + base::PostDelayedTaskWithTraits( + FROM_HERE, {base::MayBlock(), base::TaskPriority::BACKGROUND}, + base::BindOnce(&AsynchronousFreeMemoryMonitor), + base::TimeDelta::FromSeconds(kMemoryMonitorDelayInSeconds)); +} +} // namespace + +void StartFreeMemoryMonitor() { + base::PostTaskWithTraits(FROM_HERE, + {base::MayBlock(), base::TaskPriority::BACKGROUND}, + base::BindOnce(&AsynchronousFreeMemoryMonitor)); }
diff --git a/ios/chrome/browser/content_suggestions/BUILD.gn b/ios/chrome/browser/content_suggestions/BUILD.gn index e0ac8ee..40964dd 100644 --- a/ios/chrome/browser/content_suggestions/BUILD.gn +++ b/ios/chrome/browser/content_suggestions/BUILD.gn
@@ -9,6 +9,9 @@ "content_suggestions_category_wrapper.mm", "content_suggestions_coordinator.h", "content_suggestions_coordinator.mm", + "content_suggestions_header_controller.h", + "content_suggestions_header_controller.mm", + "content_suggestions_header_controller_delegate.h", "content_suggestions_header_provider.h", "content_suggestions_mediator.h", "content_suggestions_mediator.mm", @@ -38,12 +41,15 @@ "//ios/chrome/browser/ui/collection_view/cells", "//ios/chrome/browser/ui/commands", "//ios/chrome/browser/ui/content_suggestions", + "//ios/chrome/browser/ui/content_suggestions:content_suggestions_util", "//ios/chrome/browser/ui/content_suggestions/cells", "//ios/chrome/browser/ui/content_suggestions/cells:cells_ui", "//ios/chrome/browser/ui/content_suggestions/identifier", "//ios/chrome/browser/ui/favicon", + "//ios/chrome/browser/ui/ntp:ntp_header", "//ios/chrome/browser/ui/ntp:ntp_internal", "//ios/chrome/browser/ui/reading_list", + "//ios/chrome/browser/ui/toolbar", "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/images", "//ios/web",
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.h b/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.h index 121b789e..572e226 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.h +++ b/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.h
@@ -12,6 +12,7 @@ } @protocol UrlLoader; +class WebStateList; // Coordinator to manage the Suggestions UI via a // ContentSuggestionsViewController. @@ -21,6 +22,8 @@ @property(nonatomic, assign) ios::ChromeBrowserState* browserState; // URLLoader used to open pages. @property(nonatomic, weak) id<UrlLoader> URLLoader; +@property(nonatomic, assign) WebStateList* webStateList; +@property(nonatomic, weak) id dispatcher; // Whether the Suggestions UI is displayed. If this is true, start is a no-op. @property(nonatomic, readonly) BOOL visible;
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm b/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm index 855597d..172cf0f 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm +++ b/ios/chrome/browser/content_suggestions/content_suggestions_coordinator.mm
@@ -16,6 +16,7 @@ #include "components/reading_list/core/reading_list_model.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h" +#import "ios/chrome/browser/content_suggestions/content_suggestions_header_controller.h" #import "ios/chrome/browser/content_suggestions/content_suggestions_mediator.h" #include "ios/chrome/browser/favicon/ios_chrome_large_icon_service_factory.h" #import "ios/chrome/browser/metrics/new_tab_page_uma.h" @@ -31,6 +32,7 @@ #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_commands.h" #import "ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h" #import "ios/chrome/browser/ui/content_suggestions/identifier/content_suggestion_identifier.h" +#import "ios/chrome/browser/ui/ntp/google_landing_mediator.h" #import "ios/chrome/browser/ui/ntp/notification_promo_whats_new.h" #import "ios/chrome/browser/ui/uikit_ui_util.h" #import "ios/chrome/browser/ui/url_loader.h" @@ -52,6 +54,9 @@ ContentSuggestionsViewController* suggestionsViewController; @property(nonatomic, strong) ContentSuggestionsMediator* contentSuggestionsMediator; +@property(nonatomic, strong) + ContentSuggestionsHeaderController* headerController; +@property(nonatomic, strong) GoogleLandingMediator* googleLandingMediator; // Opens the |URL| in a new tab |incognito| or not. - (void)openNewTabWithURL:(const GURL&)URL incognito:(BOOL)incognito; @@ -71,6 +76,10 @@ @synthesize URLLoader = _URLLoader; @synthesize visible = _visible; @synthesize contentSuggestionsMediator = _contentSuggestionsMediator; +@synthesize headerController = _headerController; +@synthesize googleLandingMediator = _googleLandingMediator; +@synthesize webStateList = _webStateList; +@synthesize dispatcher = _dispatcher; - (void)start { if (self.visible || !self.browserState) { @@ -86,6 +95,16 @@ self.browserState); contentSuggestionsService->remote_suggestions_scheduler()->OnNTPOpened(); + self.headerController = [[ContentSuggestionsHeaderController alloc] init]; + self.headerController.dispatcher = self.dispatcher; + self.headerController.readingListModel = + ReadingListModelFactory::GetForBrowserState(self.browserState); + self.googleLandingMediator = + [[GoogleLandingMediator alloc] initWithConsumer:self.headerController + browserState:self.browserState + dispatcher:self.dispatcher + webStateList:self.webStateList]; + self.contentSuggestionsMediator = [[ContentSuggestionsMediator alloc] initWithContentService:contentSuggestionsService largeIconService:IOSChromeLargeIconServiceFactory:: @@ -93,6 +112,7 @@ mostVisitedSite:IOSMostVisitedSitesFactory::NewForBrowserState( self.browserState)]; self.contentSuggestionsMediator.commandHandler = self; + self.contentSuggestionsMediator.headerProvider = self.headerController; self.suggestionsViewController = [[ContentSuggestionsViewController alloc] initWithStyle:CollectionViewControllerStyleDefault @@ -121,6 +141,9 @@ self.navigationController = nil; self.contentSuggestionsMediator = nil; self.alertCoordinator = nil; + self.headerController = nil; + [self.googleLandingMediator shutdown]; + self.googleLandingMediator = nil; _visible = NO; }
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_header_controller.h b/ios/chrome/browser/content_suggestions/content_suggestions_header_controller.h new file mode 100644 index 0000000..3d3e743a --- /dev/null +++ b/ios/chrome/browser/content_suggestions/content_suggestions_header_controller.h
@@ -0,0 +1,34 @@ +// Copyright 2017 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_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_HEADER_CONTROLLER_H_ +#define IOS_CHROME_BROWSER_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_HEADER_CONTROLLER_H_ + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/content_suggestions/content_suggestions_header_provider.h" +#import "ios/chrome/browser/ui/ntp/google_landing_consumer.h" + +@protocol ContentSuggestionsHeaderControllerDelegate; +@protocol ContentSuggestionsHeaderControllerCommandHandler; +@protocol OmniboxFocuser; +@protocol UrlLoader; +class ReadingListModel; + +// Controller for the header containing the logo and the fake omnibox, handling +// the interactions between the header and the collection, and the rest of the +// application. +@interface ContentSuggestionsHeaderController + : NSObject<ContentSuggestionsHeaderProvider, GoogleLandingConsumer> + +@property(nonatomic, weak) id<UrlLoader, OmniboxFocuser> dispatcher; +@property(nonatomic, weak) id<ContentSuggestionsHeaderControllerDelegate> + delegate; +@property(nonatomic, weak) id<ContentSuggestionsHeaderControllerCommandHandler> + commandHandler; +@property(nonatomic, assign) ReadingListModel* readingListModel; + +@end + +#endif // IOS_CHROME_BROWSER_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_HEADER_CONTROLLER_H_
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_header_controller.mm b/ios/chrome/browser/content_suggestions/content_suggestions_header_controller.mm new file mode 100644 index 0000000..34c5dcb --- /dev/null +++ b/ios/chrome/browser/content_suggestions/content_suggestions_header_controller.mm
@@ -0,0 +1,315 @@ +// Copyright 2017 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/content_suggestions/content_suggestions_header_controller.h" + +#include "base/logging.h" +#include "base/metrics/user_metrics.h" +#include "components/strings/grit/components_strings.h" +#import "ios/chrome/browser/content_suggestions/content_suggestions_header_controller_delegate.h" +#import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h" +#import "ios/chrome/browser/ui/commands/generic_chrome_command.h" +#include "ios/chrome/browser/ui/commands/ios_command_ids.h" +#import "ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_utils.h" +#import "ios/chrome/browser/ui/ntp/new_tab_page_header_view.h" +#import "ios/chrome/browser/ui/toolbar/web_toolbar_controller.h" +#import "ios/chrome/browser/ui/uikit_ui_util.h" +#import "ios/chrome/browser/ui/url_loader.h" +#include "ui/base/l10n/l10n_util.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +using base::UserMetricsAction; + +namespace { +const UIEdgeInsets kSearchBoxStretchInsets = {3, 3, 3, 3}; +const CGFloat kHintLabelSidePadding = 12; +} // namespace + +@interface ContentSuggestionsHeaderController () + +// Whether the Google logo or doodle is being shown. +@property(nonatomic, assign) BOOL logoIsShowing; + +// |YES| if this consumer is has voice search enabled. +@property(nonatomic, assign) BOOL voiceSearchIsEnabled; + +// |YES| if a what's new promo can be displayed. +@property(nonatomic, assign) BOOL promoCanShow; + +// Exposes view and methods to drive the doodle. +@property(nonatomic, weak) id<LogoVendor> logoVendor; + +// |YES| if the google landing toolbar can show the forward arrow, cached and +// pushed into the header view. +@property(nonatomic, assign) BOOL canGoForward; + +// |YES| if the google landing toolbar can show the back arrow, cached and +// pushed into the header view. +@property(nonatomic, assign) BOOL canGoBack; + +// Gets the icon of a what's new promo. +// TODO(crbug.com/694750): This should not be WhatsNewIcon. +@property(nonatomic, assign) WhatsNewIcon promoIcon; + +// Gets the text of a what's new promo. +@property(nonatomic, copy) NSString* promoText; + +// |YES| if this NTP panel is visible. When set to |NO| various UI updates are +// ignored. +@property(nonatomic, assign) BOOL isShowing; + +// |YES| when notifications indicate the omnibox is focused. +@property(nonatomic, assign) BOOL omniboxFocused; + +// The number of tabs to show in the google landing fake toolbar. +@property(nonatomic, assign) int tabCount; + +@property(nonatomic, strong) NewTabPageHeaderView* headerView; +@property(nonatomic, strong) UIButton* fakeOmnibox; +@property(nonatomic, strong) NSLayoutConstraint* hintLabelLeadingConstraint; +@property(nonatomic, strong) NSLayoutConstraint* voiceTapTrailingConstraint; +@property(nonatomic, strong) NSLayoutConstraint* doodleHeightConstraint; +@property(nonatomic, strong) NSLayoutConstraint* doodleTopMarginConstraint; +@property(nonatomic, strong) NSLayoutConstraint* fakeOmniboxWidthConstraint; +@property(nonatomic, strong) NSLayoutConstraint* fakeOmniboxHeightConstraint; +@property(nonatomic, strong) NSLayoutConstraint* fakeOmniboxTopMarginConstraint; +@property(nonatomic, assign) BOOL logoFetched; + +@end + +@implementation ContentSuggestionsHeaderController + +@synthesize dispatcher = _dispatcher; +@synthesize delegate = _delegate; +@synthesize commandHandler = _commandHandler; +@synthesize readingListModel = _readingListModel; + +@synthesize logoVendor = _logoVendor; +@synthesize promoCanShow = _promoCanShow; +@synthesize canGoForward = _canGoForward; +@synthesize canGoBack = _canGoBack; +@synthesize promoIcon = _promoIcon; +@synthesize promoText = _promoText; +@synthesize isShowing = _isShowing; +@synthesize omniboxFocused = _omniboxFocused; +@synthesize tabCount = _tabCount; + +@synthesize headerView = _headerView; +@synthesize fakeOmnibox = _fakeOmnibox; +@synthesize hintLabelLeadingConstraint = _hintLabelLeadingConstraint; +@synthesize voiceTapTrailingConstraint = _voiceTapTrailingConstraint; +@synthesize doodleHeightConstraint = _doodleHeightConstraint; +@synthesize doodleTopMarginConstraint = _doodleTopMarginConstraint; +@synthesize fakeOmniboxWidthConstraint = _fakeOmniboxWidthConstraint; +@synthesize fakeOmniboxHeightConstraint = _fakeOmniboxHeightConstraint; +@synthesize fakeOmniboxTopMarginConstraint = _fakeOmniboxTopMarginConstraint; +@synthesize voiceSearchIsEnabled = _voiceSearchIsEnabled; +@synthesize logoIsShowing = _logoIsShowing; +@synthesize logoFetched = _logoFetched; + +#pragma mark - ContentSuggestionsHeaderProvider + +- (UIView*)headerForWidth:(CGFloat)width { + if (!self.headerView) { + self.headerView = [[NewTabPageHeaderView alloc] init]; + [self addFakeOmnibox]; + + [self.headerView addSubview:self.logoVendor.view]; + [self.headerView addSubview:self.fakeOmnibox]; + self.logoVendor.view.translatesAutoresizingMaskIntoConstraints = NO; + self.fakeOmnibox.translatesAutoresizingMaskIntoConstraints = NO; + + self.fakeOmniboxWidthConstraint = [self.fakeOmnibox.widthAnchor + constraintEqualToConstant:content_suggestions::searchFieldWidth(width)]; + [self addConstraintsForLogoView:self.logoVendor.view + fakeOmnibox:self.fakeOmnibox + andHeaderView:self.headerView]; + + if (!IsIPadIdiom()) { + // iPhone header also contains a toolbar since the normal toolbar is + // hidden. + [_headerView addToolbarWithReadingListModel:self.readingListModel + dispatcher:self.dispatcher]; + [_headerView setToolbarTabCount:self.tabCount]; + [_headerView setCanGoForward:self.canGoForward]; + [_headerView setCanGoBack:self.canGoBack]; + } + + [self.headerView addViewsToSearchField:self.fakeOmnibox]; + [self.logoVendor fetchDoodle]; + } + return self.headerView; +} + +#pragma mark - Private + +// Initialize and add a search field tap target and a voice search button. +- (void)addFakeOmnibox { + self.fakeOmnibox = [[UIButton alloc] init]; + if (IsIPadIdiom()) { + UIImage* searchBoxImage = [[UIImage imageNamed:@"ntp_google_search_box"] + resizableImageWithCapInsets:kSearchBoxStretchInsets]; + [self.fakeOmnibox setBackgroundImage:searchBoxImage + forState:UIControlStateNormal]; + } + [self.fakeOmnibox setAdjustsImageWhenHighlighted:NO]; + [self.fakeOmnibox addTarget:self + action:@selector(fakeOmniboxTapped:) + forControlEvents:UIControlEventTouchUpInside]; + [self.fakeOmnibox + setAccessibilityLabel:l10n_util::GetNSString(IDS_OMNIBOX_EMPTY_HINT)]; + // Set isAccessibilityElement to NO so that Voice Search button is accessible. + [self.fakeOmnibox setIsAccessibilityElement:NO]; + + // Set up fakebox hint label. + UILabel* searchHintLabel = [[UILabel alloc] init]; + content_suggestions::configureSearchHintLabel(searchHintLabel, + self.fakeOmnibox); + + self.hintLabelLeadingConstraint = [searchHintLabel.leadingAnchor + constraintEqualToAnchor:[self.fakeOmnibox leadingAnchor] + constant:kHintLabelSidePadding]; + [_hintLabelLeadingConstraint setActive:YES]; + + // Add a voice search button. + UIButton* voiceTapTarget = [[UIButton alloc] init]; + content_suggestions::configureVoiceSearchButton(voiceTapTarget, + self.fakeOmnibox); + + self.voiceTapTrailingConstraint = [voiceTapTarget.trailingAnchor + constraintEqualToAnchor:[self.fakeOmnibox trailingAnchor]]; + [NSLayoutConstraint activateConstraints:@[ + [searchHintLabel.trailingAnchor + constraintEqualToAnchor:voiceTapTarget.leadingAnchor], + _voiceTapTrailingConstraint + ]]; + + if (self.voiceSearchIsEnabled) { + [voiceTapTarget addTarget:self + action:@selector(loadVoiceSearch:) + forControlEvents:UIControlEventTouchUpInside]; + [voiceTapTarget addTarget:self + action:@selector(preloadVoiceSearch:) + forControlEvents:UIControlEventTouchDown]; + } else { + [voiceTapTarget setEnabled:NO]; + } +} + +- (void)loadVoiceSearch:(id)sender { + DCHECK(self.voiceSearchIsEnabled); + base::RecordAction(UserMetricsAction("MobileNTPMostVisitedVoiceSearch")); + [sender chromeExecuteCommand:sender]; +} + +- (void)preloadVoiceSearch:(id)sender { + DCHECK(self.voiceSearchIsEnabled); + [sender removeTarget:self + action:@selector(preloadVoiceSearch:) + forControlEvents:UIControlEventTouchDown]; + + // Use a GenericChromeCommand because |sender| already has a tag set for a + // different command. + GenericChromeCommand* command = + [[GenericChromeCommand alloc] initWithTag:IDC_PRELOAD_VOICE_SEARCH]; + [sender chromeExecuteCommand:command]; +} + +- (void)fakeOmniboxTapped:(id)sender { + [self.dispatcher focusFakebox]; +} + +// If Google is not the default search engine, hide the logo, doodle and +// fakebox. +- (void)updateLogoAndFakeboxDisplay { + // TODO(crbug.com/700375): implement this. +} + +// Adds the constraints for the |logoView|, the |fakeomnibox| related to the +// |headerView|. It also sets the properties constraints related to those views. +- (void)addConstraintsForLogoView:(UIView*)logoView + fakeOmnibox:(UIView*)fakeOmnibox + andHeaderView:(UIView*)headerView { + self.doodleTopMarginConstraint = [logoView.topAnchor + constraintEqualToAnchor:headerView.topAnchor + constant:content_suggestions::doodleTopMargin()]; + self.doodleHeightConstraint = [logoView.heightAnchor + constraintEqualToConstant:content_suggestions::doodleHeight( + self.logoIsShowing)]; + self.fakeOmniboxHeightConstraint = [fakeOmnibox.heightAnchor + constraintEqualToConstant:content_suggestions::kSearchFieldHeight]; + self.fakeOmniboxTopMarginConstraint = [fakeOmnibox.topAnchor + constraintEqualToAnchor:logoView.bottomAnchor + constant:content_suggestions::searchFieldTopMargin()]; + [NSLayoutConstraint activateConstraints:@[ + self.doodleTopMarginConstraint, + self.doodleHeightConstraint, + self.fakeOmniboxWidthConstraint, + self.fakeOmniboxHeightConstraint, + self.fakeOmniboxTopMarginConstraint, + [logoView.widthAnchor constraintEqualToAnchor:headerView.widthAnchor], + [logoView.leadingAnchor constraintEqualToAnchor:headerView.leadingAnchor], + [fakeOmnibox.centerXAnchor + constraintEqualToAnchor:headerView.centerXAnchor], + ]]; +} + +#pragma mark - GoogleLandingConsumer + +- (void)setLogoIsShowing:(BOOL)logoIsShowing { + _logoIsShowing = logoIsShowing; + [self updateLogoAndFakeboxDisplay]; +} + +- (void)setMaximumMostVisitedSitesShown: + (NSUInteger)maximumMostVisitedSitesShown { +} + +- (void)mostVisitedDataUpdated { + // Do nothing as it is handled in the ContentSuggestionsMediator. +} + +- (void)mostVisitedIconMadeAvailableAtIndex:(NSUInteger)index { + // Do nothing as it is handled in the ContentSuggestionsMediator. +} + +- (void)setTabCount:(int)tabCount { + _tabCount = tabCount; + [self.headerView setToolbarTabCount:tabCount]; +} + +- (void)setCanGoForward:(BOOL)canGoForward { + _canGoForward = canGoForward; + [self.headerView setCanGoForward:self.canGoForward]; +} + +- (void)setCanGoBack:(BOOL)canGoBack { + _canGoBack = canGoBack; + [self.headerView setCanGoBack:self.canGoBack]; +} + +- (void)locationBarBecomesFirstResponder { + if (!self.isShowing) + return; + + self.omniboxFocused = YES; + [self.commandHandler shiftTilesUp]; +} + +- (void)locationBarResignsFirstResponder { + if (!self.isShowing && ![self.delegate isScrolledToTop]) + return; + + self.omniboxFocused = NO; + if ([self.delegate isContextMenuVisible]) { + return; + } + + [self.commandHandler shiftTilesDown]; +} + +@end
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_header_controller_delegate.h b/ios/chrome/browser/content_suggestions/content_suggestions_header_controller_delegate.h new file mode 100644 index 0000000..f1f16481 --- /dev/null +++ b/ios/chrome/browser/content_suggestions/content_suggestions_header_controller_delegate.h
@@ -0,0 +1,24 @@ +// Copyright 2017 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_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_HEADER_CONTROLLER_DELEGATE_H_ +#define IOS_CHROME_BROWSER_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_HEADER_CONTROLLER_DELEGATE_H_ + +#import <UIKit/UIKit.h> + +@protocol ContentSuggestionsHeaderControllerDelegate + +- (BOOL)isContextMenuVisible; +- (BOOL)isScrolledToTop; + +@end + +@protocol ContentSuggestionsHeaderControllerCommandHandler + +- (void)shiftTilesDown; +- (void)shiftTilesUp; + +@end + +#endif // IOS_CHROME_BROWSER_CONTENT_SUGGESTIONS_CONTENT_SUGGESTIONS_HEADER_CONTROLLER_DELEGATE_H_
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_header_provider.h b/ios/chrome/browser/content_suggestions/content_suggestions_header_provider.h index aef3ff89..385fc79 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_header_provider.h +++ b/ios/chrome/browser/content_suggestions/content_suggestions_header_provider.h
@@ -8,7 +8,7 @@ // Object providing a header view for the content suggestions. @protocol ContentSuggestionsHeaderProvider -- (nullable UIView*)header; +- (nullable UIView*)headerForWidth:(CGFloat)width; @end
diff --git a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm index e0dc77209..8e0f5f95 100644 --- a/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm +++ b/ios/chrome/browser/content_suggestions/content_suggestions_mediator.mm
@@ -334,8 +334,8 @@ self.contentService->DismissSuggestion(suggestion_id); } -- (UIView*)headerView { - return [self.headerProvider header]; +- (UIView*)headerViewForWidth:(CGFloat)width { + return [self.headerProvider headerForWidth:width]; } #pragma mark - ContentSuggestionsServiceObserver
diff --git a/ios/chrome/browser/native_app_launcher/BUILD.gn b/ios/chrome/browser/native_app_launcher/BUILD.gn index 48f7e41..39eebc79 100644 --- a/ios/chrome/browser/native_app_launcher/BUILD.gn +++ b/ios/chrome/browser/native_app_launcher/BUILD.gn
@@ -3,6 +3,7 @@ # found in the LICENSE file. source_set("native_app_launcher") { + configs += [ "//build/config/compiler:enable_arc" ] sources = [ "ios_appstore_ids.h", "ios_appstore_ids.mm",
diff --git a/ios/chrome/browser/native_app_launcher/ios_appstore_ids.mm b/ios/chrome/browser/native_app_launcher/ios_appstore_ids.mm index 672eaa3..330ee3c 100644 --- a/ios/chrome/browser/native_app_launcher/ios_appstore_ids.mm +++ b/ios/chrome/browser/native_app_launcher/ios_appstore_ids.mm
@@ -4,6 +4,10 @@ #include "ios/chrome/browser/native_app_launcher/ios_appstore_ids.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + const char kIOSAppStoreGmail[] = "422689480"; const char kIOSAppStoreGoogleDocs[] = "842842640"; const char kIOSAppStoreGoogleDrive[] = "507874739";
diff --git a/ios/chrome/browser/native_app_launcher/native_app_infobar_controller.mm b/ios/chrome/browser/native_app_launcher/native_app_infobar_controller.mm index 8d3a553c..ae68f8c 100644 --- a/ios/chrome/browser/native_app_launcher/native_app_infobar_controller.mm +++ b/ios/chrome/browser/native_app_launcher/native_app_infobar_controller.mm
@@ -5,7 +5,6 @@ #import "ios/chrome/browser/native_app_launcher/native_app_infobar_controller.h" #include "base/logging.h" -#include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" #include "ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.h" #import "ios/chrome/browser/ui/infobars/infobar_view.h" @@ -14,6 +13,10 @@ #import "ios/public/provider/chrome/browser/native_app_launcher/native_app_types.h" #include "ui/base/l10n/l10n_util.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + @interface NativeAppInfoBarController () // Action for any of the user defined buttons. @@ -36,11 +39,11 @@ - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate frame:(CGRect)frame { - base::scoped_nsobject<InfoBarView> infoBarView; + InfoBarView* infoBarView; nativeAppInfoBarDelegate_ = static_cast<NativeAppInfoBarDelegate*>(delegate); DCHECK(nativeAppInfoBarDelegate_); - infoBarView.reset( - [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); + infoBarView = + [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]; // Lays out widgets common to all NativeAppInfobars. [infoBarView @@ -96,7 +99,7 @@ break; } } - return [[infoBarView retain] autorelease]; + return infoBarView; } - (void)infoBarButtonDidPress:(UIButton*)button {
diff --git a/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.h b/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.h index 9d84758..179d16d 100644 --- a/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.h +++ b/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.h
@@ -64,7 +64,7 @@ private: bool ShouldExpire(const NavigationDetails& details) const override; - id<NativeAppNavigationControllerProtocol> controller_; + __weak id<NativeAppNavigationControllerProtocol> controller_; net::URLRequestContextGetter* requestContextGetter_; GURL page_url_; NativeAppControllerType type_;
diff --git a/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.mm b/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.mm index 66c83f8..9e75ac9 100644 --- a/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.mm +++ b/ios/chrome/browser/native_app_launcher/native_app_infobar_delegate.mm
@@ -9,7 +9,6 @@ #include <memory> #include <utility> -#include "base/mac/scoped_nsobject.h" #include "base/memory/ptr_util.h" #include "base/strings/sys_string_conversions.h" #include "components/infobars/core/infobar_manager.h" @@ -18,6 +17,10 @@ #include "ios/chrome/grit/ios_strings.h" #include "ui/base/l10n/l10n_util.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + namespace native_app_infobar { const CGSize kSmallIconSize = {29.0, 29.0}; } // namespace native_app_infobar @@ -40,8 +43,8 @@ auto infobar = base::MakeUnique<InfoBarIOS>(base::MakeUnique<NativeAppInfoBarDelegate>( controller_protocol, page_url, type)); - base::scoped_nsobject<NativeAppInfoBarController> controller( - [[NativeAppInfoBarController alloc] initWithDelegate:infobar.get()]); + NativeAppInfoBarController* controller = + [[NativeAppInfoBarController alloc] initWithDelegate:infobar.get()]; infobar->SetController(controller); return !!manager->AddInfoBar(std::move(infobar)); }
diff --git a/ios/chrome/browser/translate/BUILD.gn b/ios/chrome/browser/translate/BUILD.gn index abc6ff6..4cee55ca 100644 --- a/ios/chrome/browser/translate/BUILD.gn +++ b/ios/chrome/browser/translate/BUILD.gn
@@ -3,6 +3,7 @@ # found in the LICENSE file. source_set("translate") { + configs += [ "//build/config/compiler:enable_arc" ] sources = [ "after_translate_infobar_controller.h", "after_translate_infobar_controller.mm",
diff --git a/ios/chrome/browser/translate/after_translate_infobar_controller.mm b/ios/chrome/browser/translate/after_translate_infobar_controller.mm index e4d57c1c..a14bb2a1 100644 --- a/ios/chrome/browser/translate/after_translate_infobar_controller.mm +++ b/ios/chrome/browser/translate/after_translate_infobar_controller.mm
@@ -4,7 +4,6 @@ #include "ios/chrome/browser/translate/after_translate_infobar_controller.h" -#include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/strings/grit/components_strings.h" @@ -15,6 +14,10 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/image/image.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + namespace { enum AlwaysTranslateSwitchState { ALWAYS_TRANSLATE_SWITCH_NOT_CHANGED, @@ -40,11 +43,11 @@ - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate frame:(CGRect)frame { - base::scoped_nsobject<InfoBarView> infoBarView; + InfoBarView* infoBarView; _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); DCHECK(_translateInfoBarDelegate); - infoBarView.reset( - [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); + infoBarView = + [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]; // Icon gfx::Image icon = _translateInfoBarDelegate->GetIcon(); if (!icon.IsEmpty()) @@ -68,9 +71,9 @@ NSString* original = base::SysUTF16ToNSString(stdOriginal); NSString* target = base::SysUTF16ToNSString( _translateInfoBarDelegate->target_language_name()); - base::scoped_nsobject<NSString> label( + NSString* label = [[NSString alloc] initWithFormat:@"%@ %@ %@%@ %@.", label1, original, - label2, label3, target]); + label2, label3, target]; [infoBarView addLabel:label]; // Close button. [infoBarView addCloseButtonWithTag:TranslateInfoBarIOSTag::CLOSE @@ -98,7 +101,7 @@ target:self action:@selector(infoBarSwitchDidPress:)]; } - return [[infoBarView retain] autorelease]; + return infoBarView; } #pragma mark - Handling of User Events
diff --git a/ios/chrome/browser/translate/before_translate_infobar_controller.mm b/ios/chrome/browser/translate/before_translate_infobar_controller.mm index 59e97ee..d94714a0 100644 --- a/ios/chrome/browser/translate/before_translate_infobar_controller.mm +++ b/ios/chrome/browser/translate/before_translate_infobar_controller.mm
@@ -7,9 +7,7 @@ #include <stddef.h> #import <UIKit/UIKit.h> -#include "base/ios/weak_nsobject.h" #include "base/logging.h" -#include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/strings/grit/components_strings.h" @@ -20,6 +18,10 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/image/image.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + namespace { CGFloat kNavigationBarHeight = 44; @@ -76,7 +78,7 @@ DCHECK_EQ(0, component); UILabel* label = [view isKindOfClass:[UILabel class]] ? (UILabel*)view - : [[[UILabel alloc] init] autorelease]; + : [[UILabel alloc] init]; [label setText:base::SysUTF16ToNSString( _translateInfoBarDelegate->language_name_at(row))]; [label setTextAlignment:NSTextAlignmentCenter]; @@ -112,17 +114,17 @@ translate::TranslateInfoBarDelegate* _translateInfoBarDelegate; // weak // A fullscreen view that catches all touch events and contains a UIPickerView // and a UINavigationBar. - base::scoped_nsobject<UIView> _languageSelectionView; + UIView* _languageSelectionView; // Stores whether the user is currently choosing in the UIPickerView the // original language, or the target language. NSUInteger _languageSelectionType; // The language picker. - base::scoped_nsobject<UIPickerView> _languagePicker; + UIPickerView* _languagePicker; // Navigation bar associated with the picker with "Done" and "Cancel" buttons. - base::scoped_nsobject<UINavigationBar> _navigationBar; + UINavigationBar* _navigationBar; // The controller of the languagePicker. Needs to be an ivar because // |_languagePicker| does not retain it. - base::scoped_nsobject<LanguagePickerController> _languagePickerController; + LanguagePickerController* _languagePickerController; } #pragma mark - @@ -130,10 +132,10 @@ - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate frame:(CGRect)frame { - base::scoped_nsobject<InfoBarView> infoBarView; + InfoBarView* infoBarView; _translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); - infoBarView.reset( - [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); + infoBarView = + [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]; // Icon gfx::Image icon = _translateInfoBarDelegate->GetIcon(); if (!icon.IsEmpty()) @@ -155,7 +157,7 @@ tag2:TranslateInfoBarIOSTag::BEFORE_DENY target:self action:@selector(infoBarButtonDidPress:)]; - return [[infoBarView retain] autorelease]; + return infoBarView; } - (void)updateInfobarLabelOnView:(InfoBarView*)view { @@ -174,7 +176,7 @@ l10n_util::GetNSStringF(IDS_TRANSLATE_INFOBAR_BEFORE_MESSAGE_IOS, originalLanguageWithLink, targetLanguageWithLink); - base::WeakNSObject<BeforeTranslateInfoBarController> weakSelf(self); + __weak BeforeTranslateInfoBarController* weakSelf = self; [view addLabel:label action:^(NSUInteger tag) { [weakSelf infobarLinkDidPress:tag]; @@ -209,7 +211,7 @@ // delegate. [_languagePicker setDataSource:nil]; [_languagePicker setDelegate:nil]; - _languagePickerController.reset(); + _languagePickerController = nil; // Animate the picker away. CGRect languagePickerFrame = [_languagePicker frame]; CGRect navigationBarFrame = [_navigationBar frame]; @@ -217,16 +219,16 @@ languagePickerFrame.size.height + navigationBarFrame.size.height; languagePickerFrame.origin.y += animationHeight; navigationBarFrame.origin.y += animationHeight; - auto blockLanguagePicker(_languagePicker); - auto blockNavigationBar(_navigationBar); - _languagePicker.reset(); - _navigationBar.reset(); + UIPickerView* blockLanguagePicker = _languagePicker; + UINavigationBar* blockNavigationBar = _navigationBar; + _languagePicker = nil; + _navigationBar = nil; void (^animations)(void) = ^{ - blockLanguagePicker.get().frame = languagePickerFrame; - blockNavigationBar.get().frame = navigationBarFrame; + blockLanguagePicker.frame = languagePickerFrame; + blockNavigationBar.frame = navigationBarFrame; }; - auto blockSelectionView(_languageSelectionView); - _languageSelectionView.reset(); + UIView* blockSelectionView = _languageSelectionView; + _languageSelectionView = nil; void (^completion)(BOOL finished) = ^(BOOL finished) { [blockSelectionView removeFromSuperview]; }; @@ -272,8 +274,8 @@ CGRect languageSelectionViewFrame = CGRectMake(0, parentFrame.size.height - totalPickerHeight, parentFrame.size.width, totalPickerHeight); - _languageSelectionView.reset( - [[UIView alloc] initWithFrame:languageSelectionViewFrame]); + _languageSelectionView = + [[UIView alloc] initWithFrame:languageSelectionViewFrame]; [_languageSelectionView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin]; @@ -291,21 +293,20 @@ CGRect initialNavigationBarFrame = finalNavigationBarFrame; initialNavigationBarFrame.origin.y += totalPickerHeight; - _navigationBar.reset( - [[UINavigationBar alloc] initWithFrame:initialNavigationBarFrame]); + _navigationBar = + [[UINavigationBar alloc] initWithFrame:initialNavigationBarFrame]; const UIViewAutoresizing resizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; [_navigationBar setAutoresizingMask:resizingMask]; - base::scoped_nsobject<UIBarButtonItem> doneButton([[UIBarButtonItem alloc] + UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self - action:@selector(languageSelectionDone)]); - base::scoped_nsobject<UIBarButtonItem> cancelButton([[UIBarButtonItem alloc] + action:@selector(languageSelectionDone)]; + UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self - action:@selector(dismissLanguageSelectionView)]); - base::scoped_nsobject<UINavigationItem> item( - [[UINavigationItem alloc] initWithTitle:@""]); + action:@selector(dismissLanguageSelectionView)]; + UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@""]; [item setRightBarButtonItem:doneButton]; [item setLeftBarButtonItem:cancelButton]; [item setHidesBackButton:YES]; @@ -338,12 +339,11 @@ selectedRow = targetLanguageIndex; disabledRow = originalLanguageIndex; } - _languagePickerController.reset([[LanguagePickerController alloc] + _languagePickerController = [[LanguagePickerController alloc] initWithDelegate:_translateInfoBarDelegate initialRow:selectedRow - disabledRow:disabledRow]); - _languagePicker.reset( - [[UIPickerView alloc] initWithFrame:initialPickerFrame]); + disabledRow:disabledRow]; + _languagePicker = [[UIPickerView alloc] initWithFrame:initialPickerFrame]; [_languagePicker setAutoresizingMask:resizingMask]; [_languagePicker setShowsSelectionIndicator:YES]; [_languagePicker setDataSource:_languagePickerController]; @@ -352,12 +352,12 @@ [_languagePicker setBackgroundColor:[self.view backgroundColor]]; [_languagePicker selectRow:selectedRow inComponent:0 animated:NO]; - auto blockLanguagePicker(_languagePicker); - auto blockNavigationBar(_navigationBar); + UIPickerView* blockLanguagePicker = _languagePicker; + UINavigationBar* blockNavigationBar = _navigationBar; [UIView animateWithDuration:kPickerAnimationDurationInSeconds animations:^{ - blockLanguagePicker.get().frame = finalPickerFrame; - blockNavigationBar.get().frame = finalNavigationBarFrame; + blockLanguagePicker.frame = finalPickerFrame; + blockNavigationBar.frame = finalNavigationBarFrame; }]; // Add the subviews.
diff --git a/ios/chrome/browser/translate/chrome_ios_translate_client.mm b/ios/chrome/browser/translate/chrome_ios_translate_client.mm index 623ad385..d6b5641 100644 --- a/ios/chrome/browser/translate/chrome_ios_translate_client.mm +++ b/ios/chrome/browser/translate/chrome_ios_translate_client.mm
@@ -37,6 +37,10 @@ #include "ios/web/public/web_state/web_state.h" #include "url/gurl.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + DEFINE_WEB_STATE_USER_DATA_KEY(ChromeIOSTranslateClient); ChromeIOSTranslateClient::ChromeIOSTranslateClient(web::WebState* web_state) @@ -75,24 +79,24 @@ translate::TranslateStep step = delegate->translate_step(); std::unique_ptr<InfoBarIOS> infobar(new InfoBarIOS(std::move(delegate))); - base::scoped_nsobject<InfoBarController> controller; + InfoBarController* controller; switch (step) { case translate::TRANSLATE_STEP_AFTER_TRANSLATE: - controller.reset([[AfterTranslateInfoBarController alloc] - initWithDelegate:infobar.get()]); + controller = [[AfterTranslateInfoBarController alloc] + initWithDelegate:infobar.get()]; break; case translate::TRANSLATE_STEP_BEFORE_TRANSLATE: - controller.reset([[BeforeTranslateInfoBarController alloc] - initWithDelegate:infobar.get()]); + controller = [[BeforeTranslateInfoBarController alloc] + initWithDelegate:infobar.get()]; break; case translate::TRANSLATE_STEP_NEVER_TRANSLATE: - controller.reset([[NeverTranslateInfoBarController alloc] - initWithDelegate:infobar.get()]); + controller = [[NeverTranslateInfoBarController alloc] + initWithDelegate:infobar.get()]; break; case translate::TRANSLATE_STEP_TRANSLATING: case translate::TRANSLATE_STEP_TRANSLATE_ERROR: - controller.reset([[TranslateMessageInfoBarController alloc] - initWithDelegate:infobar.get()]); + controller = [[TranslateMessageInfoBarController alloc] + initWithDelegate:infobar.get()]; break; default: NOTREACHED();
diff --git a/ios/chrome/browser/translate/never_translate_infobar_controller.mm b/ios/chrome/browser/translate/never_translate_infobar_controller.mm index 408da65..a88d8c7 100644 --- a/ios/chrome/browser/translate/never_translate_infobar_controller.mm +++ b/ios/chrome/browser/translate/never_translate_infobar_controller.mm
@@ -4,7 +4,6 @@ #include "ios/chrome/browser/translate/never_translate_infobar_controller.h" -#include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/strings/grit/components_strings.h" @@ -16,6 +15,10 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/image/image.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + @interface NeverTranslateInfoBarController () // Action for any of the user defined buttons. @@ -30,11 +33,11 @@ - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate frame:(CGRect)frame { - base::scoped_nsobject<InfoBarView> infoBarView; + InfoBarView* infoBarView; translate::TranslateInfoBarDelegate* translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); - infoBarView.reset( - [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); + infoBarView = + [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]; // Icon gfx::Image icon = translateInfoBarDelegate->GetIcon(); if (!icon.IsEmpty()) @@ -60,7 +63,7 @@ tag2:TranslateInfoBarIOSTag::DENY_WEBSITE target:self action:@selector(infoBarButtonDidPress:)]; - return [[infoBarView retain] autorelease]; + return infoBarView; } #pragma mark - Handling of User Events
diff --git a/ios/chrome/browser/translate/translate_message_infobar_controller.mm b/ios/chrome/browser/translate/translate_message_infobar_controller.mm index 5af8763b..fea850a9 100644 --- a/ios/chrome/browser/translate/translate_message_infobar_controller.mm +++ b/ios/chrome/browser/translate/translate_message_infobar_controller.mm
@@ -4,7 +4,6 @@ #include "ios/chrome/browser/translate/translate_message_infobar_controller.h" -#include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" #include "components/translate/core/browser/translate_infobar_delegate.h" #include "ios/chrome/browser/translate/translate_infobar_tags.h" @@ -12,6 +11,10 @@ #import "ios/chrome/browser/ui/infobars/infobar_view_delegate.h" #include "ui/gfx/image/image.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + @interface TranslateMessageInfoBarController () // Action for any of the user defined buttons. @@ -23,11 +26,11 @@ - (InfoBarView*)viewForDelegate:(infobars::InfoBarDelegate*)delegate frame:(CGRect)frame { - base::scoped_nsobject<InfoBarView> infoBarView; + InfoBarView* infoBarView; translate::TranslateInfoBarDelegate* translateInfoBarDelegate = delegate->AsTranslateInfoBarDelegate(); - infoBarView.reset( - [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]); + infoBarView = + [[InfoBarView alloc] initWithFrame:frame delegate:self.delegate]; // Icon gfx::Image icon = translateInfoBarDelegate->GetIcon(); if (!icon.IsEmpty()) @@ -48,7 +51,7 @@ target:self action:@selector(infoBarButtonDidPress:)]; } - return [[infoBarView retain] autorelease]; + return infoBarView; } #pragma mark - Handling of User Events
diff --git a/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm b/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm index 59e4060..cacd6a1c 100644 --- a/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/signed_in_accounts_view_controller.mm
@@ -79,7 +79,9 @@ @implementation SignedInAccountsCollectionViewController - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { - self = [super initWithStyle:CollectionViewControllerStyleDefault]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleDefault]; if (self) { _browserState = browserState; _avatarCache = [[ResizedAvatarCache alloc] init];
diff --git a/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.h b/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.h index 240ce9df..5da4f4e 100644 --- a/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.h +++ b/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.h
@@ -26,7 +26,8 @@ - (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @property(nonatomic, weak) id<SigninAccountSelectorViewControllerDelegate>
diff --git a/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.mm b/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.mm index 1106c12..2a6fc37 100644 --- a/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/signin_account_selector_view_controller.mm
@@ -60,7 +60,9 @@ @synthesize delegate = _delegate; - (instancetype)init { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _identityServiceObserver.reset( new ChromeIdentityServiceObserverBridge(self));
diff --git a/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.h b/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.h index b7768ee..0d39c1d 100644 --- a/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.h +++ b/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.h
@@ -31,7 +31,8 @@ - (instancetype)initWithIdentity:(ChromeIdentity*)identity NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Scrolls the confirmation view to the bottom of its content.
diff --git a/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.mm b/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.mm index d516567..a81b239 100644 --- a/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.mm +++ b/ios/chrome/browser/ui/authentication/signin_confirmation_view_controller.mm
@@ -91,7 +91,9 @@ @synthesize delegate; - (instancetype)initWithIdentity:(ChromeIdentity*)identity { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _identity = identity; _identityServiceObserver.reset(
diff --git a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h index 7bf9c69..8393ebb 100644 --- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h +++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h
@@ -58,7 +58,8 @@ // Designated initializer. |bridge| must not be null. - (instancetype)initWithBridge:(autofill::CardUnmaskPromptViewBridge*)bridge NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Shows the form that allows the user to input their CVC.
diff --git a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm index 0f29070b..89ca46d 100644 --- a/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm +++ b/ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.mm
@@ -144,8 +144,10 @@ @implementation CardUnmaskPromptViewController - (instancetype)initWithBridge:(autofill::CardUnmaskPromptViewBridge*)bridge { + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; DCHECK(bridge); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _bridge = bridge; }
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h index 081260af..56fd7df 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h +++ b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.h
@@ -51,7 +51,8 @@ - (instancetype)initWithBookmark:(const bookmarks::BookmarkNode*)bookmark browserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Closes the edit view as if close button was pressed.
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm index f742137f..03b5ac46b 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_edit_view_controller.mm
@@ -166,7 +166,9 @@ browserState:(ios::ChromeBrowserState*)browserState { DCHECK(bookmark); DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { DCHECK(!bookmark->is_folder()); DCHECK(!browserState->IsOffTheRecord());
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h index 737f1b1..8b621df6e 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h +++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.h
@@ -59,6 +59,10 @@ folder:(const bookmarks::BookmarkNode*)folder browserState:(ios::ChromeBrowserState*)browserState; +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style + NS_UNAVAILABLE; + @end #endif // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_FOLDER_EDITOR_VIEW_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm index 19eb7573..4f37d61 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_folder_editor_view_controller.mm
@@ -78,8 +78,6 @@ // |bookmarkModel| must not be NULL and must be loaded. - (instancetype)initWithBookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style - NS_UNAVAILABLE; // Enables or disables the save button depending on the state of the form. - (void)updateSaveButtonState; @@ -143,7 +141,9 @@ - (instancetype)initWithBookmarkModel:(bookmarks::BookmarkModel*)bookmarkModel { DCHECK(bookmarkModel); DCHECK(bookmarkModel->loaded()); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _bookmarkModel = bookmarkModel; @@ -154,11 +154,6 @@ return self; } -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style { - NOTREACHED(); - return nil; -} - - (void)dealloc { _titleItem.delegate = nil; _folderViewController.delegate = nil;
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm index f0da350..955677b 100644 --- a/ios/chrome/browser/ui/browser_view_controller.mm +++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -4457,6 +4457,8 @@ [[ContentSuggestionsCoordinator alloc] initWithBaseViewController:self]; [_contentSuggestionsCoordinator setURLLoader:self]; } + _contentSuggestionsCoordinator.dispatcher = _dispatcher; + _contentSuggestionsCoordinator.webStateList = [_model webStateList]; [_contentSuggestionsCoordinator setBrowserState:_browserState]; [_contentSuggestionsCoordinator start]; }
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller.h b/ios/chrome/browser/ui/collection_view/collection_view_controller.h index a8b8ec4..9cb5e65 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller.h +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller.h
@@ -28,8 +28,9 @@ @property(strong, nonatomic, readonly) CollectionViewModel<CollectionViewItem*>* collectionViewModel; -// Initializer with the desired style. -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +// Initializer with the desired style and layout. +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_DESIGNATED_INITIALIZER; - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout*)layout NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller.mm b/ios/chrome/browser/ui/collection_view/collection_view_controller.mm index 468831465..6fbd88f 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller.mm +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller.mm
@@ -22,8 +22,8 @@ @synthesize appBar = _appBar; @synthesize collectionViewModel = _collectionViewModel; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style { - UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style { self = [super initWithCollectionViewLayout:layout]; if (self) { if (style == CollectionViewControllerStyleAppBar) {
diff --git a/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm b/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm index ef989a57..37c170e 100644 --- a/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/collection_view/collection_view_controller_unittest.mm
@@ -51,7 +51,8 @@ void TestReconfigureBlock(ReconfigureBlock block) { // Setup. CollectionViewController* controller = [[CollectionViewController alloc] - initWithStyle:CollectionViewControllerStyleDefault]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleDefault]; [controller loadModel]; CollectionViewModel* model = [controller collectionViewModel]; @@ -114,19 +115,22 @@ TEST_F(CollectionViewControllerTest, InitDefaultStyle) { CollectionViewController* controller = [[CollectionViewController alloc] - initWithStyle:CollectionViewControllerStyleDefault]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleDefault]; EXPECT_EQ(nil, controller.appBar); } TEST_F(CollectionViewControllerTest, InitAppBarStyle) { CollectionViewController* controller = [[CollectionViewController alloc] - initWithStyle:CollectionViewControllerStyleAppBar]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleAppBar]; EXPECT_NE(nil, controller.appBar); } TEST_F(CollectionViewControllerTest, CellForItemAtIndexPath) { CollectionViewController* controller = [[CollectionViewController alloc] - initWithStyle:CollectionViewControllerStyleDefault]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleDefault]; [controller loadModel]; [[controller collectionViewModel]
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm index 19ef703..9adf2d5 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_collection_updater.mm
@@ -533,7 +533,7 @@ headerForSectionWithIdentifier:SectionIdentifierLogo]) { ContentSuggestionsHeaderItem* header = [[ContentSuggestionsHeaderItem alloc] initWithType:ItemTypeHeader]; - header.view = self.dataSource.headerView; + header.view = [self.dataSource headerViewForWidth:self.collectionWidth]; [self.collectionViewController.collectionViewModel setHeader:header forSectionWithIdentifier:SectionIdentifierLogo];
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_data_source.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_data_source.h index 1c3fe93..fb79ddb 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_data_source.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_data_source.h
@@ -68,7 +68,7 @@ (nonnull ContentSuggestionIdentifier*)suggestionIdentifier; // Returns the header view containing the logo and omnibox to be displayed. -- (nullable UIView*)headerView; +- (nullable UIView*)headerViewForWidth:(CGFloat)width; @end
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h index 88d7457..c8efaea 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.h
@@ -21,7 +21,8 @@ dataSource:(id<ContentSuggestionsDataSource>)dataSource NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Handler for the commands sent by the ContentSuggestionsViewController.
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm index b2ffbf4..86a4ca92 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_view_controller.mm
@@ -50,7 +50,8 @@ - (instancetype)initWithStyle:(CollectionViewControllerStyle)style dataSource:(id<ContentSuggestionsDataSource>)dataSource { - self = [super initWithStyle:style]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = [super initWithLayout:layout style:style]; if (self) { _collectionUpdater = [[ContentSuggestionsCollectionUpdater alloc] initWithDataSource:dataSource];
diff --git a/ios/chrome/browser/ui/history/history_collection_view_controller.h b/ios/chrome/browser/ui/history/history_collection_view_controller.h index bb1f5be..e24e442 100644 --- a/ios/chrome/browser/ui/history/history_collection_view_controller.h +++ b/ios/chrome/browser/ui/history/history_collection_view_controller.h
@@ -51,7 +51,8 @@ delegate: (id<HistoryCollectionViewControllerDelegate>)delegate NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Search history for text |query| and display the results. |query| may be nil.
diff --git a/ios/chrome/browser/ui/history/history_collection_view_controller.mm b/ios/chrome/browser/ui/history/history_collection_view_controller.mm index 775212f..9d5f9ebd 100644 --- a/ios/chrome/browser/ui/history/history_collection_view_controller.mm +++ b/ios/chrome/browser/ui/history/history_collection_view_controller.mm
@@ -147,7 +147,9 @@ browserState:(ios::ChromeBrowserState*)browserState delegate:(id<HistoryCollectionViewControllerDelegate>) delegate { - self = [super initWithStyle:CollectionViewControllerStyleDefault]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleDefault]; if (self) { _historyServiceFacade.reset(new HistoryServiceFacade(browserState, self)); _browserState = browserState;
diff --git a/ios/chrome/browser/ui/ntp/BUILD.gn b/ios/chrome/browser/ui/ntp/BUILD.gn index 6a184ca3..f045030 100644 --- a/ios/chrome/browser/ui/ntp/BUILD.gn +++ b/ios/chrome/browser/ui/ntp/BUILD.gn
@@ -138,6 +138,7 @@ } source_set("ntp_controller") { + configs += [ "//build/config/compiler:enable_arc" ] sources = [ "new_tab_page_controller.h", "new_tab_page_controller.mm",
diff --git a/ios/chrome/browser/ui/ntp/google_landing_data_source.h b/ios/chrome/browser/ui/ntp/google_landing_data_source.h index 1ef2068..4e5d104 100644 --- a/ios/chrome/browser/ui/ntp/google_landing_data_source.h +++ b/ios/chrome/browser/ui/ntp/google_landing_data_source.h
@@ -6,6 +6,7 @@ #define IOS_CHROME_BROWSER_UI_NTP_GOOGLE_LANDING_DATA_SOURCE_H_ #import <Foundation/Foundation.h> +#import <UIKit/UIKit.h> #include "components/ntp_tiles/ntp_tile.h" #include "components/ntp_tiles/tile_visual_type.h" @@ -58,6 +59,15 @@ // Gets the large icon service. - (favicon::LargeIconService*)largeIconService; +// Asynchronously gets the favicon for |URL| with size |size| and calls +// imageCallback if the favicon is valid or fallbackCallback if there is valid +// fallback data. +- (void)getFaviconForURL:(GURL)URL + size:(CGFloat)size + useCache:(BOOL)useCache + imageCallback:(void (^)(UIImage*))imageCallback + fallbackCallback:(void (^)(UIColor*, UIColor*, BOOL))fallbackCallback; + @end #endif // IOS_CHROME_BROWSER_UI_NTP_GOOGLE_LANDING_DATA_SOURCE_H_
diff --git a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm index 0cebfb3..7cb2d54 100644 --- a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm +++ b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
@@ -5,10 +5,14 @@ #import "ios/chrome/browser/ui/ntp/google_landing_mediator.h" #import "base/ios/weak_nsobject.h" +#include "base/mac/bind_objc_block.h" #include "base/mac/scoped_nsobject.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" #include "base/strings/sys_string_conversions.h" +#include "base/task/cancelable_task_tracker.h" +#include "components/favicon/core/large_icon_service.h" +#include "components/favicon_base/fallback_icon_style.h" #include "components/ntp_tiles/metrics.h" #include "components/ntp_tiles/most_visited_sites.h" #include "components/ntp_tiles/ntp_tile.h" @@ -19,6 +23,7 @@ #include "ios/chrome/browser/browser_state/chrome_browser_state.h" #include "ios/chrome/browser/favicon/ios_chrome_large_icon_cache_factory.h" #include "ios/chrome/browser/favicon/ios_chrome_large_icon_service_factory.h" +#include "ios/chrome/browser/favicon/large_icon_cache.h" #import "ios/chrome/browser/metrics/new_tab_page_uma.h" #include "ios/chrome/browser/ntp_tiles/ios_most_visited_sites_factory.h" #import "ios/chrome/browser/ntp_tiles/most_visited_sites_observer_bridge.h" @@ -37,11 +42,13 @@ #include "ios/public/provider/chrome/browser/voice/voice_search_provider.h" #import "ios/shared/chrome/browser/ui/commands/command_dispatcher.h" #include "ios/web/public/web_state/web_state.h" +#include "skia/ext/skia_utils_ios.h" using base::UserMetricsAction; namespace { +const CGFloat kFaviconMinSize = 32; const NSInteger kMaxNumMostVisitedFavicons = 8; } // namespace @@ -115,6 +122,9 @@ // What's new promo. std::unique_ptr<NotificationPromoWhatsNew> _notification_promo; + + // Used to cancel tasks for the LargeIconService. + base::CancelableTaskTracker _cancelable_task_tracker; } // Consumer to handle google landing update notifications. @@ -279,6 +289,54 @@ } } +- (void)getFaviconForURL:(GURL)URL + size:(CGFloat)size + useCache:(BOOL)useCache + imageCallback:(void (^)(UIImage*))imageCallback + fallbackCallback:(void (^)(UIColor*, UIColor*, BOOL))fallbackCallback { + base::WeakNSObject<GoogleLandingMediator> weakSelf(self); + + void (^faviconBlock)(const favicon_base::LargeIconResult&) = ^( + const favicon_base::LargeIconResult& result) { + if (result.bitmap.is_valid()) { + scoped_refptr<base::RefCountedMemory> data = + result.bitmap.bitmap_data.get(); + UIImage* favicon = [UIImage + imageWithData:[NSData dataWithBytes:data->front() length:data->size()] + scale:[UIScreen mainScreen].scale]; + imageCallback(favicon); + } else if (result.fallback_icon_style) { + UIColor* backgroundColor = skia::UIColorFromSkColor( + result.fallback_icon_style->background_color); + UIColor* textColor = + skia::UIColorFromSkColor(result.fallback_icon_style->text_color); + BOOL isDefaultColor = + result.fallback_icon_style->is_default_background_color; + fallbackCallback(backgroundColor, textColor, isDefaultColor); + } + + base::scoped_nsobject<GoogleLandingMediator> strongSelf([weakSelf retain]); + if (strongSelf && + (result.bitmap.is_valid() || result.fallback_icon_style)) { + [strongSelf largeIconCache]->SetCachedResult(URL, result); + } + }; + + if (useCache) { + std::unique_ptr<favicon_base::LargeIconResult> cached_result = + [self largeIconCache]->GetCachedResult(URL); + if (cached_result) { + faviconBlock(*cached_result); + } + } + + CGFloat faviconSize = [UIScreen mainScreen].scale * size; + CGFloat faviconMinSize = [UIScreen mainScreen].scale * kFaviconMinSize; + [self largeIconService]->GetLargeIconOrFallbackStyle( + URL, faviconMinSize, faviconSize, base::BindBlock(faviconBlock), + &_cancelable_task_tracker); +} + #pragma mark - WebStateListObserving - (void)webStateList:(WebStateList*)webStateList
diff --git a/ios/chrome/browser/ui/ntp/google_landing_view_controller.mm b/ios/chrome/browser/ui/ntp/google_landing_view_controller.mm index 5157527d..e5dfdab 100644 --- a/ios/chrome/browser/ui/ntp/google_landing_view_controller.mm +++ b/ios/chrome/browser/ui/ntp/google_landing_view_controller.mm
@@ -815,8 +815,9 @@ if (!IsIPadIdiom()) { // iPhone header also contains a toolbar since the normal toolbar is // hidden. - [_headerView addToolbarWithDataSource:self.dataSource - dispatcher:self.dispatcher]; + [_headerView + addToolbarWithReadingListModel:[self.dataSource readingListModel] + dispatcher:self.dispatcher]; [_headerView setToolbarTabCount:self.tabCount]; [_headerView setCanGoForward:self.canGoForward]; [_headerView setCanGoBack:self.canGoBack];
diff --git a/ios/chrome/browser/ui/ntp/most_visited_cell.mm b/ios/chrome/browser/ui/ntp/most_visited_cell.mm index c4bde11..3f2dabd4 100644 --- a/ios/chrome/browser/ui/ntp/most_visited_cell.mm +++ b/ios/chrome/browser/ui/ntp/most_visited_cell.mm
@@ -11,26 +11,13 @@ #import "base/mac/scoped_nsobject.h" #include "base/memory/ref_counted_memory.h" #include "base/strings/sys_string_conversions.h" -#include "base/task/cancelable_task_tracker.h" #include "components/favicon/core/fallback_url_util.h" -#include "components/favicon/core/large_icon_service.h" -#include "components/favicon_base/fallback_icon_style.h" -#include "components/favicon_base/favicon_types.h" -#include "components/history/core/browser/top_sites.h" -#include "components/suggestions/suggestions_service.h" -#import "ios/chrome/browser/favicon/favicon_loader.h" -#include "ios/chrome/browser/favicon/favicon_service_factory.h" -#include "ios/chrome/browser/favicon/large_icon_cache.h" -#include "ios/chrome/browser/history/top_sites_factory.h" -#include "ios/chrome/browser/suggestions/suggestions_service_factory.h" #import "ios/chrome/browser/ui/ntp/google_landing_data_source.h" #import "ios/chrome/browser/ui/uikit_ui_util.h" #import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h" #import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" -#include "skia/ext/skia_utils_ios.h" const CGFloat kFaviconSize = 48; -const CGFloat kFaviconMinSize = 32; const CGFloat kImageViewBackgroundColor = 0.941; const CGFloat kImageViewCornerRadius = 3; const NSInteger kLabelNumLines = 2; @@ -49,8 +36,6 @@ base::scoped_nsobject<UILabel> _label; base::scoped_nsobject<UILabel> _noIconLabel; base::scoped_nsobject<UIImageView> _imageView; - // Used to cancel tasks for the LargeIconService. - base::CancelableTaskTracker _cancelable_task_tracker; } // Set the background color and center the first letter of the site title (or // domain if the title is a url). @@ -152,56 +137,25 @@ [self setURL:URL]; base::WeakNSObject<MostVisitedCell> weakSelf(self); - void (^faviconBlock)(const favicon_base::LargeIconResult&) = - ^(const favicon_base::LargeIconResult& result) { - base::scoped_nsobject<MostVisitedCell> strongSelf([weakSelf retain]); - if (!strongSelf) - return; + void (^faviconImageBlock)(UIImage*) = ^(UIImage* favicon) { - if (URL == [strongSelf URL]) { // Tile has not been reused. - if (result.bitmap.is_valid()) { - scoped_refptr<base::RefCountedMemory> data = - result.bitmap.bitmap_data.get(); - UIImage* favicon = - [UIImage imageWithData:[NSData dataWithBytes:data->front() - length:data->size()] - scale:[UIScreen mainScreen].scale]; - [strongSelf setImage:favicon]; - } else if (result.fallback_icon_style) { - UIColor* backgroundColor = skia::UIColorFromSkColor( - result.fallback_icon_style->background_color); - UIColor* textColor = skia::UIColorFromSkColor( - result.fallback_icon_style->text_color); - [strongSelf updateIconLabelWithColor:textColor - backgroundColor:backgroundColor - isDefaultBackgroundColor:result.fallback_icon_style-> - is_default_background_color]; - } - } + if (URL == [weakSelf URL]) // Tile has not been reused. + [weakSelf setImage:favicon]; + }; - if (result.bitmap.is_valid() || result.fallback_icon_style) { - LargeIconCache* largeIconCache = - [strongSelf.get()->_dataSource largeIconCache]; - if (largeIconCache) - largeIconCache->SetCachedResult(URL, result); - } + void (^faviconFallbackBlock)(UIColor*, UIColor*, BOOL) = + ^(UIColor* textColor, UIColor* backgroundColor, BOOL isDefaultColor) { + if (URL == [weakSelf URL]) // Tile has not been reused. + [weakSelf updateIconLabelWithColor:textColor + backgroundColor:backgroundColor + isDefaultBackgroundColor:isDefaultColor]; }; - LargeIconCache* cache = [_dataSource largeIconCache]; - std::unique_ptr<favicon_base::LargeIconResult> cached_result = - cache->GetCachedResult(URL); - if (cached_result) { - faviconBlock(*cached_result); - } - - // Always call LargeIconService in case the favicon was updated. - favicon::LargeIconService* large_icon_service = - [_dataSource largeIconService]; - CGFloat faviconSize = [UIScreen mainScreen].scale * kFaviconSize; - CGFloat faviconMinSize = [UIScreen mainScreen].scale * kFaviconMinSize; - large_icon_service->GetLargeIconOrFallbackStyle( - URL, faviconMinSize, faviconSize, base::BindBlock(faviconBlock), - &_cancelable_task_tracker); + [_dataSource getFaviconForURL:URL + size:kFaviconSize + useCache:YES + imageCallback:faviconImageBlock + fallbackCallback:faviconFallbackBlock]; } - (void)removePlaceholderImage {
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_controller.h b/ios/chrome/browser/ui/ntp/new_tab_page_controller.h index b4bc70c..92f18a11 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_controller.h +++ b/ios/chrome/browser/ui/ntp/new_tab_page_controller.h
@@ -8,7 +8,6 @@ #import <UIKit/UIKit.h> #include <string> -#include "base/mac/scoped_nsobject.h" #import "ios/chrome/browser/ui/native_content_controller.h" #import "ios/chrome/browser/ui/ntp/new_tab_page_bar.h" #import "ios/chrome/browser/ui/ntp/new_tab_page_panel_protocol.h" @@ -55,15 +54,15 @@ // A controller for the New Tab Page user interface. Supports multiple "panels", // each with its own controller. The panels are created lazily. // -// The scoped_nsobjects instance variables |*Controller_| are instances of +// The strongly retained instance variables |*Controller_| are instances of // subclasses of NewTabPagePanelProtocol that are created lazily. // Each Panel is its own controller with the accessible views are added to the -// |newTabPageView_|. +// |ntpView_|. // -// newTabPageView_ (aka |ntpView|) is a horizontally scrollable view that -// contains the *PanelController instances available to the user at the moment. -// A tab-page bar inside |ntpView| provides direct access to the -// *PanelControllers on the scrollable view. +// newTabPageView_ is a horizontally scrollable view that contains the +// *PanelController instances available to the user at the moment. A tab-page +// bar inside |ntpView| provides direct access to the *PanelControllers on the +// scrollable view. // // The currently visible *PanelController is accessible through // |currentController_|. @@ -74,16 +73,9 @@ NewTabPagePanelControllerDelegate, ToolbarOwner, UIGestureRecognizerDelegate, - UIScrollViewDelegate> { - @private - base::scoped_nsobject<BookmarkHomeTabletNTPController> bookmarkController_; - base::scoped_nsobject<GoogleLandingViewController> googleLandingController_; - base::scoped_nsprotocol<id<NewTabPagePanelProtocol>> incognitoController_; - // The currently visible controller, one of the above. - id<NewTabPagePanelProtocol> currentController_; // weak -} + UIScrollViewDelegate> -@property(nonatomic, assign) id<CRWSwipeRecognizerProvider> +@property(nonatomic, weak) id<CRWSwipeRecognizerProvider> swipeRecognizerProvider; // Init with the given url (presumably "chrome://newtab") and loader object. @@ -114,4 +106,17 @@ @end +#pragma mark - Testing + +@class NewTabPageView; + +@interface NewTabPageController (TestSupport) +@property(nonatomic, strong) NewTabPageView* ntpView; + +- (id<NewTabPagePanelProtocol>)currentController; +- (BookmarkHomeTabletNTPController*)bookmarkController; +- (GoogleLandingViewController*)googleLandingController; +- (id<NewTabPagePanelProtocol>)incognitoController; +@end + #endif // IOS_CHROME_BROWSER_UI_NTP_NEW_TAB_PAGE_CONTROLLER_H_
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm index 60b9af7..a84eeed 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_controller.mm
@@ -6,9 +6,8 @@ #import <QuartzCore/QuartzCore.h> -#import "base/ios/weak_nsobject.h" #include "base/logging.h" -#include "base/mac/objc_property_releaser.h" + #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" #include "components/prefs/pref_service.h" @@ -40,6 +39,10 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util_mac.h" +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + using base::UserMetricsAction; namespace { @@ -108,31 +111,31 @@ } // anonymous namespace @interface NewTabPageController () { - ios::ChromeBrowserState* browserState_; // Weak. - id<UrlLoader> loader_; // Weak. - id<CRWSwipeRecognizerProvider> swipeRecognizerProvider_; // Weak. - id<NewTabPageControllerObserver> newTabPageObserver_; // Weak. + ios::ChromeBrowserState* browserState_; // weak. + __weak id<UrlLoader> loader_; + __weak id<NewTabPageControllerObserver> newTabPageObserver_; + BookmarkHomeTabletNTPController* bookmarkController_; + GoogleLandingViewController* googleLandingController_; + id<NewTabPagePanelProtocol> incognitoController_; + // The currently visible controller, one of the above. + __weak id<NewTabPagePanelProtocol> currentController_; - NewTabPageView* newTabPageView_; + GoogleLandingMediator* googleLandingMediator_; - base::scoped_nsobject<GoogleLandingMediator> googleLandingMediator_; - - base::scoped_nsobject<RecentTabsPanelController> openTabsController_; + RecentTabsPanelController* openTabsController_; // Has the scrollView been initialized. BOOL scrollInitialized_; // Dominant color cache. Key: (NSString*)url, val: (UIColor*)dominantColor. - NSMutableDictionary* dominantColorCache_; // Weak, owned by bvc. + __weak NSMutableDictionary* dominantColorCache_; // Owned by bvc. // Delegate to focus and blur the omnibox. - base::WeakNSProtocol<id<OmniboxFocuser>> focuser_; + __weak id<OmniboxFocuser> focuser_; // Delegate to fetch the ToolbarModel and current web state from. - base::WeakNSProtocol<id<WebToolbarDelegate>> webToolbarDelegate_; + __weak id<WebToolbarDelegate> webToolbarDelegate_; - base::scoped_nsobject<TabModel> tabModel_; - - base::mac::ObjCPropertyReleaser propertyReleaser_NewTabPageController_; + TabModel* tabModel_; } // Load and bring panel into view. @@ -161,7 +164,7 @@ // Returns the ID for the currently selected panel. - (NewTabPage::PanelIdentifier)selectedPanelID; -@property(nonatomic, retain) NewTabPageView* ntpView; +@property(nonatomic, strong) NewTabPageView* ntpView; // To ease modernizing the NTP only the internal panels are being converted // to UIViewControllers. This means all the plumbing between the @@ -170,17 +173,17 @@ // controller would be owned by a coordinator, in this case the old NTP // controller adds and removes child view controllers itself when a load // is initiated, and when WebController calls -willBeDismissed. -@property(nonatomic, assign) UIViewController* parentViewController; +@property(nonatomic, weak) UIViewController* parentViewController; // To ease modernizing the NTP a non-descript CommandDispatcher is passed thru // to be used by the reuabled NTP panels. -@property(nonatomic, assign) id dispatcher; +@property(nonatomic, weak) id dispatcher; @end @implementation NewTabPageController -@synthesize ntpView = newTabPageView_; +@synthesize ntpView = ntpView_; @synthesize swipeRecognizerProvider = swipeRecognizerProvider_; @synthesize parentViewController = parentViewController_; @synthesize dispatcher = dispatcher_; @@ -198,32 +201,29 @@ self = [super initWithNibName:nil url:url]; if (self) { DCHECK(browserState); - propertyReleaser_NewTabPageController_.Init(self, - [NewTabPageController class]); browserState_ = browserState; loader_ = loader; newTabPageObserver_ = ntpObserver; parentViewController_ = parentViewController; dispatcher_ = dispatcher; - focuser_.reset(focuser); - webToolbarDelegate_.reset(webToolbarDelegate); - tabModel_.reset([tabModel retain]); + focuser_ = focuser; + webToolbarDelegate_ = webToolbarDelegate; + tabModel_ = tabModel; dominantColorCache_ = colorCache; self.title = l10n_util::GetNSString(IDS_NEW_TAB_TITLE); scrollInitialized_ = NO; - base::scoped_nsobject<UIScrollView> scrollView( - [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 412)]); + UIScrollView* scrollView = + [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 412)]; [scrollView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; - base::scoped_nsobject<NewTabPageBar> tabBar( - [[NewTabPageBar alloc] initWithFrame:CGRectMake(0, 412, 320, 48)]); - newTabPageView_ = - [[NewTabPageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) - andScrollView:scrollView - andTabBar:tabBar]; + NewTabPageBar* tabBar = + [[NewTabPageBar alloc] initWithFrame:CGRectMake(0, 412, 320, 48)]; + ntpView_ = [[NewTabPageView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) + andScrollView:scrollView + andTabBar:tabBar]; // TODO(crbug.com/607113): Merge view and ntpView. - self.view = newTabPageView_; + self.view = ntpView_; [tabBar setDelegate:self]; bool isIncognito = browserState_->IsOffTheRecord(); @@ -317,7 +317,6 @@ [bookmarkController_ setDelegate:nil]; [openTabsController_ setDelegate:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self]; - [super dealloc]; } #pragma mark - CRWNativeContent @@ -533,26 +532,25 @@ // Only load the controllers once. if (item.identifier == NewTabPage::kBookmarksPanel) { if (!bookmarkController_) { - base::scoped_nsobject<BookmarkControllerFactory> factory( - [[BookmarkControllerFactory alloc] init]); - bookmarkController_.reset([[factory - bookmarkPanelControllerForBrowserState:browserState_ - loader:loader_ - colorCache:dominantColorCache_] retain]); + BookmarkControllerFactory* factory = + [[BookmarkControllerFactory alloc] init]; + bookmarkController_ = + [factory bookmarkPanelControllerForBrowserState:browserState_ + loader:loader_ + colorCache:dominantColorCache_]; } panelController = bookmarkController_; view = [bookmarkController_ view]; [bookmarkController_ setDelegate:self]; } else if (item.identifier == NewTabPage::kMostVisitedPanel) { if (!googleLandingController_) { - googleLandingController_.reset( - [[GoogleLandingViewController alloc] init]); + googleLandingController_ = [[GoogleLandingViewController alloc] init]; [googleLandingController_ setDispatcher:self.dispatcher]; - googleLandingMediator_.reset([[GoogleLandingMediator alloc] + googleLandingMediator_ = [[GoogleLandingMediator alloc] initWithConsumer:googleLandingController_ browserState:browserState_ dispatcher:self.dispatcher - webStateList:[tabModel_ webStateList]]); + webStateList:[tabModel_ webStateList]]; [googleLandingController_ setDataSource:googleLandingMediator_]; } panelController = googleLandingController_; @@ -560,18 +558,18 @@ [googleLandingController_ setDelegate:self]; } else if (item.identifier == NewTabPage::kOpenTabsPanel) { if (!openTabsController_) - openTabsController_.reset([[RecentTabsPanelController alloc] - initWithLoader:loader_ - browserState:browserState_]); + openTabsController_ = + [[RecentTabsPanelController alloc] initWithLoader:loader_ + browserState:browserState_]; // TODO(crbug.com/708319): Also set panelController for opentabs here. view = [openTabsController_ view]; [openTabsController_ setDelegate:self]; } else if (item.identifier == NewTabPage::kIncognitoPanel) { if (!incognitoController_) - incognitoController_.reset([[IncognitoPanelController alloc] - initWithLoader:loader_ - browserState:browserState_ - webToolbarDelegate:webToolbarDelegate_]); + incognitoController_ = + [[IncognitoPanelController alloc] initWithLoader:loader_ + browserState:browserState_ + webToolbarDelegate:webToolbarDelegate_]; // TODO(crbug.com/708319): Also set panelController for incognito here. view = [incognitoController_ view]; } else { @@ -612,12 +610,12 @@ [self.ntpView.scrollView setContentOffset:point animated:animate]; } else { if (item.identifier == NewTabPage::kBookmarksPanel) { - base::scoped_nsobject<GenericChromeCommand> command( - [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_BOOKMARK_MANAGER]); + GenericChromeCommand* command = + [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_BOOKMARK_MANAGER]; [self.ntpView chromeExecuteCommand:command]; } else if (item.identifier == NewTabPage::kOpenTabsPanel) { - base::scoped_nsobject<GenericChromeCommand> command( - [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_OTHER_DEVICES]); + GenericChromeCommand* command = + [[GenericChromeCommand alloc] initWithTag:IDC_SHOW_OTHER_DEVICES]; [self.ntpView chromeExecuteCommand:command]; } } @@ -662,20 +660,20 @@ id<NewTabPagePanelProtocol> oldController = currentController_; self.ntpView.tabBar.selectedIndex = index; if (item.identifier == NewTabPage::kBookmarksPanel) - currentController_ = bookmarkController_.get(); + currentController_ = bookmarkController_; else if (item.identifier == NewTabPage::kMostVisitedPanel) - currentController_ = googleLandingController_.get(); + currentController_ = googleLandingController_; else if (item.identifier == NewTabPage::kOpenTabsPanel) - currentController_ = openTabsController_.get(); + currentController_ = openTabsController_; else if (item.identifier == NewTabPage::kIncognitoPanel) - currentController_ = incognitoController_.get(); + currentController_ = incognitoController_; [bookmarkController_ - setScrollsToTop:(currentController_ == bookmarkController_.get())]; + setScrollsToTop:(currentController_ == bookmarkController_)]; [googleLandingController_ - setScrollsToTop:(currentController_ == googleLandingController_.get())]; + setScrollsToTop:(currentController_ == googleLandingController_)]; [openTabsController_ - setScrollsToTop:(currentController_ == openTabsController_.get())]; + setScrollsToTop:(currentController_ == openTabsController_)]; [self.ntpView.tabBar setShadowAlpha:[currentController_ alphaForBottomShadow]]; @@ -747,3 +745,23 @@ } @end + +@implementation NewTabPageController (TestSupport) + +- (id<NewTabPagePanelProtocol>)currentController { + return currentController_; +} + +- (BookmarkHomeTabletNTPController*)bookmarkController { + return bookmarkController_; +} + +- (GoogleLandingViewController*)googleLandingController { + return googleLandingController_; +} + +- (id<NewTabPagePanelProtocol>)incognitoController { + return incognitoController_; +} + +@end
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_controller_unittest.mm b/ios/chrome/browser/ui/ntp/new_tab_page_controller_unittest.mm index 2314916..717ab6b 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_controller_unittest.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_controller_unittest.mm
@@ -34,31 +34,6 @@ #error "This file requires ARC support." #endif -@interface NewTabPageController (TestSupport) -- (id<NewTabPagePanelProtocol>)currentController; -- (BookmarkHomeTabletNTPController*)bookmarkController; -- (id<NewTabPagePanelProtocol>)incognitoController; -@end - -@interface NewTabPageController (PrivateMethods) -@property(nonatomic, retain) NewTabPageView* ntpView; -@end - -@implementation NewTabPageController (TestSupport) - -- (id<NewTabPagePanelProtocol>)currentController { - return currentController_; -} - -- (BookmarkHomeTabletNTPController*)bookmarkController { - return bookmarkController_.get(); -} - -- (id<NewTabPagePanelProtocol>)incognitoController { - return incognitoController_; -} - -@end namespace {
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm b/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm index 5076e4f..538d27b 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_egtest.mm
@@ -23,12 +23,6 @@ #error "This file requires ARC support." #endif -@implementation NewTabPageController (ExposedForTesting) -- (GoogleLandingViewController*)googleLandingController { - return googleLandingController_; -} -@end - @interface GoogleLandingViewController (ExposedForTesting) - (BOOL)scrolledToTop; - (BOOL)animateHeader;
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_header_view.h b/ios/chrome/browser/ui/ntp/new_tab_page_header_view.h index 83911a7e..c8974821 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_header_view.h +++ b/ios/chrome/browser/ui/ntp/new_tab_page_header_view.h
@@ -9,7 +9,7 @@ #import "ios/chrome/browser/ui/toolbar/toolbar_owner.h" -@protocol GoogleLandingDataSource; +class ReadingListModel; // Header view for the Material Design NTP. The header view contains all views // that are displayed above the list of most visited sites, which includes the @@ -19,10 +19,10 @@ // Return the toolbar view; @property(nonatomic, readonly) UIView* toolBarView; -// Creates a NewTabPageToolbarController using the given |toolbarDelegate|, -// |focuser| and |readingListModel|, and adds the toolbar view to self. -- (void)addToolbarWithDataSource:(id<GoogleLandingDataSource>)dataSource - dispatcher:(id)dispatcher; +// Creates a NewTabPageToolbarController using the given |dispatcher|, +// |readingListModel|, and adds the toolbar view to self. +- (void)addToolbarWithReadingListModel:(ReadingListModel*)readingListModel + dispatcher:(id)dispatcher; // Changes the constraints of searchField based on its initialFrame and the // scroll view's y |offset|. Also adjust the alpha values for |_searchBoxBorder|
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm b/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm index 945cc38..0381854 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_header_view.mm
@@ -65,14 +65,14 @@ [self addSubview:[_toolbarController view]]; } -- (void)addToolbarWithDataSource:(id<GoogleLandingDataSource>)dataSource - dispatcher:(id)dispatcher { +- (void)addToolbarWithReadingListModel:(ReadingListModel*)readingListModel + dispatcher:(id)dispatcher { DCHECK(!_toolbarController); - DCHECK(dataSource); + DCHECK(readingListModel); _toolbarController = [[NewTabPageToolbarController alloc] init]; [_toolbarController setDispatcher:dispatcher]; - _toolbarController.readingListModel = [dataSource readingListModel]; + _toolbarController.readingListModel = readingListModel; UIView* toolbarView = [_toolbarController view]; CGRect toolbarFrame = self.bounds;
diff --git a/ios/chrome/browser/ui/payments/payment_items_display_view_controller.h b/ios/chrome/browser/ui/payments/payment_items_display_view_controller.h index b20a3790..0af0a36 100644 --- a/ios/chrome/browser/ui/payments/payment_items_display_view_controller.h +++ b/ios/chrome/browser/ui/payments/payment_items_display_view_controller.h
@@ -51,7 +51,8 @@ - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/payments/payment_items_display_view_controller.mm b/ios/chrome/browser/ui/payments/payment_items_display_view_controller.mm index af18494a..e354322 100644 --- a/ios/chrome/browser/ui/payments/payment_items_display_view_controller.mm +++ b/ios/chrome/browser/ui/payments/payment_items_display_view_controller.mm
@@ -56,7 +56,9 @@ @synthesize dataSource = _dataSource; - (instancetype)initWithPayButtonEnabled:(BOOL)payButtonEnabled { - if ((self = [super initWithStyle:CollectionViewControllerStyleAppBar])) { + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + if ((self = [super initWithLayout:layout + style:CollectionViewControllerStyleAppBar])) { [self setTitle:l10n_util::GetNSString(IDS_PAYMENTS_ORDER_SUMMARY_LABEL)]; // Set up leading (return) button.
diff --git a/ios/chrome/browser/ui/payments/payment_request_edit_view_controller.mm b/ios/chrome/browser/ui/payments/payment_request_edit_view_controller.mm index 6128089..5b5acb4 100644 --- a/ios/chrome/browser/ui/payments/payment_request_edit_view_controller.mm +++ b/ios/chrome/browser/ui/payments/payment_request_edit_view_controller.mm
@@ -158,7 +158,8 @@ @synthesize pickerViews = _pickerViews; - (instancetype)init { - self = [self initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = [self initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { // Set up leading (cancel) button. UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc] @@ -191,8 +192,9 @@ return self; } -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style { - self = [super initWithStyle:style]; +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style { + self = [super initWithLayout:layout style:style]; if (self) { _accessoryView = [[AutofillEditAccessoryView alloc] initWithDelegate:self]; _options = [[NSMutableDictionary alloc] init];
diff --git a/ios/chrome/browser/ui/payments/payment_request_edit_view_controller_unittest.mm b/ios/chrome/browser/ui/payments/payment_request_edit_view_controller_unittest.mm index b2c19ac..b215901 100644 --- a/ios/chrome/browser/ui/payments/payment_request_edit_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_edit_view_controller_unittest.mm
@@ -79,7 +79,8 @@ CollectionViewController* InstantiateController() override { PaymentRequestEditViewController* viewController = [[PaymentRequestEditViewController alloc] - initWithStyle:CollectionViewControllerStyleDefault]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleDefault]; mediator_ = [[TestPaymentRequestEditMediator alloc] init]; [mediator_ setConsumer:viewController]; [viewController setDataSource:mediator_];
diff --git a/ios/chrome/browser/ui/payments/payment_request_error_view_controller.h b/ios/chrome/browser/ui/payments/payment_request_error_view_controller.h index 3db67e5..2c9f97a 100644 --- a/ios/chrome/browser/ui/payments/payment_request_error_view_controller.h +++ b/ios/chrome/browser/ui/payments/payment_request_error_view_controller.h
@@ -34,7 +34,8 @@ - (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/payments/payment_request_error_view_controller.mm b/ios/chrome/browser/ui/payments/payment_request_error_view_controller.mm index db3357e..d186daa 100644 --- a/ios/chrome/browser/ui/payments/payment_request_error_view_controller.mm +++ b/ios/chrome/browser/ui/payments/payment_request_error_view_controller.mm
@@ -50,7 +50,9 @@ @synthesize delegate = _delegate; - (instancetype)init { - if ((self = [super initWithStyle:CollectionViewControllerStyleAppBar])) { + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + if ((self = [super initWithLayout:layout + style:CollectionViewControllerStyleAppBar])) { [self setTitle:l10n_util::GetNSString(IDS_PAYMENTS_TITLE)]; // Set up trailing (ok) button.
diff --git a/ios/chrome/browser/ui/payments/payment_request_selector_view_controller.mm b/ios/chrome/browser/ui/payments/payment_request_selector_view_controller.mm index 3157b06..aee0278 100644 --- a/ios/chrome/browser/ui/payments/payment_request_selector_view_controller.mm +++ b/ios/chrome/browser/ui/payments/payment_request_selector_view_controller.mm
@@ -57,7 +57,9 @@ @synthesize editing = _editing; - (instancetype)init { - if ((self = [super initWithStyle:CollectionViewControllerStyleAppBar])) { + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + if ((self = [super initWithLayout:layout + style:CollectionViewControllerStyleAppBar])) { _editing = NO; // Set up leading (back) button.
diff --git a/ios/chrome/browser/ui/payments/payment_request_view_controller.h b/ios/chrome/browser/ui/payments/payment_request_view_controller.h index 9aae684..4de391df 100644 --- a/ios/chrome/browser/ui/payments/payment_request_view_controller.h +++ b/ios/chrome/browser/ui/payments/payment_request_view_controller.h
@@ -92,7 +92,8 @@ - (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/payments/payment_request_view_controller.mm b/ios/chrome/browser/ui/payments/payment_request_view_controller.mm index ba457c0..a44162d 100644 --- a/ios/chrome/browser/ui/payments/payment_request_view_controller.mm +++ b/ios/chrome/browser/ui/payments/payment_request_view_controller.mm
@@ -82,7 +82,9 @@ @synthesize dataSource = _dataSource; - (instancetype)init { - if ((self = [super initWithStyle:CollectionViewControllerStyleAppBar])) { + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + if ((self = [super initWithLayout:layout + style:CollectionViewControllerStyleAppBar])) { [self setTitle:l10n_util::GetNSString(IDS_PAYMENTS_TITLE)]; // Set up leading (cancel) button.
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.h b/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.h index 4814b9a1..b6c270f 100644 --- a/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.h +++ b/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.h
@@ -65,7 +65,8 @@ - (instancetype)initWithDataSource:(id<ReadingListDataSource>)dataSource toolbar:(ReadingListToolbar*)toolbar NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @property(nonatomic, weak) id<ReadingListCollectionViewControllerDelegate>
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.mm b/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.mm index bc4b7d1..b3b7145 100644 --- a/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.mm +++ b/ios/chrome/browser/ui/reading_list/reading_list_collection_view_controller.mm
@@ -144,7 +144,9 @@ - (instancetype)initWithDataSource:(id<ReadingListDataSource>)dataSource toolbar:(ReadingListToolbar*)toolbar { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _toolbar = toolbar;
diff --git a/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.h b/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.h index 00d74ea0..31c4f2b 100644 --- a/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.h
@@ -14,7 +14,8 @@ - (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.mm b/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.mm index 740243f..40270c32 100644 --- a/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/about_chrome_collection_view_controller.mm
@@ -51,7 +51,9 @@ #pragma mark Initialization - (instancetype)init { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_ABOUT_PRODUCT_NAME); [self loadModel];
diff --git a/ios/chrome/browser/ui/settings/accounts_collection_view_controller.h b/ios/chrome/browser/ui/settings/accounts_collection_view_controller.h index 4a0b9c1..f22449de 100644 --- a/ios/chrome/browser/ui/settings/accounts_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/accounts_collection_view_controller.h
@@ -35,7 +35,8 @@ closeSettingsOnAddAccount:(BOOL)closeSettingsOnAddAccount NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/accounts_collection_view_controller.mm b/ios/chrome/browser/ui/settings/accounts_collection_view_controller.mm index ea44570f..54e7df65 100644 --- a/ios/chrome/browser/ui/settings/accounts_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/accounts_collection_view_controller.mm
@@ -119,7 +119,9 @@ closeSettingsOnAddAccount:(BOOL)closeSettingsOnAddAccount { DCHECK(browserState); DCHECK(!browserState->IsOffTheRecord()); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _browserState = browserState; _closeSettingsOnAddAccount = closeSettingsOnAddAccount;
diff --git a/ios/chrome/browser/ui/settings/autofill_collection_view_controller.h b/ios/chrome/browser/ui/settings/autofill_collection_view_controller.h index 62f284d..1d192fd 100644 --- a/ios/chrome/browser/ui/settings/autofill_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/autofill_collection_view_controller.h
@@ -18,7 +18,8 @@ // The designated initializer. |browserState| must not be nil. - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/autofill_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_collection_view_controller.mm index a6a164a..8020f0d7 100644 --- a/ios/chrome/browser/ui/settings/autofill_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill_collection_view_controller.mm
@@ -72,7 +72,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.collectionViewAccessibilityIdentifier = @"kAutofillCollectionViewId"; self.title = l10n_util::GetNSString(IDS_IOS_AUTOFILL);
diff --git a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.h b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.h index 6a66a44..c64dc68 100644 --- a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.h
@@ -22,7 +22,8 @@ personalDataManager:(autofill::PersonalDataManager*)dataManager NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm index d90d44d..ecfbcfb 100644 --- a/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill_credit_card_edit_collection_view_controller.mm
@@ -67,7 +67,9 @@ - (instancetype)initWithCreditCard:(const autofill::CreditCard&)creditCard personalDataManager:(autofill::PersonalDataManager*)dataManager { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { DCHECK(dataManager);
diff --git a/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm index 00458527..712dc97a 100644 --- a/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill_edit_collection_view_controller.mm
@@ -43,8 +43,9 @@ @implementation AutofillEditCollectionViewController -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style { - self = [super initWithStyle:style]; +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style { + self = [super initWithLayout:layout style:style]; if (!self) { return nil; }
diff --git a/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.h b/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.h index b85f03e..3839347 100644 --- a/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.h
@@ -23,7 +23,8 @@ personalDataManager: (autofill::PersonalDataManager*)dataManager; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm b/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm index 1c7c3b3d..846c71d 100644 --- a/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill_profile_edit_collection_view_controller.mm
@@ -94,7 +94,9 @@ personalDataManager:(autofill::PersonalDataManager*)dataManager { DCHECK(dataManager); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _personalDataManager = dataManager; _autofillProfile = profile;
diff --git a/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.h b/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.h index 037b6b6..2e93667 100644 --- a/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.h
@@ -19,7 +19,8 @@ // The designated initializer. |browserState| must not be nil. - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.mm b/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.mm index 0e10a1e..008e603 100644 --- a/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/bandwidth_management_collection_view_controller.mm
@@ -63,7 +63,9 @@ @implementation BandwidthManagementCollectionViewController - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_BANDWIDTH_MANAGEMENT_SETTINGS); self.collectionViewAccessibilityIdentifier = @"Bandwidth Management";
diff --git a/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.h b/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.h index 3e200eca..da3df09 100644 --- a/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.h
@@ -19,7 +19,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.mm b/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.mm index 2494b4f9..0967faa 100644 --- a/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/block_popups_collection_view_controller.mm
@@ -66,7 +66,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _browserState = browserState; HostContentSettingsMap* settingsMap =
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h b/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h index 95216a1..e5cb3586 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h
@@ -29,7 +29,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm b/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm index 006b73a1..496206a 100644 --- a/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.mm
@@ -185,7 +185,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.accessibilityTraits |= UIAccessibilityTraitButton;
diff --git a/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.h b/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.h index 2be2972..4fda87cf 100644 --- a/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.h
@@ -16,9 +16,11 @@ @interface ComposeEmailHandlerCollectionViewController : SettingsRootCollectionViewController -- (instancetype)initWithRewriter:(MailtoURLRewriter*)rewriter; +- (instancetype)initWithRewriter:(MailtoURLRewriter*)rewriter + NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.mm b/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.mm index bea04a3..809e89b 100644 --- a/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/compose_email_handler_collection_view_controller.mm
@@ -40,7 +40,9 @@ @implementation ComposeEmailHandlerCollectionViewController - (instancetype)initWithRewriter:(MailtoURLRewriter*)rewriter { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_COMPOSE_EMAIL_SETTING); self.collectionViewAccessibilityIdentifier =
diff --git a/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.h b/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.h index 7523cf17..26d96f5 100644 --- a/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.h
@@ -21,7 +21,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm b/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm index 25d33c5..b3cb537 100644 --- a/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/content_settings_collection_view_controller.mm
@@ -82,7 +82,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { browserState_ = browserState; self.title = l10n_util::GetNSString(IDS_IOS_CONTENT_SETTINGS_TITLE);
diff --git a/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.h b/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.h index 808b3f21..bd7cc887 100644 --- a/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.h
@@ -25,7 +25,8 @@ // |browserState|. - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.mm b/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.mm index f77ec2f5..d938612 100644 --- a/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.mm
@@ -59,7 +59,9 @@ - (instancetype)initWithPermissions: (TouchToSearchPermissionsMediator*)touchToSearchPermissions { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_CONTEXTUAL_SEARCH_TITLE); _touchToSearchPermissions = touchToSearchPermissions;
diff --git a/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.h b/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.h index 1f3eb36..2de250f 100644 --- a/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.h
@@ -19,7 +19,8 @@ wifiPref:(const char*)wifiPreference title:(NSString*)title NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Returns the text for the current setting, based on the values of the
diff --git a/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.mm b/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.mm index 4aedf8b..a7682b8 100644 --- a/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.mm
@@ -53,7 +53,9 @@ basePref:(const char*)basePreference wifiPref:(const char*)wifiPreference title:(NSString*)title { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = title; basePreference_.Init(basePreference, prefs); @@ -63,11 +65,6 @@ return self; } -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style { - NOTREACHED(); - return nil; -} - - (void)loadModel { [super loadModel]; CollectionViewModel* model = self.collectionViewModel;
diff --git a/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.h b/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.h index 3193164..c905bbb 100644 --- a/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.h
@@ -13,7 +13,8 @@ : SettingsRootCollectionViewController - (instancetype)initWithPrefs:(PrefService*)prefs NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.mm b/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.mm index 65a91a7..c6f1ffa 100644 --- a/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.mm
@@ -53,7 +53,9 @@ #pragma mark - Initialization - (instancetype)initWithPrefs:(PrefService*)prefs { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_OPTIONS_DO_NOT_TRACK_MOBILE); _doNotTrackEnabled.Init(prefs::kEnableDoNotTrack, prefs);
diff --git a/ios/chrome/browser/ui/settings/handoff_collection_view_controller.h b/ios/chrome/browser/ui/settings/handoff_collection_view_controller.h index df9b77b..738a955d 100644 --- a/ios/chrome/browser/ui/settings/handoff_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/handoff_collection_view_controller.h
@@ -19,7 +19,8 @@ // The designated initializer. |browserState| must not be nil. - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/handoff_collection_view_controller.mm b/ios/chrome/browser/ui/settings/handoff_collection_view_controller.mm index 57d5425..89e4894 100644 --- a/ios/chrome/browser/ui/settings/handoff_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/handoff_collection_view_controller.mm
@@ -48,7 +48,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_OPTIONS_CONTINUITY_LABEL); _handoffEnabled.Init(prefs::kIosHandoffToOtherDevices,
diff --git a/ios/chrome/browser/ui/settings/import_data_collection_view_controller.h b/ios/chrome/browser/ui/settings/import_data_collection_view_controller.h index e107458..7343f2f 100644 --- a/ios/chrome/browser/ui/settings/import_data_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/import_data_collection_view_controller.h
@@ -41,7 +41,8 @@ toEmail:(NSString*)toEmail isSignedIn:(BOOL)isSignedIn NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm b/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm index cbcabba..6a7cea7 100644 --- a/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/import_data_collection_view_controller.mm
@@ -62,7 +62,9 @@ isSignedIn:(BOOL)isSignedIn { DCHECK(fromEmail); DCHECK(toEmail); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _delegate = delegate; _fromEmail = [fromEmail copy];
diff --git a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.h b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.h index f837fef..c6997dd 100644 --- a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.h +++ b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.h
@@ -12,7 +12,8 @@ - (instancetype)init NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm index 9afd756..4b6c87c 100644 --- a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm +++ b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm
@@ -107,7 +107,9 @@ @implementation MaterialCellCatalogViewController - (instancetype)init { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { [self loadModel]; }
diff --git a/ios/chrome/browser/ui/settings/password_details_collection_view_controller.h b/ios/chrome/browser/ui/settings/password_details_collection_view_controller.h index 64cd329..ee1604f 100644 --- a/ios/chrome/browser/ui/settings/password_details_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/password_details_collection_view_controller.h
@@ -32,7 +32,8 @@ password:(NSString*)password origin:(NSString*)origin NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm b/ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm index 8d3dfa0..a5b5bfe 100644 --- a/ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/password_details_collection_view_controller.mm
@@ -87,7 +87,9 @@ origin:(NSString*)origin { DCHECK(delegate); DCHECK(reauthenticationModule); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _weakDelegate = delegate; _weakReauthenticationModule = reauthenticationModule;
diff --git a/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.h b/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.h index 13cf266..eb82c04 100644 --- a/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.h
@@ -19,7 +19,8 @@ - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Given the current Physical Web preference state, determine whether the
diff --git a/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.mm b/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.mm index 9ef7cff9..1d5283a 100644 --- a/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/physical_web_collection_view_controller.mm
@@ -65,7 +65,9 @@ #pragma mark - Initialization - (instancetype)initWithPrefs:(PrefService*)prefs { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_OPTIONS_ENABLE_PHYSICAL_WEB); _physicalWebEnabled.Init(prefs::kIosPhysicalWebEnabled, prefs); @@ -74,16 +76,6 @@ return self; } -- (instancetype)init { - NOTREACHED(); - return nil; -} - -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style { - NOTREACHED(); - return nil; -} - #pragma mark - Preference switch + (BOOL)shouldEnableForPreferenceState:(int)preferenceState {
diff --git a/ios/chrome/browser/ui/settings/privacy_collection_view_controller.h b/ios/chrome/browser/ui/settings/privacy_collection_view_controller.h index 511e4d1..73a0faa 100644 --- a/ios/chrome/browser/ui/settings/privacy_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/privacy_collection_view_controller.h
@@ -21,7 +21,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle*)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm b/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm index 8fe037e..d19931e 100644 --- a/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm
@@ -115,7 +115,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _browserState = browserState; self.title =
diff --git a/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.h b/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.h index 0bb2200..594e7773 100644 --- a/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.h
@@ -18,7 +18,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.mm b/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.mm index 60bd7f3..95dc29e 100644 --- a/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/save_passwords_collection_view_controller.mm
@@ -175,7 +175,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { browserState_ = browserState; reauthenticationModule_ = [[ReauthenticationModule alloc]
diff --git a/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.h b/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.h index cbbc5615..a1115ae1 100644 --- a/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.h
@@ -16,7 +16,12 @@ : SettingsRootCollectionViewController // The designated initializer. |browserState| must not be nil. -- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState; +- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState + NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style + NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.mm b/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.mm index 54a8085..badc421 100644 --- a/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/search_engine_settings_collection_view_controller.mm
@@ -80,7 +80,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { templateURLService_ = ios::TemplateURLServiceFactory::GetForBrowserState(browserState);
diff --git a/ios/chrome/browser/ui/settings/settings_collection_view_controller.h b/ios/chrome/browser/ui/settings/settings_collection_view_controller.h index 664589b..0088828 100644 --- a/ios/chrome/browser/ui/settings/settings_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/settings_collection_view_controller.h
@@ -42,7 +42,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm b/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm index 47f4dbe3..a6988c9 100644 --- a/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_collection_view_controller.mm
@@ -235,10 +235,10 @@ #pragma mark Initialization - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { - // Checks that |browserState| is not an Incognito browser state. - DCHECK(browserState); - DCHECK_EQ(browserState, browserState->GetOriginalChromeBrowserState()); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + DCHECK(!browserState->IsOffTheRecord()); + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _browserState = browserState; self.title = l10n_util::GetNSStringWithFixup(IDS_IOS_SETTINGS_TITLE);
diff --git a/ios/chrome/browser/ui/settings/settings_navigation_controller.h b/ios/chrome/browser/ui/settings/settings_navigation_controller.h index 2afb19a..de84b6b 100644 --- a/ios/chrome/browser/ui/settings/settings_navigation_controller.h +++ b/ios/chrome/browser/ui/settings/settings_navigation_controller.h
@@ -48,13 +48,12 @@ // Creates a new SettingsCollectionViewController and the chrome around it. // |browserState| is used to personalize some settings aspects and should not be -// nil. |delegate| may be nil. -// clang-format off -+ (SettingsNavigationController*)newSettingsMainControllerWithMainBrowserState: - (ios::ChromeBrowserState*)browserState - delegate: - (id<SettingsNavigationControllerDelegate>)delegate; -// clang-format on +// nil nor Off-the-Record. |delegate| may be nil. ++ (SettingsNavigationController*) +newSettingsMainControllerWithBrowserState:(ios::ChromeBrowserState*)browserState + delegate: + (id<SettingsNavigationControllerDelegate>) + delegate; // Creates a new AccountsCollectionViewController and the chrome around it. // |browserState| is used to personalize some settings aspects and should not be
diff --git a/ios/chrome/browser/ui/settings/settings_navigation_controller.mm b/ios/chrome/browser/ui/settings/settings_navigation_controller.mm index 56309540..797b617 100644 --- a/ios/chrome/browser/ui/settings/settings_navigation_controller.mm +++ b/ios/chrome/browser/ui/settings/settings_navigation_controller.mm
@@ -112,12 +112,11 @@ #pragma mark - SettingsNavigationController methods. -// clang-format off -+ (SettingsNavigationController*)newSettingsMainControllerWithMainBrowserState: - (ios::ChromeBrowserState*)browserState - delegate: - (id<SettingsNavigationControllerDelegate>)delegate { - // clang-format on ++ (SettingsNavigationController*) +newSettingsMainControllerWithBrowserState:(ios::ChromeBrowserState*)browserState + delegate: + (id<SettingsNavigationControllerDelegate>) + delegate { UIViewController* controller = [[SettingsCollectionViewController alloc] initWithBrowserState:browserState]; SettingsNavigationController* nc = [[SettingsNavigationController alloc]
diff --git a/ios/chrome/browser/ui/settings/settings_navigation_controller_unittest.mm b/ios/chrome/browser/ui/settings/settings_navigation_controller_unittest.mm index 95119d95..14390323 100644 --- a/ios/chrome/browser/ui/settings/settings_navigation_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/settings_navigation_controller_unittest.mm
@@ -89,9 +89,9 @@ @autoreleasepool { SettingsNavigationController* settingsController = [SettingsNavigationController - newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ - .get() - delegate:nil]; + newSettingsMainControllerWithBrowserState:chrome_browser_state_ + .get() + delegate:nil]; UIViewController* viewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; [settingsController pushViewController:viewController animated:NO]; @@ -110,9 +110,9 @@ @autoreleasepool { SettingsNavigationController* settingsController = [SettingsNavigationController - newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ - .get() - delegate:nil]; + newSettingsMainControllerWithBrowserState:chrome_browser_state_ + .get() + delegate:nil]; EXPECT_EQ(1U, [[settingsController viewControllers] count]); EXPECT_FALSE([settingsController popViewControllerAnimated:NO]); @@ -127,9 +127,9 @@ @autoreleasepool { SettingsNavigationController* settingsController = [SettingsNavigationController - newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ - .get() - delegate:mockDelegate_]; + newSettingsMainControllerWithBrowserState:chrome_browser_state_ + .get() + delegate:mockDelegate_]; UIViewController* viewController = [[UIViewController alloc] initWithNibName:nil bundle:nil]; [settingsController pushViewController:viewController animated:NO]; @@ -149,9 +149,9 @@ @autoreleasepool { SettingsNavigationController* settingsController = [SettingsNavigationController - newSettingsMainControllerWithMainBrowserState:chrome_browser_state_ - .get() - delegate:mockDelegate_]; + newSettingsMainControllerWithBrowserState:chrome_browser_state_ + .get() + delegate:mockDelegate_]; EXPECT_EQ(1U, [[settingsController viewControllers] count]); [[mockDelegate_ expect] closeSettings]; [settingsController popViewControllerOrCloseSettingsAnimated:NO];
diff --git a/ios/chrome/browser/ui/settings/settings_root_collection_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/settings_root_collection_view_controller_unittest.mm index 5f18be24..255555aa 100644 --- a/ios/chrome/browser/ui/settings/settings_root_collection_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/settings_root_collection_view_controller_unittest.mm
@@ -57,7 +57,8 @@ public: SettingsRootCollectionViewControllerTest() : controller_([[TestSettingsRootCollectionViewController alloc] - initWithStyle:CollectionViewControllerStyleDefault]) { + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleDefault]) { item1_ = [[CollectionViewItem alloc] initWithType:kItemTypeEnumZero]; item2_ = [[CollectionViewItem alloc] initWithType:kItemTypeEnumZero + 10]; }
diff --git a/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.h b/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.h index 3013568..f352c4a 100644 --- a/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.h
@@ -18,7 +18,8 @@ // Designated initializer. |browserState| must not be nil. - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm b/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm index f1e0498..04a2512 100644 --- a/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm
@@ -65,7 +65,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_SYNC_ENCRYPTION_TITLE); _browserState = browserState;
diff --git a/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.h b/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.h index bad5668..af4f92504 100644 --- a/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.h
@@ -44,7 +44,8 @@ // |browserState| must not be nil. - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.mm b/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.mm index c1d1f12..c774e86 100644 --- a/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/sync_encryption_passphrase_collection_view_controller.mm
@@ -106,7 +106,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_SYNC_ENTER_PASSPHRASE_TITLE); self.shouldHideDoneButton = YES;
diff --git a/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h b/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h index f2c8cd0..9a4ec22b 100644 --- a/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h
@@ -27,7 +27,8 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState allowSwitchSyncAccount:(BOOL)allowSwitchSyncAccount NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; @end
diff --git a/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.mm b/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.mm index 22ca935a..b79c346 100644 --- a/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.mm
@@ -194,7 +194,9 @@ - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState allowSwitchSyncAccount:(BOOL)allowSwitchSyncAccount { DCHECK(browserState); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _allowSwitchSyncAccount = allowSwitchSyncAccount; _browserState = browserState;
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h index 73e8ce9e..ee4bdeb2 100644 --- a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.h
@@ -29,7 +29,8 @@ delegate:(id<TimeRangeSelectorCollectionViewControllerDelegate>)delegate NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; // Returns the text for the current setting, based on the values of the
diff --git a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm index 40e2bc5..7ee9f1f 100644 --- a/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/time_range_selector_collection_view_controller.mm
@@ -67,7 +67,9 @@ - (instancetype) initWithPrefs:(PrefService*)prefs delegate:(id<TimeRangeSelectorCollectionViewControllerDelegate>)delegate { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { _weakDelegate = delegate; self.title = l10n_util::GetNSString(
diff --git a/ios/chrome/browser/ui/settings/translate_collection_view_controller.h b/ios/chrome/browser/ui/settings/translate_collection_view_controller.h index 71cdb9c..de6c511 100644 --- a/ios/chrome/browser/ui/settings/translate_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/translate_collection_view_controller.h
@@ -15,7 +15,8 @@ // |prefs| must not be nil. - (instancetype)initWithPrefs:(PrefService*)prefs NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/translate_collection_view_controller.mm b/ios/chrome/browser/ui/settings/translate_collection_view_controller.mm index abce1f05..815eb0e 100644 --- a/ios/chrome/browser/ui/settings/translate_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/translate_collection_view_controller.mm
@@ -70,7 +70,9 @@ - (instancetype)initWithPrefs:(PrefService*)prefs { DCHECK(prefs); - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_TRANSLATE_SETTING); self.collectionViewAccessibilityIdentifier =
diff --git a/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.h b/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.h index 57c284a..c2072f5 100644 --- a/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.h +++ b/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.h
@@ -16,7 +16,8 @@ // The designated initializer. - (instancetype)initWithPrefs:(PrefService*)prefs NS_DESIGNATED_INITIALIZER; -- (instancetype)initWithStyle:(CollectionViewControllerStyle)style +- (instancetype)initWithLayout:(UICollectionViewLayout*)layout + style:(CollectionViewControllerStyle)style NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
diff --git a/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.mm b/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.mm index 8c3b9696..a3f367e 100644 --- a/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.mm +++ b/ios/chrome/browser/ui/settings/voicesearch_collection_view_controller.mm
@@ -54,7 +54,9 @@ #pragma mark - Initialization - (instancetype)initWithPrefs:(PrefService*)prefs { - self = [super initWithStyle:CollectionViewControllerStyleAppBar]; + UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; + self = + [super initWithLayout:layout style:CollectionViewControllerStyleAppBar]; if (self) { self.title = l10n_util::GetNSString(IDS_IOS_VOICE_SEARCH_SETTING_TITLE); _prefs = prefs;
diff --git a/ios/clean/chrome/browser/ui/settings/settings_coordinator.mm b/ios/clean/chrome/browser/ui/settings/settings_coordinator.mm index 3fcc5f91..9712317 100644 --- a/ios/clean/chrome/browser/ui/settings/settings_coordinator.mm +++ b/ios/clean/chrome/browser/ui/settings/settings_coordinator.mm
@@ -25,9 +25,8 @@ - (void)start { self.viewController = [SettingsNavigationController - newSettingsMainControllerWithMainBrowserState:self.browser - ->browser_state() - delegate:self]; + newSettingsMainControllerWithBrowserState:self.browser->browser_state() + delegate:self]; [super start]; }
diff --git a/ios/showcase/content_suggestions/sc_content_suggestions_data_source.mm b/ios/showcase/content_suggestions/sc_content_suggestions_data_source.mm index b8b4740c..6fdc54c7 100644 --- a/ios/showcase/content_suggestions/sc_content_suggestions_data_source.mm +++ b/ios/showcase/content_suggestions/sc_content_suggestions_data_source.mm
@@ -138,7 +138,7 @@ - (void)dismissSuggestion:(ContentSuggestionIdentifier*)suggestionIdentifier { } -- (UIView*)headerView { +- (UIView*)headerViewForWidth:(CGFloat)width { return nil; }
diff --git a/ios/showcase/payments/sc_payments_editor_coordinator.mm b/ios/showcase/payments/sc_payments_editor_coordinator.mm index b5e09698..1d4ca68e 100644 --- a/ios/showcase/payments/sc_payments_editor_coordinator.mm +++ b/ios/showcase/payments/sc_payments_editor_coordinator.mm
@@ -152,7 +152,8 @@ self.paymentRequestEditViewController = [[PaymentRequestEditViewController alloc] - initWithStyle:CollectionViewControllerStyleAppBar]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleAppBar]; [self.paymentRequestEditViewController setTitle:@"Add info"]; self.mediator = [[SCPaymentsEditorMediator alloc] init]; [self.mediator setConsumer:self.paymentRequestEditViewController];
diff --git a/ios/showcase/payments/sc_payments_selector_coordinator.mm b/ios/showcase/payments/sc_payments_selector_coordinator.mm index b988bf1..bcb25ce 100644 --- a/ios/showcase/payments/sc_payments_selector_coordinator.mm +++ b/ios/showcase/payments/sc_payments_selector_coordinator.mm
@@ -56,7 +56,8 @@ self.alerter.baseViewController = self.baseViewController; self.selectorViewController = [[PaymentRequestSelectorViewController alloc] - initWithStyle:CollectionViewControllerStyleAppBar]; + initWithLayout:[[MDCCollectionViewFlowLayout alloc] init] + style:CollectionViewControllerStyleAppBar]; [self.selectorViewController setTitle:@"Select an item"]; [self.selectorViewController setDataSource:self]; [self.selectorViewController loadModel];
diff --git a/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter b/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter index 0bdd2424..60b106ce 100644 --- a/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter +++ b/testing/buildbot/filters/mojo.fyi.network_content_browsertests.filter
@@ -39,13 +39,6 @@ # http://crbug.com/721398 -ClearSiteDataThrottleBrowserTest.* -# http://crbug.com/736362 --ServiceWorkerVersionBrowserTest.Activate_Rejected --ServiceWorkerVersionBrowserTest.FetchEvent_Response --ServiceWorkerVersionBrowserTest.Activate_NoEventListener --ServiceWorkerVersionBrowserTest.FetchEvent_ResponseViaCache --ServiceWorkerVersionBrowserTest.FetchEvent_respondWithRejection - -AsyncResourceHandlerBrowserTest/AsyncResourceHandlerBrowserTest.UploadProgress* -BrowserSideNavigationBrowserTest.FailedNavigation -CrossSiteResourceHandlerTest.NoDeliveryToDetachedFrame
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 75de2e7..008cc444 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2077,7 +2077,7 @@ crbug.com/626703 external/wpt/html/browsers/offline/no-appcache-in-shared-workers-historical.html [ Timeout ] crbug.com/626703 external/wpt/html/browsers/the-window-object/window-open-noopener.html [ Timeout ] crbug.com/626703 external/wpt/html/browsers/windows/noreferrer-window-name.html [ Timeout ] -crbug.com/626703 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html [ Timeout ] +crbug.com/626703 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html [ Timeout Crash ] crbug.com/626703 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html [ Timeout ] crbug.com/626703 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html [ Timeout ] crbug.com/626703 external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html [ Timeout ] @@ -2973,3 +2973,4 @@ crbug.com/734762 [ Mac Debug ] inspector-protocol/timeline/page-frames.js [ Failure ] crbug.com/736255 [ Mac ] external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-baseline-multi-item-vert-001b.html [ Skip ] +crbug.com/736732 virtual/enable_wasm/external/wpt/wasm/wasm_local_iframe_test.html [ Timeout Pass ]
diff --git a/third_party/WebKit/LayoutTests/animations/custom-properties/image-type-interpolation.html b/third_party/WebKit/LayoutTests/animations/custom-properties/image-type-interpolation.html new file mode 100644 index 0000000..4853b18 --- /dev/null +++ b/third_party/WebKit/LayoutTests/animations/custom-properties/image-type-interpolation.html
@@ -0,0 +1,80 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<style> +.parent { + --image: url('http://parent.png'); +} +.target { + --image: url('http://underlying.png'); +} +</style> +<body> +<script src="../interpolation/resources/interpolation-test.js"></script> +<script> +CSS.registerProperty({ + name: '--image', + syntax: '<image>', + initialValue: "url('http://initial.png')", +}); + +assertInterpolation({ + property: '--image', + from: neutralKeyframe, + to: "url('http://value.png')", +}, [ + {at: -0.3, is: "url('http://underlying.png')"}, + {at: 0, is: "(url('http://underlying.png')"}, + {at: 0.5, is: "-webkit-cross-fade(url('http://underlying.png'), url('http://value.png'), 0.5)"}, + {at: 1, is: "url('http://value.png')"}, + {at: 1.5, is: "url('http://value.png')"}, +]); + +assertInterpolation({ + property: '--image', + from: 'initial', + to: "url('http://value.png')", +}, [ + {at: -0.3, is: "url('http://initial.png')"}, + {at: 0, is: "url('http://initial.png')"}, + {at: 0.5, is: "-webkit-cross-fade(url('http://initial.png'), url('http://value.png'), 0.5)"}, + {at: 1, is: "url('http://value.png')"}, + {at: 1.5, is: "url('http://value.png')"}, +]); + +assertInterpolation({ + property: '--image', + from: 'inherit', + to: "url('http://value.png')", +}, [ + {at: -0.3, is: "url('http://parent.png')"}, + {at: 0, is: "url('http://parent.png')"}, + {at: 0.5, is: "-webkit-cross-fade(url('http://parent.png'), url('http://value.png'), 0.5)"}, + {at: 1, is: "url('http://value.png')"}, + {at: 1.5, is: "url('http://value.png')"}, +]); + +assertInterpolation({ + property: '--image', + from: 'unset', + to: "url('http://value.png')", +}, [ + {at: -0.3, is: "url('http://initial.png')"}, + {at: 0, is: "url('http://initial.png')"}, + {at: 0.5, is: "-webkit-cross-fade(url('http://initial.png'), url('http://value.png'), 0.5)"}, + {at: 1, is: "url('http://value.png')"}, + {at: 1.5, is: "url('http://value.png')"}, +]); + +assertInterpolation({ + property: '--image', + from: "url('http://a.png')", + to: "url('http://b.png')", +}, [ + {at: -0.3, is: "url('http://a.png')"}, + {at: 0, is: "url('http://a.png')"}, + {at: 0.5, is: "-webkit-cross-fade(url('http://a.png'), url('http://b.png'), 0.5)"}, + {at: 1, is: "url('http://b.png')"}, + {at: 1.5, is: "url('http://b.png')"}, +]); +</script> +</body>
diff --git a/third_party/WebKit/LayoutTests/animations/interpolation/border-width-interpolation.html b/third_party/WebKit/LayoutTests/animations/interpolation/border-width-interpolation.html index b9733f4..92f75d5 100644 --- a/third_party/WebKit/LayoutTests/animations/interpolation/border-width-interpolation.html +++ b/third_party/WebKit/LayoutTests/animations/interpolation/border-width-interpolation.html
@@ -105,7 +105,7 @@ to: '13px' }, [ {at: -2, is: '0px'}, // CSS border-left-width can't be negative. - {at: -0.25, is: '1px'}, + {at: -0.25, is: '0.5px'}, {at: 0, is: '3px'}, {at: 0.3, is: '6px'}, {at: 0.6, is: '9px'},
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-width-below-1-expected.html b/third_party/WebKit/LayoutTests/fast/borders/border-width-below-1-expected.html new file mode 100644 index 0000000..eb2a0e36 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/borders/border-width-below-1-expected.html
@@ -0,0 +1,29 @@ +<!DOCTYPE html> + +<html> +<head> +<style> + +div { + zoom: 0.5; + width: 140px; +} + +span { + width: 68px; + display: inline-block; + background-color: lime; + padding: 1.0px; +} + +</style> +<body> + +<div> + <span>Shouldn't</span><span>wrap</span> +</div> + +The border width should be 1px, reported as: 1px +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-width-below-1.html b/third_party/WebKit/LayoutTests/fast/borders/border-width-below-1.html new file mode 100644 index 0000000..3cfab41 --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/borders/border-width-below-1.html
@@ -0,0 +1,36 @@ +<!DOCTYPE html> + +<html> +<head> +<style> + +div#test { + zoom: 0.5; + width: 140px; + display: block; +} + +span { + background-color: lime; + float: left; + width: 68px; + border: 1.0px solid lime; +} + +</style> +<body> + +<div id=test> + <span id=measure>Shouldn't</span> + <span>wrap</span> +</div> + +<div style="clear: both" id=output></div> + +<script> +var prop = window.getComputedStyle(document.getElementById("measure")).getPropertyValue("border-width"); +document.getElementById("output").innerHTML = "The border width should be 1px, reported as: " + prop; +</script> +</body> +</html> +
diff --git a/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.png b/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.png index d123604..825be11 100644 --- a/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.png +++ b/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.txt b/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.txt index 60f9b41..9a85433 100644 --- a/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/reflections/reflection-with-zoom-expected.txt
@@ -5,4 +5,4 @@ LayoutBlockFlow {BODY} at (6,6) size 788x588 LayoutText {#text} at (0,0) size 0x0 layer at (6,6) size 253x224 - LayoutImage {IMG} at (0,0) size 253.25x224 [border: (1px solid #000000)] + LayoutImage {IMG} at (0,0) size 252.75x223.50 [border: (0.75px solid #000000)]
diff --git a/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2-expected.html b/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2-expected.html index 2781868..bb32f7a 100644 --- a/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2-expected.html +++ b/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2-expected.html
@@ -12,26 +12,27 @@ height: 80px; border: 1px solid green; background: lightgreen; + vertical-align: top; text-align: center; line-height: 80px; } </style> </head> <body> - <div class="test" style="border-width: 1px">0.25px</div> - <div class="test" style="border-width: 1px">0.5px</div> - <div class="test" style="border-width: 1px">0.75px</div> + <div class="test" style="border-width: 1px; width: 78.5px; height: 78.5px">0.25px</div> + <div class="test" style="border-width: 1px; width: 79px; height: 79px">0.5px</div> + <div class="test" style="border-width: 1px; width: 79.5px; height: 79.5px">0.75px</div> <div class="test" style="border-width: 1px">1px</div> <div class="test" style="border-width: 1px; width: 80.5px; height: 80.5px">1.25px</div> <br> <div class="test" style="border-width: 2px; width: 79px; height: 79px">1.5px</div> <div class="test" style="border-width: 2px; width: 79.5px; height: 79.5px">1.75px</div> - <div class="test" id="reference-2" style="border-width: 2px">2px</div> + <div class="test" style="border-width: 2px">2px</div> <div class="test" style="border-width: 2px; width: 80.5px; height: 80.5px">2.25px</div> <br> <div class="test" style="border-width: 3px; width: 79px; height: 79px">2.5px</div> <div class="test" style="border-width: 3px; width: 79.5px; height: 79.5px">2.75px</div> - <div class="test" id="reference-3" style="border-width: 3px">3px</div> + <div class="test" style="border-width: 3px">3px</div> <div class="test" style="border-width: 3px; width: 80.5px; height: 80.5px">3.25px</div> <p> Border thickness should be rounded, not floored, with the exception of
diff --git a/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2.html b/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2.html index 2ede555..fc0e4048 100644 --- a/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2.html +++ b/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border-2.html
@@ -18,7 +18,8 @@ </style> </head> <body> - <div class="test" style="border-width: 0.25px">0.25px</div> + <!-- the padding-top property below had to be added to work around a bug. --> + <div class="test" style="padding-top: 0.25px; border-width: 0.25px">0.25px</div> <div class="test" style="border-width: 0.5px">0.5px</div> <div class="test" style="border-width: 0.75px">0.75px</div> <div class="test" style="border-width: 1px">1px</div>
diff --git a/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border.html b/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border.html index 9b8d7fd..874ca2b 100644 --- a/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border.html +++ b/third_party/WebKit/LayoutTests/fast/sub-pixel/sub-pixel-border.html
@@ -37,11 +37,6 @@ testElements[element.firstChild.nodeValue] = element; } - function sizeAsString(element) { - var rect = element.getBoundingClientRect(); - return rect.width.toFixed(2) + 'x' + rect.height.toFixed(2); - } - function borderAsString(element) { var style = window.getComputedStyle(element); return style.borderTopWidth + ' ' + style.borderRightWidth + ' ' + @@ -49,32 +44,52 @@ } test(function() { - var referenceSize = sizeAsString(testElements['1px']); - assert_equals(sizeAsString(testElements['0.25px']), referenceSize, - 'Size of 0.25px box should match 1px reference.'); - assert_equals(sizeAsString(testElements['0.5px']), referenceSize, - 'Size of 0.5px box should match 1px reference.'); - assert_equals(sizeAsString(testElements['0.75px']), referenceSize, - 'Size of 0.75px box should match 1px reference.'); + var refSize = testElements['0.25px'].getBoundingClientRect(); + var testSize = testElements['0.5px'].getBoundingClientRect(); + assert_greater_than(testSize.width, refSize.width, + 'Size of 0.5px box should be larger than 0.25px box.'); + assert_greater_than(testSize.height, refSize.height, + 'Size of 0.5px box should be larger than 0.25px box.'); - var refSize = testElements['1px'].getBoundingClientRect(); - var testSize = testElements['1.25px'].getBoundingClientRect(); + refSize = testSize; + testSize = testElements['0.75px'].getBoundingClientRect(); + assert_greater_than(testSize.width, refSize.width, + 'Size of 0.75px box should be larger than 0.5px box.'); + assert_greater_than(testSize.height, refSize.height, + 'Size of 0.75px box should be larger than 0.5px box.'); + + refSize = testSize; + testSize = testElements['1px'].getBoundingClientRect(); + assert_greater_than(testSize.width, refSize.width, + 'Size of 1px box should be larger than 0.75px box.'); + assert_greater_than(testSize.height, refSize.height, + 'Size of 1px box should be larger than 0.75px box.'); + + refSize = testSize; + testSize = testElements['1.25px'].getBoundingClientRect(); assert_greater_than(testSize.width, refSize.width, 'Size of 1.25px box should be larger than 1px box.'); assert_greater_than(testSize.height, refSize.height, 'Size of 1.25px box should be larger than 1px box.'); + + refSize = testSize; + testSize = testElements['1.5px'].getBoundingClientRect(); + assert_greater_than(testSize.width, refSize.width, + 'Size of 1.5px box should be larger than 1.25px box.'); + assert_greater_than(testSize.height, refSize.height, + 'Size of 1.5px box should be larger than 1.25px box.'); }, 'Size of all elements are correct.'); test(function() { assert_equals(borderAsString(testElements['0.25px']), - '1px 1px 1px 1px', - 'Border thickness of 0.25px box should be 1px.'); + '0.25px 0.25px 0.25px 0.25px', + 'Border thickness of 0.25px box should be 0.25px.'); assert_equals(borderAsString(testElements['0.5px']), - '1px 1px 1px 1px', - 'Border thickness of 0.5px box should be 1px.'); + '0.5px 0.5px 0.5px 0.5px', + 'Border thickness of 0.5px box should be 0.5px.'); assert_equals(borderAsString(testElements['0.75px']), - '1px 1px 1px 1px', - 'Border thickness of 0.75px box should be 1px.'); + '0.75px 0.75px 0.75px 0.75px', + 'Border thickness of 0.75px box should be 0.75px.'); assert_equals(borderAsString(testElements['1.25px']), '1.25px 1.25px 1.25px 1.25px', 'Border thickness of 1.25px box should retain decimals.');
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png index af0bffe..c921182 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png index 2da3f50..913480e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.txt index 9593b93..7a86c77 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-appearance-basic-expected.txt
@@ -106,13 +106,13 @@ text run at (8,2) width 38: "foo" LayoutText {#text} at (175,236) size 4x19 text run at (175,236) width 4: " " - LayoutMenuList {SELECT} at (181,241) size 32x14 [bgcolor=#DDDDDD] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 30x12 + LayoutMenuList {SELECT} at (181,242) size 31x13 [bgcolor=#DDDDDD] [border: (0.50px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (0.50,0.50) size 30x12 LayoutText (anonymous) at (2,0) size 13x12 text run at (2,0) width 13: "foo" - LayoutText {#text} at (215,236) size 4x19 - text run at (215,236) width 4: " " - LayoutBR {BR} at (219,236) size 0x19 + LayoutText {#text} at (214,236) size 4x19 + text run at (214,236) width 4: " " + LayoutBR {BR} at (218,236) size 0x19 LayoutText {#text} at (208,283) size 4x19 text run at (208,283) width 4: " " LayoutBR {BR} at (212,283) size 0x19
diff --git a/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png index 7eb79f59..235489e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt index 50c0e13..16311f5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt
@@ -1,30 +1,30 @@ layer at (0,0) size 800x600 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x462 - LayoutBlockFlow {HTML} at (0,0) size 800x462 - LayoutBlockFlow {BODY} at (4,4) size 137x450 [border: (1px dashed #C0C0C0)] - LayoutBlockFlow {P} at (1,10) size 135x27 + LayoutBlockFlow {HTML} at (0,0) size 800x461.50 + LayoutBlockFlow {BODY} at (4,4) size 136x449 [border: (0.50px dashed #C0C0C0)] + LayoutBlockFlow {P} at (0.50,9.50) size 135x27 LayoutText {#text} at (0,-2) size 135x30 text run at (0,-2) width 135: "The following six blue boxes must" text run at (0,7) width 126: "be of the same width. There must" text run at (0,16) width 37: "be no red." - LayoutBlockFlow {P} at (10,46) size 117x27 [bgcolor=#008000] [border: (9px solid #0000FF)] + LayoutBlockFlow {P} at (9.50,45.50) size 117x27 [bgcolor=#008000] [border: (9px solid #0000FF)] LayoutText {#text} at (9,7) size 2x12 text run at (9,7) width 2: " " - LayoutBlockFlow {P} at (1,127) size 135x9 + LayoutBlockFlow {P} at (0.50,126.50) size 135x9 LayoutText {#text} at (0,-2) size 12x12 text run at (0,-2) width 12: " " LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {P} at (1,190) size 135x9 - LayoutTable (anonymous) at (1,253) size 135x44 + LayoutBlockFlow {P} at (0.50,189.50) size 135x9 + LayoutTable (anonymous) at (0.50,252.50) size 135x44 LayoutTableSection (anonymous) at (0,0) size 135x44 LayoutTableRow (anonymous) at (0,0) size 135x44 LayoutTableCell {P} at (0,0) size 135x44 [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (1,351) size 135x44 + LayoutTable {TABLE} at (0.50,350.50) size 135x44 LayoutTableSection {TBODY} at (0,0) size 135x44 LayoutTableRow {TR} at (0,0) size 135x44 LayoutTableCell {TD} at (0,0) size 135x44 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (floating) {P} at (1,449) size 135x9 + LayoutBlockFlow (floating) {P} at (0.50,448.50) size 135x9 layer at (14,131) size 117x43 LayoutEmbeddedObject {OBJECT} at (9,0) size 117x42.75 [bgcolor=#FF0000] [border: (9px solid #0000FF)] layer at (0,0) size 99x25
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png index ddcca6e..59f61c5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt index 29d785f..772f112e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt
@@ -93,14 +93,14 @@ LayoutTableCell {TD} at (319,289) size 140x38 [r=8 c=3 rs=1 cs=1] LayoutText {#text} at (0,0) size 0x0 layer at (325,22) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 LayoutSVGRoot {svg} at (0,0) size 133x29 LayoutSVGEllipse {circle} at (0,0) size 220x220 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [cx=110.00] [cy=110.00] [r=110.00] layer at (325,61) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -109,7 +109,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (325,100) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -118,7 +118,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (325,139) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -127,7 +127,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (325,178) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -136,7 +136,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (325,217) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -145,7 +145,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (325,256) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -154,7 +154,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (325,295) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png index a60837d..9191ec5 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt index e917c9e..78caf838 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt
@@ -1,31 +1,31 @@ layer at (0,0) size 800x600 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x474 - LayoutBlockFlow {HTML} at (0,0) size 800x474.36 - LayoutBlockFlow {BODY} at (4.63,4.63) size 140.88x461.48 [border: (1px dashed #C0C0C0)] - LayoutBlockFlow {P} at (1,10.25) size 138.88x27 + LayoutBlockFlow {HTML} at (0,0) size 800x473.94 + LayoutBlockFlow {BODY} at (4.63,4.63) size 140.03x460.64 [border: (0.58px dashed #C0C0C0)] + LayoutBlockFlow {P} at (0.58,9.83) size 138.88x27 LayoutText {#text} at (0,-2) size 137x30 text run at (0,-2) width 135: "The following six blue boxes must" text run at (0,7) width 137: "be of the same width. There must be" text run at (0,16) width 26: "no red." - LayoutBlockFlow {P} at (10.25,46.50) size 120.38x27.75 [bgcolor=#008000] [border: (9.25px solid #0000FF)] + LayoutBlockFlow {P} at (9.83,46.08) size 120.38x27.75 [bgcolor=#008000] [border: (9.25px solid #0000FF)] LayoutText {#text} at (9,7) size 3x12 text run at (9,7) width 3: " " - LayoutBlockFlow {P} at (1,129.80) size 138.88x9.25 + LayoutBlockFlow {P} at (0.58,129.38) size 138.88x9.25 LayoutText {#text} at (0,-2) size 12x12 text run at (0,-2) width 12: " " LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {P} at (1,194.59) size 138.88x9.25 - LayoutTable (anonymous) at (1,259.39) size 138x45 + LayoutBlockFlow {P} at (0.58,194.17) size 138.88x9.25 + LayoutTable (anonymous) at (0.58,258.97) size 138x45 LayoutTableSection (anonymous) at (0,0) size 138x45 LayoutTableRow (anonymous) at (0,0) size 138x45 LayoutTableCell {P} at (0,0) size 138x45 [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (1,359.94) size 138x45 + LayoutTable {TABLE} at (0.58,359.52) size 138x45 LayoutTableSection {TBODY} at (0,0) size 138x45 LayoutTableRow {TR} at (0,0) size 138x45 LayoutTableCell {TD} at (0,0) size 138x45 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (floating) {P} at (1,460.48) size 138.88x9.25 -layer at (15,134) size 121x44 + LayoutBlockFlow (floating) {P} at (0.58,460.06) size 138.88x9.25 +layer at (14,134) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,-0.25) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25 @@ -33,7 +33,7 @@ LayoutSVGRoot {svg} at (0,0) size 102x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,199) size 121x44 +layer at (14,199) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25 @@ -41,7 +41,7 @@ LayoutSVGRoot {svg} at (0,0) size 102x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,264) size 120x44 +layer at (14,264) size 120x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 119.50x43.75 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 101x25 LayoutView at (0,0) size 101x25 @@ -49,7 +49,7 @@ LayoutSVGRoot {svg} at (0,0) size 101x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,365) size 120x44 +layer at (14,364) size 120x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 119.50x43.75 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 101x25 LayoutView at (0,0) size 101x25 @@ -57,7 +57,7 @@ LayoutSVGRoot {svg} at (0,0) size 101x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,465) size 121x44 +layer at (14,465) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png index 267f7464..a0e35e9 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt index 4d35420..51ec927 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt
@@ -3,16 +3,16 @@ layer at (0,0) size 800x377 LayoutBlockFlow {HTML} at (0,0) size 800x377.09 LayoutBlockFlow {BODY} at (5.55,5.55) size 788.91x366 - LayoutText {#text} at (349,338) size 4x14 - text run at (349,338) width 4: " " - LayoutBR {BR} at (352,338) size 1x14 + LayoutText {#text} at (348,338) size 4x14 + text run at (348,338) width 4: " " + LayoutBR {BR} at (351,338) size 1x14 LayoutText {#text} at (0,352) size 234x14 text run at (0,352) width 234: "The image of Tux should fill the entire red square." LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 layer at (6,6) size 349x349 - LayoutEmbeddedObject {OBJECT} at (0,0) size 349.22x349.22 [border: (1px solid #FF0000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 348.59x348.59 [border: (0.69px solid #FF0000)] layer at (0,0) size 347x347 LayoutView at (0,0) size 347x347 layer at (0,0) size 347x347
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png index 7eb79f59..235489e 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png index 8d0c456..e35a73c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt index c370f52..a460948 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt
@@ -1,30 +1,30 @@ layer at (0,0) size 800x600 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x464 - LayoutBlockFlow {HTML} at (0,0) size 800x464 - LayoutBlockFlow {BODY} at (4,4) size 137x452 [border: (1px dashed #C0C0C0)] - LayoutBlockFlow {P} at (1,10) size 135x27 + LayoutBlockFlow {HTML} at (0,0) size 800x463.50 + LayoutBlockFlow {BODY} at (4,4) size 136x451 [border: (0.50px dashed #C0C0C0)] + LayoutBlockFlow {P} at (0.50,9.50) size 135x27 LayoutText {#text} at (0,-1) size 131x28 text run at (0,-1) width 125: "The following six blue boxes must" text run at (0,8) width 131: "be of the same width. There must be" text run at (0,17) width 25: "no red." - LayoutBlockFlow {P} at (10,46) size 117x27 [bgcolor=#008000] [border: (9px solid #0000FF)] + LayoutBlockFlow {P} at (9.50,45.50) size 117x27 [bgcolor=#008000] [border: (9px solid #0000FF)] LayoutText {#text} at (9,8) size 3x10 text run at (9,8) width 3: " " - LayoutBlockFlow {P} at (1,127) size 135x9 + LayoutBlockFlow {P} at (0.50,126.50) size 135x9 LayoutText {#text} at (0,-1) size 14x10 text run at (0,-1) width 14: " " LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {P} at (1,190) size 135x9 - LayoutTable (anonymous) at (1,253) size 135x45 + LayoutBlockFlow {P} at (0.50,189.50) size 135x9 + LayoutTable (anonymous) at (0.50,252.50) size 135x45 LayoutTableSection (anonymous) at (0,0) size 135x45 LayoutTableRow (anonymous) at (0,0) size 135x45 LayoutTableCell {P} at (0,0) size 135x45 [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (1,352) size 135x45 + LayoutTable {TABLE} at (0.50,351.50) size 135x45 LayoutTableSection {TBODY} at (0,0) size 135x45 LayoutTableRow {TR} at (0,0) size 135x45 LayoutTableCell {TD} at (0,0) size 135x45 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (floating) {P} at (1,451) size 135x9 + LayoutBlockFlow (floating) {P} at (0.50,450.50) size 135x9 layer at (14,131) size 117x43 LayoutEmbeddedObject {OBJECT} at (9,0) size 117x42.75 [bgcolor=#FF0000] [border: (9px solid #0000FF)] layer at (0,0) size 99x25
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png index 8938c8b..d02e5887 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt index eb1e0515..078d1e9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt
@@ -93,14 +93,14 @@ LayoutTableCell {TD} at (321,289) size 140x38 [r=8 c=3 rs=1 cs=1] LayoutText {#text} at (0,0) size 0x0 layer at (327,22) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 LayoutSVGRoot {svg} at (0,0) size 133x29 LayoutSVGEllipse {circle} at (0,0) size 220x220 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [cx=110.00] [cy=110.00] [r=110.00] layer at (327,61) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -109,7 +109,7 @@ LayoutSVGContainer {g} at (162.86,375.72) size 362.86x390.92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,375.72) size 362.86x390.92 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (327,100) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -118,7 +118,7 @@ LayoutSVGContainer {g} at (162.86,375.72) size 362.86x390.92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,375.72) size 362.86x390.92 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (327,139) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -127,7 +127,7 @@ LayoutSVGContainer {g} at (162.86,375.72) size 362.86x390.92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,375.72) size 362.86x390.92 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (327,178) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -136,7 +136,7 @@ LayoutSVGContainer {g} at (162.86,375.72) size 362.86x390.92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,375.72) size 362.86x390.92 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (327,217) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -145,7 +145,7 @@ LayoutSVGContainer {g} at (162.86,375.72) size 362.86x390.92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,375.72) size 362.86x390.92 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (327,256) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -154,7 +154,7 @@ LayoutSVGContainer {g} at (162.86,375.72) size 362.86x390.92 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,375.72) size 362.86x390.92 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (327,295) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png index 476b04e0..f415edb2 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt index d051863c..01a4bcb 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt
@@ -1,31 +1,31 @@ layer at (0,0) size 800x600 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x476 - LayoutBlockFlow {HTML} at (0,0) size 800x476.36 - LayoutBlockFlow {BODY} at (4.63,4.63) size 140.88x463.48 [border: (1px dashed #C0C0C0)] - LayoutBlockFlow {P} at (1,10.25) size 138.88x27 + LayoutBlockFlow {HTML} at (0,0) size 800x475.94 + LayoutBlockFlow {BODY} at (4.63,4.63) size 140.03x462.64 [border: (0.58px dashed #C0C0C0)] + LayoutBlockFlow {P} at (0.58,9.83) size 138.88x27 LayoutText {#text} at (0,-1) size 135x28 text run at (0,-1) width 129: "The following six blue boxes must" text run at (0,8) width 135: "be of the same width. There must be" text run at (0,17) width 26: "no red." - LayoutBlockFlow {P} at (10.25,46.50) size 120.38x27.75 [bgcolor=#008000] [border: (9.25px solid #0000FF)] + LayoutBlockFlow {P} at (9.83,46.08) size 120.38x27.75 [bgcolor=#008000] [border: (9.25px solid #0000FF)] LayoutText {#text} at (9,8) size 3x10 text run at (9,8) width 3: " " - LayoutBlockFlow {P} at (1,129.80) size 138.88x9.25 + LayoutBlockFlow {P} at (0.58,129.38) size 138.88x9.25 LayoutText {#text} at (0,-1) size 14x10 text run at (0,-1) width 14: " " LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {P} at (1,194.59) size 138.88x9.25 - LayoutTable (anonymous) at (1,259.39) size 138x46 + LayoutBlockFlow {P} at (0.58,194.17) size 138.88x9.25 + LayoutTable (anonymous) at (0.58,258.97) size 138x46 LayoutTableSection (anonymous) at (0,0) size 138x46 LayoutTableRow (anonymous) at (0,0) size 138x46 LayoutTableCell {P} at (0,0) size 138x46 [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (1,360.94) size 138x46 + LayoutTable {TABLE} at (0.58,360.52) size 138x46 LayoutTableSection {TBODY} at (0,0) size 138x46 LayoutTableRow {TR} at (0,0) size 138x46 LayoutTableCell {TD} at (0,0) size 138x46 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (floating) {P} at (1,462.48) size 138.88x9.25 -layer at (15,134) size 121x44 + LayoutBlockFlow (floating) {P} at (0.58,462.06) size 138.88x9.25 +layer at (14,134) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,-0.25) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25 @@ -33,7 +33,7 @@ LayoutSVGRoot {svg} at (0,0) size 102x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,199) size 121x44 +layer at (14,199) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25 @@ -41,7 +41,7 @@ LayoutSVGRoot {svg} at (0,0) size 102x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,264) size 120x44 +layer at (14,264) size 120x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 119.50x43.75 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 101x25 LayoutView at (0,0) size 101x25 @@ -49,7 +49,7 @@ LayoutSVGRoot {svg} at (0,0) size 101x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,366) size 120x44 +layer at (14,365) size 120x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 119.50x43.75 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 101x25 LayoutView at (0,0) size 101x25 @@ -57,7 +57,7 @@ LayoutSVGRoot {svg} at (0,0) size 101x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,467) size 121x44 +layer at (14,467) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png index 64b0b2b..8be60c9 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt index 4f3873db..624c610 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/mac/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt
@@ -3,8 +3,8 @@ layer at (0,0) size 800x376 LayoutBlockFlow {HTML} at (0,0) size 800x376.09 LayoutBlockFlow {BODY} at (5.55,5.55) size 788.91x365 - LayoutText {#text} at (349,339) size 3x13 - text run at (349,339) width 3: " " + LayoutText {#text} at (348,339) size 4x13 + text run at (348,339) width 4: " " LayoutBR {BR} at (351,339) size 1x13 LayoutText {#text} at (0,352) size 223x13 text run at (0,352) width 223: "The image of Tux should fill the entire red square." @@ -12,7 +12,7 @@ LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 layer at (6,6) size 349x349 - LayoutEmbeddedObject {OBJECT} at (0,0) size 349.22x349.22 [border: (1px solid #FF0000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 348.59x348.59 [border: (0.69px solid #FF0000)] layer at (0,0) size 347x347 LayoutView at (0,0) size 347x347 layer at (0,0) size 347x347
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png index 8d0c456..e35a73c 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png index 231d1e4..03b86c5 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-appearance-zoom090-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png index 0a486f7..9fd1b532 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt index caf4df5..d07e72d1 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt
@@ -106,13 +106,13 @@ text run at (8,2) width 37: "foo" LayoutText {#text} at (181,236) size 4x19 text run at (181,236) width 4: " " - LayoutMenuList {SELECT} at (187,241) size 35x14 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 33x12 + LayoutMenuList {SELECT} at (187,242) size 34x13 [bgcolor=#FFFFFF] [border: (0.50px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (0.50,0.50) size 33x12 LayoutText (anonymous) at (2,0) size 14x12 text run at (2,0) width 14: "foo" - LayoutText {#text} at (224,236) size 4x19 - text run at (224,236) width 4: " " - LayoutBR {BR} at (228,236) size 0x19 + LayoutText {#text} at (223,236) size 4x19 + text run at (223,236) width 4: " " + LayoutBR {BR} at (227,236) size 0x19 LayoutText {#text} at (208,283) size 4x19 text run at (208,283) width 4: " " LayoutBR {BR} at (212,283) size 0x19
diff --git a/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png b/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png index 47f0ec68..b08e2eff 100644 --- a/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt b/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt index e996e087..527c499a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.txt
@@ -1,30 +1,30 @@ layer at (0,0) size 800x600 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x462 - LayoutBlockFlow {HTML} at (0,0) size 800x462 - LayoutBlockFlow {BODY} at (4,4) size 137x450 [border: (1px dashed #C0C0C0)] - LayoutBlockFlow {P} at (1,10) size 135x27 + LayoutBlockFlow {HTML} at (0,0) size 800x461.50 + LayoutBlockFlow {BODY} at (4,4) size 136x449 [border: (0.50px dashed #C0C0C0)] + LayoutBlockFlow {P} at (0.50,9.50) size 135x27 LayoutText {#text} at (0,-2) size 133x30 text run at (0,-2) width 130: "The following six blue boxes must" text run at (0,7) width 133: "be of the same width. There must be" text run at (0,16) width 26: "no red." - LayoutBlockFlow {P} at (10,46) size 117x27 [bgcolor=#008000] [border: (9px solid #0000FF)] + LayoutBlockFlow {P} at (9.50,45.50) size 117x27 [bgcolor=#008000] [border: (9px solid #0000FF)] LayoutText {#text} at (9,7) size 2x12 text run at (9,7) width 2: " " - LayoutBlockFlow {P} at (1,127) size 135x9 + LayoutBlockFlow {P} at (0.50,126.50) size 135x9 LayoutText {#text} at (0,-2) size 12x12 text run at (0,-2) width 12: " " LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {P} at (1,190) size 135x9 - LayoutTable (anonymous) at (1,253) size 135x44 + LayoutBlockFlow {P} at (0.50,189.50) size 135x9 + LayoutTable (anonymous) at (0.50,252.50) size 135x44 LayoutTableSection (anonymous) at (0,0) size 135x44 LayoutTableRow (anonymous) at (0,0) size 135x44 LayoutTableCell {P} at (0,0) size 135x44 [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (1,351) size 135x44 + LayoutTable {TABLE} at (0.50,350.50) size 135x44 LayoutTableSection {TBODY} at (0,0) size 135x44 LayoutTableRow {TR} at (0,0) size 135x44 LayoutTableCell {TD} at (0,0) size 135x44 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (floating) {P} at (1,449) size 135x9 + LayoutBlockFlow (floating) {P} at (0.50,448.50) size 135x9 layer at (14,131) size 117x43 LayoutEmbeddedObject {OBJECT} at (9,0) size 117x42.75 [bgcolor=#FF0000] [border: (9px solid #0000FF)] layer at (0,0) size 99x25
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png index d0f3f4a..8498b7f 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt index 977ea85..b03fc463 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt
@@ -93,14 +93,14 @@ LayoutTableCell {TD} at (326,289) size 140x38 [r=8 c=3 rs=1 cs=1] LayoutText {#text} at (0,0) size 0x0 layer at (332,22) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 LayoutSVGRoot {svg} at (0,0) size 133x29 LayoutSVGEllipse {circle} at (0,0) size 220x220 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [cx=110.00] [cy=110.00] [r=110.00] layer at (332,61) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -109,7 +109,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (332,100) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -118,7 +118,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (332,139) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -127,7 +127,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (332,178) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -136,7 +136,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (332,217) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -145,7 +145,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (332,256) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29 @@ -154,7 +154,7 @@ LayoutSVGContainer {g} at (162.86,403.79) size 362.86x362.86 [transform={m=((1.00,0.00)(0.00,1.00)) t=(-162.36,-403.29)}] LayoutSVGPath {path} at (162.86,403.79) size 362.86x362.86 [stroke={[type=SOLID] [color=#000000]}] [fill={[type=SOLID] [color=#D9BB7A] [fill rule=EVEN-ODD]}] [data="M 525.714 585.219 A 181.429 181.429 0 1 1 162.857 585.219 A 181.429 181.429 0 1 1 525.714 585.219 Z"] layer at (332,295) size 139x35 - LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (1px dashed #008000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 138.88x34.72 [border: (0.69px dashed #008000)] layer at (0,0) size 133x29 LayoutView at (0,0) size 133x29 layer at (0,0) size 133x29
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png index 28d63d0..9b89ee50 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt index 4ef2509..1758416 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt
@@ -1,31 +1,31 @@ layer at (0,0) size 800x600 LayoutView at (0,0) size 800x600 layer at (0,0) size 800x474 - LayoutBlockFlow {HTML} at (0,0) size 800x474.36 - LayoutBlockFlow {BODY} at (4.63,4.63) size 140.88x461.48 [border: (1px dashed #C0C0C0)] - LayoutBlockFlow {P} at (1,10.25) size 138.88x27 + LayoutBlockFlow {HTML} at (0,0) size 800x473.94 + LayoutBlockFlow {BODY} at (4.63,4.63) size 140.03x460.64 [border: (0.58px dashed #C0C0C0)] + LayoutBlockFlow {P} at (0.58,9.83) size 138.88x27 LayoutText {#text} at (0,-2) size 133x30 text run at (0,-2) width 130: "The following six blue boxes must" text run at (0,7) width 133: "be of the same width. There must be" text run at (0,16) width 26: "no red." - LayoutBlockFlow {P} at (10.25,46.50) size 120.38x27.75 [bgcolor=#008000] [border: (9.25px solid #0000FF)] + LayoutBlockFlow {P} at (9.83,46.08) size 120.38x27.75 [bgcolor=#008000] [border: (9.25px solid #0000FF)] LayoutText {#text} at (9,7) size 3x12 text run at (9,7) width 3: " " - LayoutBlockFlow {P} at (1,129.80) size 138.88x9.25 + LayoutBlockFlow {P} at (0.58,129.38) size 138.88x9.25 LayoutText {#text} at (0,-2) size 12x12 text run at (0,-2) width 12: " " LayoutText {#text} at (0,0) size 0x0 - LayoutBlockFlow {P} at (1,194.59) size 138.88x9.25 - LayoutTable (anonymous) at (1,259.39) size 138x45 + LayoutBlockFlow {P} at (0.58,194.17) size 138.88x9.25 + LayoutTable (anonymous) at (0.58,258.97) size 138x45 LayoutTableSection (anonymous) at (0,0) size 138x45 LayoutTableRow (anonymous) at (0,0) size 138x45 LayoutTableCell {P} at (0,0) size 138x45 [r=0 c=0 rs=1 cs=1] - LayoutTable {TABLE} at (1,359.94) size 138x45 + LayoutTable {TABLE} at (0.58,359.52) size 138x45 LayoutTableSection {TBODY} at (0,0) size 138x45 LayoutTableRow {TR} at (0,0) size 138x45 LayoutTableCell {TD} at (0,0) size 138x45 [r=0 c=0 rs=1 cs=1] - LayoutBlockFlow (floating) {P} at (1,460.48) size 138.88x9.25 -layer at (15,134) size 121x44 + LayoutBlockFlow (floating) {P} at (0.58,460.06) size 138.88x9.25 +layer at (14,134) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,-0.25) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25 @@ -33,7 +33,7 @@ LayoutSVGRoot {svg} at (0,0) size 102x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,199) size 121x44 +layer at (14,199) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25 @@ -41,7 +41,7 @@ LayoutSVGRoot {svg} at (0,0) size 102x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,264) size 120x44 +layer at (14,264) size 120x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 119.50x43.75 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 101x25 LayoutView at (0,0) size 101x25 @@ -49,7 +49,7 @@ LayoutSVGRoot {svg} at (0,0) size 101x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,365) size 120x44 +layer at (14,364) size 120x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 119.50x43.75 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 101x25 LayoutView at (0,0) size 101x25 @@ -57,7 +57,7 @@ LayoutSVGRoot {svg} at (0,0) size 101x25 LayoutSVGRect {rect} at (0,0) size 1000x250 [stroke={[type=SOLID] [color=#008000] [stroke width=12.00]}] [fill={[type=SOLID] [color=#00FF00]}] [x=0.00] [y=0.00] [width=1000.00] [height=250.00] LayoutSVGPath {path} at (150,50) size 700x150 [fill={[type=SOLID] [color=#008000]}] [data="M 500 50 L 150 200 L 850 200 Z"] -layer at (15,465) size 121x44 +layer at (14,465) size 121x44 LayoutEmbeddedObject {OBJECT} at (9.25,0) size 120.38x43.97 [bgcolor=#FF0000] [border: (9.25px solid #0000FF)] layer at (0,0) size 102x25 LayoutView at (0,0) size 102x25
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png index c5bf0e4..d691729 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt index 4d56d3a..e575d35 100644 --- a/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/svg/zoom/page/zoom-svg-through-object-with-override-size-expected.txt
@@ -3,16 +3,16 @@ layer at (0,0) size 800x377 LayoutBlockFlow {HTML} at (0,0) size 800x377.09 LayoutBlockFlow {BODY} at (5.55,5.55) size 788.91x366 - LayoutText {#text} at (349,338) size 4x14 - text run at (349,338) width 4: " " - LayoutBR {BR} at (352,338) size 1x14 + LayoutText {#text} at (348,338) size 4x14 + text run at (348,338) width 4: " " + LayoutBR {BR} at (351,338) size 1x14 LayoutText {#text} at (0,352) size 231x14 text run at (0,352) width 231: "The image of Tux should fill the entire red square." LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0 layer at (6,6) size 349x349 - LayoutEmbeddedObject {OBJECT} at (0,0) size 349.22x349.22 [border: (1px solid #FF0000)] + LayoutEmbeddedObject {OBJECT} at (0,0) size 348.59x348.59 [border: (0.69px solid #FF0000)] layer at (0,0) size 347x347 LayoutView at (0,0) size 347x347 layer at (0,0) size 347x347
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png index 47f0ec68..b08e2eff 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/mojo-loading/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png Binary files differ
diff --git a/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl b/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl index cbc92ef..8df375e 100644 --- a/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl +++ b/third_party/WebKit/Source/bindings/templates/interface_base.cpp.tmpl
@@ -414,12 +414,13 @@ {##############################################################################} {% block install_dom_template %} {% if not is_array_buffer_or_view %} -{% from 'methods.cpp.tmpl' import install_custom_signature with context %} +{% from 'methods.cpp.tmpl' import install_custom_signature, + method_configuration with context %} {% from 'attributes.cpp.tmpl' import accessor_configuration, attribute_configuration, with context %} - {% from 'constants.cpp.tmpl' import install_constants, constant_configuration with context %} -{% from 'methods.cpp.tmpl' import method_configuration with context %} +{% from 'constants.cpp.tmpl' import install_constants, + constant_configuration with context %} {% if has_partial_interface or is_partial %} void {{v8_class_or_partial}}::install{{v8_class}}Template( v8::Isolate* isolate, @@ -752,7 +753,6 @@ {% endblock %} {##############################################################################} {% block install_runtime_enabled %} -#line 759 "interface_base.cpp.tmpl" {% if needs_runtime_enabled_installer %} {% from 'attributes.cpp.tmpl' import accessor_configuration, attribute_configuration, @@ -765,7 +765,7 @@ v8::Local<v8::Object> prototype, v8::Local<v8::Function> interface) { {% if runtime_enabled_feature_name %} -#error "We don't expect a runtime enabled interface {{v8_class_or_partial}} to have installRuntimeEnabledFeatures()." +#error "We don't expect a runtime enabled interface {{v8_class_or_partial}} to have InstallRuntimeEnabledFeatures()." {% endif %} {% if is_partial %}
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp index cee026a8..cdd4ea9e 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp
@@ -65,7 +65,6 @@ "[ActiveScriptWrappable] extended attribute in the IDL file. " "Be consistent."); -#line 759 "interface_base.cpp.tmpl" TestArrayBuffer* V8ArrayBuffer::toImpl(v8::Local<v8::Object> object) { DCHECK(object->IsArrayBuffer()); v8::Local<v8::ArrayBuffer> v8buffer = object.As<v8::ArrayBuffer>();
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp index a8f182f..f9c8a724 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp
@@ -76,7 +76,6 @@ "[ActiveScriptWrappable] extended attribute in the IDL file. " "Be consistent."); -#line 759 "interface_base.cpp.tmpl" TestArrayBufferView* V8ArrayBufferView::toImpl(v8::Local<v8::Object> object) { DCHECK(object->IsArrayBufferView()); ScriptWrappable* scriptWrappable = ToScriptWrappable(object);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp index 8fc88b8..498b519 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp
@@ -65,7 +65,6 @@ "[ActiveScriptWrappable] extended attribute in the IDL file. " "Be consistent."); -#line 759 "interface_base.cpp.tmpl" TestDataView* V8DataView::toImpl(v8::Local<v8::Object> object) { DCHECK(object->IsDataView()); ScriptWrappable* scriptWrappable = ToScriptWrappable(object);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp index fd8e042..d2bfd88 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp
@@ -154,7 +154,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8SVGTestInterface::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8SVGTestInterfaceTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackFunctions.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackFunctions.cpp index 05d22d7..affe2f03b 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackFunctions.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackFunctions.cpp
@@ -294,7 +294,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestCallbackFunctions::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestCallbackFunctionsTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestConstants.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestConstants.cpp index 5ccf5daa..b0abc15 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestConstants.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestConstants.cpp
@@ -192,7 +192,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" void V8TestConstants::installFeatureName1(v8::Isolate* isolate, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::Local<v8::Function> interface) { const V8DOMConfiguration::ConstantConfiguration constantFeature1OriginTrialEnabledConst1Configuration = {"FEATURE1_ORIGIN_TRIAL_ENABLED_CONST1", 6, 0, V8DOMConfiguration::kConstantTypeShort}; V8DOMConfiguration::InstallConstant(isolate, interface, prototype, constantFeature1OriginTrialEnabledConst1Configuration);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp index eb0bb6f..eb463a9 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp
@@ -197,7 +197,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestException::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestExceptionTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp index af91630..b71f155 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp
@@ -239,7 +239,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestIntegerIndexed::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestIntegerIndexedTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp index 24a90e5a..e244e41 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp
@@ -242,7 +242,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestIntegerIndexedGlobal::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestIntegerIndexedGlobalTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp index e891fe6..d2b0c00d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp
@@ -242,7 +242,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestIntegerIndexedPrimaryGlobal::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestIntegerIndexedPrimaryGlobalTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp index 7ba749d..99139e1 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
@@ -3173,7 +3173,6 @@ } } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterface::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), V8TestInterface::installV8TestInterfaceTemplateFunction); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp index 02e5c24..56ba60bc 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp
@@ -696,7 +696,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterface2::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), V8TestInterface2::installV8TestInterface2TemplateFunction); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp index b8f1cfbc..bb1571e8 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp
@@ -245,7 +245,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterface3::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterface3Template); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp index 66835a3e..5ab47ab 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp
@@ -600,7 +600,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceCheckSecurity::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceCheckSecurityTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp index c94023d..55e55bf 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
@@ -476,7 +476,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructorTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp index 731802f..ec3fbfa8 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp
@@ -286,7 +286,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor2::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructor2Template); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp index 7844d2d..a29673b 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp
@@ -139,7 +139,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor3::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructor3Template); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp index b89fd17e..98b7ec9 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp
@@ -172,7 +172,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructor4::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructor4Template); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp index 8f9903b39..f34bafe 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp
@@ -120,7 +120,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceCustomConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceCustomConstructorTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp index 209c74c..ffb4b99 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp
@@ -156,7 +156,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceDocument::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceDocumentTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp index 4f3e078b..860827f 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp
@@ -103,7 +103,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceEmpty::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceEmptyTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp index 35524c8e..ad5f79d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp
@@ -185,7 +185,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceEventInitConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceEventInitConstructorTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp index 1e368a4..714614e6 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp
@@ -192,7 +192,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceEventTarget::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceEventTargetTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp index 98b4d52..d7edfff 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp
@@ -444,7 +444,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceGarbageCollected::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceGarbageCollectedTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp index abb4d35..8561eb12 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp
@@ -270,7 +270,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceNamedConstructor::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceNamedConstructorTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp index d0c597a..1c726c9 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp
@@ -202,7 +202,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceNamedConstructor2::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceNamedConstructor2Template); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp index 083f0f5..33e9d24 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
@@ -439,7 +439,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceNode::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceNodeTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp index 0004bd0..c780dd0 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp
@@ -345,7 +345,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceOriginTrialEnabled::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceOriginTrialEnabledTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp index 27586bdf..c3669d7 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp
@@ -412,7 +412,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterfaceSecureContext::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceSecureContextTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp index 74cb9835..ca7aa68 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp
@@ -288,7 +288,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestNode::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestNodeTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp index 658e6365..35c98a3c 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
@@ -12974,7 +12974,6 @@ } } -#line 759 "interface_base.cpp.tmpl" void V8TestObject::installFeatureName(v8::Isolate* isolate, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::Local<v8::Function> interface) { v8::Local<v8::FunctionTemplate> interfaceTemplate = V8TestObject::wrapperTypeInfo.domTemplate(isolate, world); v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemplate);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp index 4f61cde..fc50996 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp
@@ -234,7 +234,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestSpecialOperations::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestSpecialOperationsTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp index 9ef879e7..b604394 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp
@@ -146,7 +146,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestSpecialOperationsNotEnumerable::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestSpecialOperationsNotEnumerableTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp index b39256c..6068add7 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp
@@ -561,7 +561,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestTypedefs::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestTypedefsTemplate); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp index 9b6e6b7..1a679d0 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp
@@ -58,7 +58,6 @@ "[ActiveScriptWrappable] extended attribute in the IDL file. " "Be consistent."); -#line 759 "interface_base.cpp.tmpl" TestUint8ClampedArray* V8Uint8ClampedArray::toImpl(v8::Local<v8::Object> object) { DCHECK(object->IsUint8ClampedArray()); ScriptWrappable* scriptWrappable = ToScriptWrappable(object);
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface2Partial.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface2Partial.cpp index 921cb23d..7535222d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface2Partial.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface2Partial.cpp
@@ -124,8 +124,6 @@ } } -#line 759 "interface_base.cpp.tmpl" - void V8TestInterface2Partial::initialize() { // Should be invoked from ModulesInitializer. V8TestInterface2::UpdateWrapperTypeInfo(
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp index fc77079..769e6c2 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp
@@ -935,7 +935,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestInterface5::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterface5Template); }
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp index a63c6d0..070f582 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp
@@ -478,7 +478,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" void V8TestInterfacePartial::installOriginTrialPartialFeature(v8::Isolate* isolate, const DOMWrapperWorld& world, v8::Local<v8::Object> instance, v8::Local<v8::Object> prototype, v8::Local<v8::Function> interface) { v8::Local<v8::FunctionTemplate> interfaceTemplate = V8TestInterface::wrapperTypeInfo.domTemplate(isolate, world); v8::Local<v8::Signature> signature = v8::Signature::New(isolate, interfaceTemplate);
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestSubObject.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestSubObject.cpp index 13a25ff..07ad9b9 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestSubObject.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestSubObject.cpp
@@ -186,7 +186,6 @@ // Custom signature } -#line 759 "interface_base.cpp.tmpl" v8::Local<v8::FunctionTemplate> V8TestSubObject::domTemplate(v8::Isolate* isolate, const DOMWrapperWorld& world) { return V8DOMConfiguration::DomClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestSubObjectTemplate); }
diff --git a/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.cpp b/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.cpp index b8daf35..daf53ac 100644 --- a/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.cpp +++ b/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.cpp
@@ -106,7 +106,14 @@ end.non_interpolable_value)); } -CSSValue* CSSImageInterpolationType::CreateCSSValue( +const CSSValue* CSSImageInterpolationType::CreateCSSValue( + const InterpolableValue& interpolable_value, + const NonInterpolableValue* non_interpolable_value, + const StyleResolverState&) const { + return StaticCreateCSSValue(interpolable_value, non_interpolable_value); +} + +const CSSValue* CSSImageInterpolationType::StaticCreateCSSValue( const InterpolableValue& interpolable_value, const NonInterpolableValue* non_interpolable_value) { return ToCSSImageNonInterpolableValue(non_interpolable_value) @@ -118,7 +125,8 @@ const InterpolableValue& interpolable_value, const NonInterpolableValue* non_interpolable_value, StyleResolverState& state) { - CSSValue* image = CreateCSSValue(interpolable_value, non_interpolable_value); + const CSSValue* image = + StaticCreateCSSValue(interpolable_value, non_interpolable_value); return state.GetStyleImage(property, *image); }
diff --git a/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.h b/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.h index cc5d82c7..701548f 100644 --- a/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.h +++ b/third_party/WebKit/Source/core/animation/CSSImageInterpolationType.h
@@ -13,8 +13,9 @@ class CSSImageInterpolationType : public CSSInterpolationType { public: - CSSImageInterpolationType(PropertyHandle property) - : CSSInterpolationType(property) {} + CSSImageInterpolationType(PropertyHandle property, + const PropertyRegistration* registration = nullptr) + : CSSInterpolationType(property, registration) {} InterpolationValue MaybeConvertStandardPropertyUnderlyingValue( const ComputedStyle&) const final; @@ -37,8 +38,6 @@ static PairwiseInterpolationValue StaticMergeSingleConversions( InterpolationValue&& start, InterpolationValue&& end); - static CSSValue* CreateCSSValue(const InterpolableValue&, - const NonInterpolableValue*); static StyleImage* ResolveStyleImage(CSSPropertyID, const InterpolableValue&, const NonInterpolableValue*, @@ -62,6 +61,12 @@ InterpolationValue&& end) const final { return StaticMergeSingleConversions(std::move(start), std::move(end)); } + + static const CSSValue* StaticCreateCSSValue(const InterpolableValue&, + const NonInterpolableValue*); + const CSSValue* CreateCSSValue(const InterpolableValue&, + const NonInterpolableValue*, + const StyleResolverState&) const final; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp b/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp index 1e55ba38..14c85b9 100644 --- a/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp +++ b/third_party/WebKit/Source/core/animation/CSSInterpolationTypesMap.cpp
@@ -376,6 +376,9 @@ WTF::MakeUnique<CSSTimeInterpolationType>(property, ®istration)); break; case CSSSyntaxType::kImage: + result.push_back(WTF::MakeUnique<CSSImageInterpolationType>( + property, ®istration)); + break; case CSSSyntaxType::kUrl: case CSSSyntaxType::kInteger: case CSSSyntaxType::kTransformList:
diff --git a/third_party/WebKit/Source/core/css/CSSProperties.json5 b/third_party/WebKit/Source/core/css/CSSProperties.json5 index fa5f10b..a21ef9d7 100644 --- a/third_party/WebKit/Source/core/css/CSSProperties.json5 +++ b/third_party/WebKit/Source/core/css/CSSProperties.json5
@@ -755,7 +755,7 @@ { name: "border-bottom-width", api_class: "CSSPropertyAPIBorderWidth", - converter: "ConvertLineWidth<float>", + converter: "ConvertBorderWidth", interpolable: true, keywords: ["thin", "medium", "thick"], typedom_types: ["Length"], @@ -827,7 +827,7 @@ { name: "border-left-width", api_class: "CSSPropertyAPIBorderWidth", - converter: "ConvertLineWidth<float>", + converter: "ConvertBorderWidth", interpolable: true, keywords: ["thin", "medium", "thick"], typedom_types: ["Length"], @@ -859,7 +859,7 @@ { name: "border-right-width", api_class: "CSSPropertyAPIBorderWidth", - converter: "ConvertLineWidth<float>", + converter: "ConvertBorderWidth", interpolable: true, keywords: ["thin", "medium", "thick"], typedom_types: ["Length"], @@ -915,7 +915,7 @@ { name: "border-top-width", api_class: "CSSPropertyAPIBorderWidth", - converter: "ConvertLineWidth<float>", + converter: "ConvertBorderWidth", interpolable: true, keywords: ["thin", "medium", "thick"], typedom_types: ["Length"],
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp index 8af5ec46..f9db435 100644 --- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp +++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
@@ -842,6 +842,27 @@ } } +float StyleBuilderConverter::ConvertBorderWidth(StyleResolverState& state, + const CSSValue& value) { + if (value.IsIdentifierValue()) { + CSSValueID value_id = ToCSSIdentifierValue(value).GetValueID(); + if (value_id == CSSValueThin) + return 1; + if (value_id == CSSValueMedium) + return 3; + if (value_id == CSSValueThick) + return 5; + NOTREACHED(); + return 0; + } + const CSSPrimitiveValue& primitive_value = ToCSSPrimitiveValue(value); + double result = + primitive_value.ComputeLength<double>(state.CssToLengthConversionData()); + return clampTo<float>(RoundForImpreciseConversion<float>(result), + defaultMinimumForClamp<float>(), + defaultMaximumForClamp<float>()); +} + Length StyleBuilderConverter::ConvertLength(const StyleResolverState& state, const CSSValue& value) { return ToCSSPrimitiveValue(value).ConvertToLength(
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h index 673e0ff..79118270 100644 --- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h +++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h
@@ -128,6 +128,7 @@ const CSSValue&); template <typename T> static T ConvertLineWidth(StyleResolverState&, const CSSValue&); + static float ConvertBorderWidth(StyleResolverState&, const CSSValue&); static Length ConvertLength(const StyleResolverState&, const CSSValue&); static UnzoomedLength ConvertUnzoomedLength(const StyleResolverState&, const CSSValue&);
diff --git a/third_party/WebKit/Source/core/dom/ModuleScript.h b/third_party/WebKit/Source/core/dom/ModuleScript.h index b45010d5..5f4a22c 100644 --- a/third_party/WebKit/Source/core/dom/ModuleScript.h +++ b/third_party/WebKit/Source/core/dom/ModuleScript.h
@@ -137,14 +137,18 @@ // https://html.spec.whatwg.org/multipage/webappapis.html#concept-module-script-pre-instantiation-error // // |record_| and |preinstantiation_error_| are TraceWrappers()ed and kept - // alive via the path of - // DOMWindow -> Modulator/ModulatorImpl -> ModuleMap -> ModuleMap::Entry - // -> ModuleScript, or - // Modulator/ModulatorImpl -> ModuleTreeLinkerRegistry -> ModuleTreeLinker - // -> ModuleScript, or - // ScriptLoader -> PendingScript -> ModulePendingScript -> - // ModulePendingScriptTreeClient -> ModuleScript. - // All the classes/references on the path above should be + // alive via one or more of following reference graphs: + // * non-inline module script case + // DOMWindow -> Modulator/ModulatorImpl -> ModuleMap -> ModuleMap::Entry + // -> ModuleScript + // * inline module script case, before the PendingScript is created. + // DOMWindow -> Modulator/ModulatorImpl -> ModuleTreeLinkerRegistry + // -> ModuleTreeLinker -> ModuleScript + // * inline module script case, after the PendingScript is created. + // HTMLScriptElement -> ScriptLoader -> PendingScript -> ModulePendingScript + // -> ModulePendingScriptTreeClient -> ModuleScript. + // + // All the classes/references on the graphs above should be // TraceWrapperBase/TraceWrapperMember<>/etc., TraceWrapperV8Reference<v8::Value> preinstantiation_error_;
diff --git a/third_party/WebKit/Source/core/editing/VisiblePosition.cpp b/third_party/WebKit/Source/core/editing/VisiblePosition.cpp index e119c14..261b75c 100644 --- a/third_party/WebKit/Source/core/editing/VisiblePosition.cpp +++ b/third_party/WebKit/Source/core/editing/VisiblePosition.cpp
@@ -116,9 +116,9 @@ template <typename Strategy> VisiblePositionTemplate<Strategy> -VisiblePositionTemplate<Strategy>::FirstPositionInNode(Node* node) { +VisiblePositionTemplate<Strategy>::FirstPositionInNode(const Node& node) { return Create(PositionWithAffinityTemplate<Strategy>( - PositionTemplate<Strategy>::FirstPositionInNode(*node))); + PositionTemplate<Strategy>::FirstPositionInNode(node))); } template <typename Strategy>
diff --git a/third_party/WebKit/Source/core/editing/VisiblePosition.h b/third_party/WebKit/Source/core/editing/VisiblePosition.h index a98122b..0e0f39b2 100644 --- a/third_party/WebKit/Source/core/editing/VisiblePosition.h +++ b/third_party/WebKit/Source/core/editing/VisiblePosition.h
@@ -106,7 +106,7 @@ static VisiblePositionTemplate<Strategy> AfterNode(const Node&); static VisiblePositionTemplate<Strategy> BeforeNode(const Node&); - static VisiblePositionTemplate<Strategy> FirstPositionInNode(Node*); + static VisiblePositionTemplate<Strategy> FirstPositionInNode(const Node&); static VisiblePositionTemplate<Strategy> InParentAfterNode(const Node&); static VisiblePositionTemplate<Strategy> InParentBeforeNode(const Node&); static VisiblePositionTemplate<Strategy> LastPositionInNode(Node*);
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp index 868deaa..13798f3 100644 --- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp +++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp
@@ -549,7 +549,7 @@ position.ComputeContainerNode() ? EnclosingBlock(position.ComputeContainerNode(), rule) : 0; - return start_block ? VisiblePosition::FirstPositionInNode(start_block) + return start_block ? VisiblePosition::FirstPositionInNode(*start_block) : VisiblePosition(); } @@ -643,7 +643,7 @@ if (!highest_root) return VisiblePosition(); - return VisiblePosition::FirstPositionInNode(highest_root); + return VisiblePosition::FirstPositionInNode(*highest_root); } VisiblePosition EndOfEditableContent(const VisiblePosition& visible_position) {
diff --git a/third_party/WebKit/Source/core/editing/VisibleUnitsLine.cpp b/third_party/WebKit/Source/core/editing/VisibleUnitsLine.cpp index 37ed8d25..659e3da 100644 --- a/third_party/WebKit/Source/core/editing/VisibleUnitsLine.cpp +++ b/third_party/WebKit/Source/core/editing/VisibleUnitsLine.cpp
@@ -686,7 +686,7 @@ : node->GetDocument().documentElement(); if (!root_element) return VisiblePosition(); - return VisiblePosition::FirstPositionInNode(root_element); + return VisiblePosition::FirstPositionInNode(*root_element); } VisiblePosition NextLinePosition(const VisiblePosition& visible_position,
diff --git a/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp b/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp index 56ff069..ebc743c 100644 --- a/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/CompositeEditCommand.cpp
@@ -1052,10 +1052,11 @@ if (visible_paragraph_end.IsNull()) return nullptr; - HTMLElement* new_block = + HTMLElement* const new_block = InsertNewDefaultParagraphElementAt(upstream_start, editing_state); if (editing_state->IsAborted()) return nullptr; + DCHECK(new_block); bool end_was_br = isHTMLBRElement(*visible_paragraph_end.DeepEquivalent().AnchorNode()); @@ -1067,7 +1068,7 @@ visible_paragraph_start = StartOfParagraph(visible_pos); visible_paragraph_end = EndOfParagraph(visible_pos); MoveParagraphs(visible_paragraph_start, visible_paragraph_end, - VisiblePosition::FirstPositionInNode(new_block), + VisiblePosition::FirstPositionInNode(*new_block), editing_state); if (editing_state->IsAborted()) return nullptr; @@ -1798,7 +1799,7 @@ // wrong paragraph. if (enclosing_anchor && !IsEnclosingBlock(enclosing_anchor)) { VisiblePosition first_in_anchor = - VisiblePosition::FirstPositionInNode(enclosing_anchor); + VisiblePosition::FirstPositionInNode(*enclosing_anchor); VisiblePosition last_in_anchor = VisiblePosition::LastPositionInNode(enclosing_anchor); // If visually just after the anchor, insert *inside* the anchor unless it's @@ -1882,7 +1883,7 @@ // Do not split a node when doing so introduces an empty node. VisiblePosition position_in_parent = - VisiblePosition::FirstPositionInNode(parent_element); + VisiblePosition::FirstPositionInNode(*parent_element); VisiblePosition position_in_node = CreateVisiblePosition(FirstPositionInOrBeforeNode(node)); if (position_in_parent.DeepEquivalent() !=
diff --git a/third_party/WebKit/Source/core/editing/commands/DeleteSelectionCommand.cpp b/third_party/WebKit/Source/core/editing/commands/DeleteSelectionCommand.cpp index c3d742ef..55616970 100644 --- a/third_party/WebKit/Source/core/editing/commands/DeleteSelectionCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/DeleteSelectionCommand.cpp
@@ -47,8 +47,9 @@ using namespace HTMLNames; static bool IsTableCellEmpty(Node* cell) { + DCHECK(cell); DCHECK(IsTableCell(cell)) << cell; - return VisiblePosition::FirstPositionInNode(cell).DeepEquivalent() == + return VisiblePosition::FirstPositionInNode(*cell).DeepEquivalent() == VisiblePosition::LastPositionInNode(cell).DeepEquivalent(); } @@ -513,7 +514,7 @@ GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); if (node == start_block_) { VisiblePosition previous = PreviousPositionOf( - VisiblePosition::FirstPositionInNode(start_block_.Get())); + VisiblePosition::FirstPositionInNode(*start_block_.Get())); if (previous.IsNotNull() && !IsEndOfBlock(previous)) need_placeholder_ = true; }
diff --git a/third_party/WebKit/Source/core/editing/commands/DocumentExecCommand.cpp b/third_party/WebKit/Source/core/editing/commands/DocumentExecCommand.cpp index bd98b83..b38744d 100644 --- a/third_party/WebKit/Source/core/editing/commands/DocumentExecCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/DocumentExecCommand.cpp
@@ -31,6 +31,7 @@ #include "core/editing/Editor.h" #include "core/events/ScopedEventQueue.h" +#include "core/frame/UseCounter.h" #include "core/html/TextControlElement.h" #include "core/inspector/ConsoleMessage.h" #include "platform/Histogram.h"
diff --git a/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp b/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp index 7bd2a581..dda0386 100644 --- a/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/IndentOutdentCommand.cpp
@@ -227,7 +227,7 @@ // The selection is inside a blockquote i.e. enclosingNode is a blockquote VisiblePosition position_in_enclosing_block = - VisiblePosition::FirstPositionInNode(enclosing_element); + VisiblePosition::FirstPositionInNode(*enclosing_element); // If the blockquote is inline, the start of the enclosing block coincides // with positionInEnclosingBlock. VisiblePosition start_of_enclosing_block =
diff --git a/third_party/WebKit/Source/core/editing/commands/InsertListCommand.cpp b/third_party/WebKit/Source/core/editing/commands/InsertListCommand.cpp index b3a5d0f..5d6f8c8 100644 --- a/third_party/WebKit/Source/core/editing/commands/InsertListCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/InsertListCommand.cpp
@@ -384,7 +384,7 @@ GetDocument().UpdateStyleAndLayoutIgnorePendingStylesheets(); Node* first_child_in_list = - EnclosingListChild(VisiblePosition::FirstPositionInNode(list_element) + EnclosingListChild(VisiblePosition::FirstPositionInNode(*list_element) .DeepEquivalent() .AnchorNode(), list_element); @@ -394,7 +394,7 @@ : list_element; MoveParagraphWithClones( - VisiblePosition::FirstPositionInNode(list_element), + VisiblePosition::FirstPositionInNode(*list_element), VisiblePosition::LastPositionInNode(list_element), new_list, outer_block, editing_state); if (editing_state->IsAborted()) @@ -460,7 +460,7 @@ VisiblePosition end; DCHECK(list_child_node); if (isHTMLLIElement(*list_child_node)) { - start = VisiblePosition::FirstPositionInNode(list_child_node); + start = VisiblePosition::FirstPositionInNode(*list_child_node); end = VisiblePosition::LastPositionInNode(list_child_node); next_list_child = list_child_node->nextSibling(); previous_list_child = list_child_node->previousSibling();
diff --git a/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp b/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp index 7a6123b9..a28357e8 100644 --- a/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/ReplaceSelectionCommand.cpp
@@ -630,9 +630,9 @@ // FIXME: Tolerate differences in id, class, and style attributes. if (element->parentNode() && IsNonTableCellHTMLBlockElement(element) && AreIdenticalElements(*element, *element->parentNode()) && - VisiblePosition::FirstPositionInNode(element->parentNode()) + VisiblePosition::FirstPositionInNode(*element->parentNode()) .DeepEquivalent() == - VisiblePosition::FirstPositionInNode(element).DeepEquivalent() && + VisiblePosition::FirstPositionInNode(*element).DeepEquivalent() && VisiblePosition::LastPositionInNode(element->parentNode()) .DeepEquivalent() == VisiblePosition::LastPositionInNode(element).DeepEquivalent()) {
diff --git a/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp b/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp index 3dbbedfd..46e23a95 100644 --- a/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp +++ b/third_party/WebKit/Source/core/editing/commands/TypingCommand.cpp
@@ -769,7 +769,7 @@ if (enclosing_table_cell && visible_start.DeepEquivalent() == VisiblePosition::FirstPositionInNode( - const_cast<Node*>(enclosing_table_cell)) + *const_cast<Node*>(enclosing_table_cell)) .DeepEquivalent()) return;
diff --git a/third_party/WebKit/Source/core/events/EventTarget.h b/third_party/WebKit/Source/core/events/EventTarget.h index 54f46ff..58a2819 100644 --- a/third_party/WebKit/Source/core/events/EventTarget.h +++ b/third_party/WebKit/Source/core/events/EventTarget.h
@@ -40,7 +40,6 @@ #include "core/events/AddEventListenerOptionsResolved.h" #include "core/events/EventDispatchResult.h" #include "core/events/EventListenerMap.h" -#include "core/frame/UseCounter.h" #include "platform/bindings/ScriptWrappable.h" #include "platform/heap/Handle.h" #include "platform/wtf/Allocator.h" @@ -57,6 +56,7 @@ class MessagePort; class Node; class ServiceWorker; +enum class WebFeature : uint32_t; struct FiringEventIterator { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
diff --git a/third_party/WebKit/Source/core/events/TouchEvent.cpp b/third_party/WebKit/Source/core/events/TouchEvent.cpp index e89b7c2..61cdefe 100644 --- a/third_party/WebKit/Source/core/events/TouchEvent.cpp +++ b/third_party/WebKit/Source/core/events/TouchEvent.cpp
@@ -30,6 +30,7 @@ #include "core/frame/FrameConsole.h" #include "core/frame/LocalDOMWindow.h" #include "core/frame/LocalFrameView.h" +#include "core/frame/UseCounter.h" #include "core/html/HTMLElement.h" #include "core/input/InputDeviceCapabilities.h" #include "core/inspector/ConsoleMessage.h"
diff --git a/third_party/WebKit/Source/core/frame/SubresourceIntegrityTest.cpp b/third_party/WebKit/Source/core/frame/SubresourceIntegrityTest.cpp index 6731b48a..38e7bb2 100644 --- a/third_party/WebKit/Source/core/frame/SubresourceIntegrityTest.cpp +++ b/third_party/WebKit/Source/core/frame/SubresourceIntegrityTest.cpp
@@ -58,10 +58,8 @@ class SubresourceIntegrityTest : public ::testing::Test { public: SubresourceIntegrityTest() - : secure_url(kParsedURLString, "https://example.test:443"), - insecure_url(kParsedURLString, "http://example.test:80"), - secure_origin(SecurityOrigin::Create(secure_url)), - insecure_origin(SecurityOrigin::Create(insecure_url)) {} + : sec_url(kParsedURLString, "https://example.test:443"), + insec_url(kParsedURLString, "http://example.test:80") {} protected: virtual void SetUp() { @@ -168,54 +166,76 @@ EXPECT_EQ(0u, metadata_set.size()); } - enum CorsStatus { kWithCors, kNoCors }; + enum ServiceWorkerMode { + kNoServiceWorker, + kSWOpaqueResponse, + kSWClearResponse + }; - void ExpectIntegrity(const char* integrity, - const char* script, - size_t size, - const KURL& url, - const KURL& requestor_url, - CorsStatus cors_status = kWithCors) { - script_element->setAttribute(HTMLNames::integrityAttr, integrity); - EXPECT_TRUE(SubresourceIntegrity::CheckSubresourceIntegrity( - String(integrity), script_element->GetDocument(), script, size, url, - *CreateTestResource(url, requestor_url, cors_status))); + enum Expectation { kIntegritySuccess, kIntegrityFailure }; + + struct TestCase { + const KURL& origin; + const KURL& target; + const KURL* allow_origin_url; + const ServiceWorkerMode service_worker; + const Expectation expectation; + }; + + void CheckExpectedIntegrity(const char* integrity, const TestCase test) { + CheckExpectedIntegrity(integrity, test, test.expectation); } - void ExpectIntegrityFailure(const char* integrity, - const char* script, - size_t size, - const KURL& url, - const KURL& requestor_url, - CorsStatus cors_status = kWithCors) { + // Allows to overwrite the test expectation for cases that are always expected + // to fail: + void CheckExpectedIntegrity(const char* integrity, + const TestCase test, + Expectation expectation) { + document->UpdateSecurityOrigin(SecurityOrigin::Create(test.origin)); script_element->setAttribute(HTMLNames::integrityAttr, integrity); - EXPECT_FALSE(SubresourceIntegrity::CheckSubresourceIntegrity( - String(integrity), script_element->GetDocument(), script, size, url, - *CreateTestResource(url, requestor_url, cors_status))); + + EXPECT_EQ(expectation == kIntegritySuccess, + SubresourceIntegrity::CheckSubresourceIntegrity( + String(integrity), script_element->GetDocument(), + kBasicScript, strlen(kBasicScript), test.target, + *CreateTestResource(test.target, test.allow_origin_url, + test.service_worker))); } Resource* CreateTestResource(const KURL& url, - const KURL& allow_origin_url, - CorsStatus cors_status) { + const KURL* allow_origin_url, + ServiceWorkerMode service_worker_mode) { ResourceResponse response; response.SetURL(url); response.SetHTTPStatusCode(200); - if (cors_status == kWithCors) { + + if (allow_origin_url) { response.SetHTTPHeaderField( "access-control-allow-origin", - SecurityOrigin::Create(allow_origin_url)->ToAtomicString()); + SecurityOrigin::Create(*allow_origin_url)->ToAtomicString()); response.SetHTTPHeaderField("access-control-allow-credentials", "true"); } + + if (service_worker_mode != kNoServiceWorker) { + response.SetWasFetchedViaServiceWorker(true); + + if (service_worker_mode == kSWOpaqueResponse) { + response.SetServiceWorkerResponseType( + WebServiceWorkerResponseType::kWebServiceWorkerResponseTypeOpaque); + } else { + response.SetServiceWorkerResponseType( + WebServiceWorkerResponseType::kWebServiceWorkerResponseTypeDefault); + } + } + Resource* resource = RawResource::CreateForTest(response.Url(), Resource::kRaw); resource->SetResponse(response); return resource; } - KURL secure_url; - KURL insecure_url; - RefPtr<SecurityOrigin> secure_origin; - RefPtr<SecurityOrigin> insecure_origin; + KURL sec_url; + KURL insec_url; Persistent<Document> document; Persistent<HTMLScriptElement> script_element; @@ -450,87 +470,89 @@ kHashAlgorithmSha384); } -// -// End-to-end tests of ::CheckSubresourceIntegrity. -// +// Tests that SubresourceIntegrity::CheckSubresourceIntegrity behaves correctly +// when faced with secure or insecure origins, same origin and cross origin +// requests, successful and failing CORS checks as well as when the response was +// handled by a service worker. +TEST_F(SubresourceIntegrityTest, OriginIntegrity) { + TestCase cases[] = { + // Secure origin, same origin -> integrity expected: + {sec_url, sec_url, nullptr, kNoServiceWorker, kIntegritySuccess}, + {sec_url, sec_url, nullptr, kSWClearResponse, kIntegritySuccess}, -TEST_F(SubresourceIntegrityTest, CheckSubresourceIntegrityInSecureOrigin) { - document->UpdateSecurityOrigin(secure_origin->IsolatedCopy()); + // Insecure origin, secure target, CORS ok -> integrity expected: + {insec_url, sec_url, &insec_url, kNoServiceWorker, kIntegritySuccess}, + {insec_url, sec_url, &insec_url, kSWClearResponse, kIntegritySuccess}, + {insec_url, sec_url, nullptr, kSWClearResponse, kIntegritySuccess}, - // Verify basic sha256, sha384, and sha512 integrity checks. - ExpectIntegrity(kSha256Integrity, kBasicScript, strlen(kBasicScript), - secure_url, secure_url); - ExpectIntegrity(kSha256IntegrityLenientSyntax, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); - ExpectIntegrity(kSha384Integrity, kBasicScript, strlen(kBasicScript), - secure_url, secure_url); - ExpectIntegrity(kSha512Integrity, kBasicScript, strlen(kBasicScript), - secure_url, secure_url); + // Secure origin, insecure target, CORS ok -> no failure expected: + {sec_url, insec_url, &sec_url, kNoServiceWorker, kIntegritySuccess}, + {sec_url, insec_url, &sec_url, kSWClearResponse, kIntegritySuccess}, + {sec_url, insec_url, nullptr, kSWClearResponse, kIntegritySuccess}, - // Verify multiple hashes in an attribute. - ExpectIntegrity(kSha256AndSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); - ExpectIntegrity(kBadSha256AndGoodSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); + // Insecure origin, secure target, no CORS headers -> failure expected: + {insec_url, sec_url, nullptr, kNoServiceWorker, kIntegrityFailure}, - // The hash label must match the hash value. - ExpectIntegrityFailure(kSha384IntegrityLabeledAs256, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); + // Insecure origin, secure target, CORS failure -> failure expected: + {insec_url, sec_url, &sec_url, kNoServiceWorker, kIntegrityFailure}, + {insec_url, sec_url, &sec_url, kSWOpaqueResponse, kIntegrityFailure}, + {insec_url, sec_url, nullptr, kSWOpaqueResponse, kIntegrityFailure}, - // With multiple values, at least one must match, and it must be the - // strongest hash algorithm. - ExpectIntegrityFailure(kGoodSha256AndBadSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); - ExpectIntegrityFailure(kBadSha256AndBadSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); + // Secure origin, same origin, opaque response from service worker -> + // failure expected: + {sec_url, sec_url, &sec_url, kSWOpaqueResponse, kIntegrityFailure}, - // Unsupported hash functions should succeed. - ExpectIntegrity(kUnsupportedHashFunctionIntegrity, kBasicScript, - strlen(kBasicScript), secure_url, secure_url); + // Insecure origin, insecure target, same origin-> failure expected: + {sec_url, insec_url, nullptr, kNoServiceWorker, kIntegrityFailure}, + }; - // All parameters are fine, and because this is not cross origin, CORS is - // not needed. - ExpectIntegrity(kSha256Integrity, kBasicScript, strlen(kBasicScript), - secure_url, secure_url, kNoCors); + for (const auto& test : cases) { + SCOPED_TRACE( + ::testing::Message() + << "Origin: " << test.origin.BaseAsString() + << ", target: " << test.target.BaseAsString() + << ", CORS access-control-allow-origin header: " + << (test.allow_origin_url ? test.allow_origin_url->BaseAsString() : "-") + << ", service worker: " + << (test.service_worker == kNoServiceWorker + ? "no" + : (test.service_worker == kSWClearResponse ? "clear response" + : "opaque response")) + << ", expected result: " + << (test.expectation == kIntegritySuccess ? "integrity" : "failure")); - // Options should be ignored - ExpectIntegrity(kSha256IntegrityWithEmptyOption, kBasicScript, - strlen(kBasicScript), secure_url, secure_url, kNoCors); - ExpectIntegrity(kSha256IntegrityWithOption, kBasicScript, - strlen(kBasicScript), secure_url, secure_url, kNoCors); - ExpectIntegrity(kSha256IntegrityWithOptions, kBasicScript, - strlen(kBasicScript), secure_url, secure_url, kNoCors); - ExpectIntegrity(kSha256IntegrityWithMimeOption, kBasicScript, - strlen(kBasicScript), secure_url, secure_url, kNoCors); -} + // Verify basic sha256, sha384, and sha512 integrity checks. + CheckExpectedIntegrity(kSha256Integrity, test); + CheckExpectedIntegrity(kSha256IntegrityLenientSyntax, test); + CheckExpectedIntegrity(kSha384Integrity, test); + CheckExpectedIntegrity(kSha512Integrity, test); -TEST_F(SubresourceIntegrityTest, CheckSubresourceIntegrityInInsecureOrigin) { - // The same checks as CheckSubresourceIntegrityInSecureOrigin should pass - // here, with the expection of the NoCors check at the end. - document->UpdateSecurityOrigin(insecure_origin->IsolatedCopy()); + // Verify multiple hashes in an attribute. + CheckExpectedIntegrity(kSha256AndSha384Integrities, test); + CheckExpectedIntegrity(kBadSha256AndGoodSha384Integrities, test); - ExpectIntegrity(kSha256Integrity, kBasicScript, strlen(kBasicScript), - secure_url, insecure_url); - ExpectIntegrity(kSha256IntegrityLenientSyntax, kBasicScript, - strlen(kBasicScript), secure_url, insecure_url); - ExpectIntegrity(kSha384Integrity, kBasicScript, strlen(kBasicScript), - secure_url, insecure_url); - ExpectIntegrity(kSha512Integrity, kBasicScript, strlen(kBasicScript), - secure_url, insecure_url); - ExpectIntegrityFailure(kSha384IntegrityLabeledAs256, kBasicScript, - strlen(kBasicScript), secure_url, insecure_url); - ExpectIntegrity(kUnsupportedHashFunctionIntegrity, kBasicScript, - strlen(kBasicScript), secure_url, insecure_url); + // Unsupported hash functions should succeed. + CheckExpectedIntegrity(kUnsupportedHashFunctionIntegrity, test); - ExpectIntegrity(kSha256AndSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, insecure_url); - ExpectIntegrity(kBadSha256AndGoodSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, insecure_url); + // Options should be ignored + CheckExpectedIntegrity(kSha256IntegrityWithEmptyOption, test); + CheckExpectedIntegrity(kSha256IntegrityWithOption, test); + CheckExpectedIntegrity(kSha256IntegrityWithOptions, test); + CheckExpectedIntegrity(kSha256IntegrityWithMimeOption, test); - ExpectIntegrityFailure(kSha256Integrity, kBasicScript, strlen(kBasicScript), - secure_url, insecure_url, kNoCors); - ExpectIntegrityFailure(kGoodSha256AndBadSha384Integrities, kBasicScript, - strlen(kBasicScript), secure_url, insecure_url); + // The following tests are expected to fail in every scenario: + + // The hash label must match the hash value. + CheckExpectedIntegrity(kSha384IntegrityLabeledAs256, test, + Expectation::kIntegrityFailure); + + // With multiple values, at least one must match, and it must be the + // strongest hash algorithm. + CheckExpectedIntegrity(kGoodSha256AndBadSha384Integrities, test, + Expectation::kIntegrityFailure); + CheckExpectedIntegrity(kBadSha256AndBadSha384Integrities, test, + Expectation::kIntegrityFailure); + } } } // namespace blink
diff --git a/third_party/WebKit/Source/core/html/HTMLOListElement.cpp b/third_party/WebKit/Source/core/html/HTMLOListElement.cpp index abf84ba2..dc124684 100644 --- a/third_party/WebKit/Source/core/html/HTMLOListElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLOListElement.cpp
@@ -25,6 +25,7 @@ #include "core/CSSPropertyNames.h" #include "core/CSSValueKeywords.h" #include "core/HTMLNames.h" +#include "core/frame/UseCounter.h" #include "core/html/parser/HTMLParserIdioms.h" #include "core/layout/LayoutListItem.h"
diff --git a/third_party/WebKit/Source/core/html/HTMLTableCellElement.cpp b/third_party/WebKit/Source/core/html/HTMLTableCellElement.cpp index 89a91e53..1de7d39 100644 --- a/third_party/WebKit/Source/core/html/HTMLTableCellElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLTableCellElement.cpp
@@ -29,6 +29,7 @@ #include "core/HTMLNames.h" #include "core/dom/Attribute.h" #include "core/dom/ElementTraversal.h" +#include "core/frame/UseCounter.h" #include "core/html/HTMLTableElement.h" #include "core/html/parser/HTMLParserIdioms.h" #include "core/layout/LayoutTableCell.h"
diff --git a/third_party/WebKit/Source/core/html/TextControlElement.cpp b/third_party/WebKit/Source/core/html/TextControlElement.cpp index d05dac2d..284c411 100644 --- a/third_party/WebKit/Source/core/html/TextControlElement.cpp +++ b/third_party/WebKit/Source/core/html/TextControlElement.cpp
@@ -459,7 +459,7 @@ VisiblePosition TextControlElement::VisiblePositionForIndex(int index) const { if (index <= 0) - return VisiblePosition::FirstPositionInNode(InnerEditorElement()); + return VisiblePosition::FirstPositionInNode(*InnerEditorElement()); Position start, end; bool selected = Range::selectNodeContents(InnerEditorElement(), start, end); if (!selected)
diff --git a/third_party/WebKit/Source/core/html/TextDocument.cpp b/third_party/WebKit/Source/core/html/TextDocument.cpp index 4be2ce8..2359ac7 100644 --- a/third_party/WebKit/Source/core/html/TextDocument.cpp +++ b/third_party/WebKit/Source/core/html/TextDocument.cpp
@@ -24,6 +24,7 @@ #include "core/html/TextDocument.h" +#include "core/frame/UseCounter.h" #include "core/html/parser/TextDocumentParser.h" namespace blink {
diff --git a/third_party/WebKit/Source/core/html/canvas/ImageElementBase.cpp b/third_party/WebKit/Source/core/html/canvas/ImageElementBase.cpp index 049278a9..e3f0bc5d 100644 --- a/third_party/WebKit/Source/core/html/canvas/ImageElementBase.cpp +++ b/third_party/WebKit/Source/core/html/canvas/ImageElementBase.cpp
@@ -5,6 +5,7 @@ #include "core/html/canvas/ImageElementBase.h" #include "core/frame/LocalDOMWindow.h" +#include "core/frame/UseCounter.h" #include "core/imagebitmap/ImageBitmap.h" #include "core/layout/LayoutObject.h" #include "core/loader/ImageLoader.h"
diff --git a/third_party/WebKit/Source/core/html/parser/XSSAuditor.cpp b/third_party/WebKit/Source/core/html/parser/XSSAuditor.cpp index 1348968c..c3fb7f9 100644 --- a/third_party/WebKit/Source/core/html/parser/XSSAuditor.cpp +++ b/third_party/WebKit/Source/core/html/parser/XSSAuditor.cpp
@@ -33,6 +33,7 @@ #include "core/dom/Document.h" #include "core/frame/LocalFrame.h" #include "core/frame/Settings.h" +#include "core/frame/UseCounter.h" #include "core/html/HTMLParamElement.h" #include "core/html/LinkRelAttribute.h" #include "core/html/parser/HTMLDocumentParser.h"
diff --git a/third_party/WebKit/Source/core/html/parser/XSSAuditorDelegate.cpp b/third_party/WebKit/Source/core/html/parser/XSSAuditorDelegate.cpp index 60960ebb..3d7a8e1 100644 --- a/third_party/WebKit/Source/core/html/parser/XSSAuditorDelegate.cpp +++ b/third_party/WebKit/Source/core/html/parser/XSSAuditorDelegate.cpp
@@ -28,6 +28,7 @@ #include "core/dom/Document.h" #include "core/frame/LocalFrame.h" #include "core/frame/LocalFrameClient.h" +#include "core/frame/UseCounter.h" #include "core/inspector/ConsoleMessage.h" #include "core/loader/DocumentLoader.h" #include "core/loader/FrameLoader.h"
diff --git a/third_party/WebKit/Source/core/layout/CollapsedBorderValue.h b/third_party/WebKit/Source/core/layout/CollapsedBorderValue.h index e12541e..62d02ca 100644 --- a/third_party/WebKit/Source/core/layout/CollapsedBorderValue.h +++ b/third_party/WebKit/Source/core/layout/CollapsedBorderValue.h
@@ -56,11 +56,16 @@ const Color& color, EBorderPrecedence precedence) : color_(color), - width_(ComputedStyle::BorderStyleIsVisible(border.Style()) - ? border.Width() - : 0), style_(static_cast<unsigned>(border.Style())), precedence_(precedence) { + if (!ComputedStyle::BorderStyleIsVisible(border.Style())) { + width_ = 0; + } else { + if (border.Width() > 0.0f && border.Width() <= 1.0f) + width_ = 1; + else + width_ = border.Width(); + } DCHECK(precedence != kBorderPrecedenceOff); } @@ -69,9 +74,16 @@ const Color& color, EBorderPrecedence precedence) : color_(color), - width_(ComputedStyle::BorderStyleIsVisible(style) ? width : 0), style_(static_cast<unsigned>(style)), precedence_(precedence) { + if (!ComputedStyle::BorderStyleIsVisible(style)) { + width_ = 0; + } else { + if (width > 0.0f && width <= 1.0f) + width_ = 1; + else + width_ = width; + } DCHECK(precedence != kBorderPrecedenceOff); }
diff --git a/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp b/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp index 8a1142c..fbfb2c8 100644 --- a/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp
@@ -28,6 +28,7 @@ #include <algorithm> #include <limits> +#include "core/frame/UseCounter.h" #include "core/layout/HitTestResult.h" #include "core/layout/LayoutAnalyzer.h" #include "core/layout/LayoutTableCell.h"
diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp index 234af1f..520fce8 100644 --- a/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp +++ b/third_party/WebKit/Source/core/layout/compositing/CompositingInputsUpdater.cpp
@@ -6,6 +6,7 @@ #include "core/dom/Document.h" #include "core/frame/LocalFrameView.h" +#include "core/frame/UseCounter.h" #include "core/layout/LayoutBlock.h" #include "core/layout/LayoutView.h" #include "core/layout/compositing/CompositedLayerMapping.h"
diff --git a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp index 13952d5..d3625eae 100644 --- a/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp +++ b/third_party/WebKit/Source/core/paint/BoxBorderPainter.cpp
@@ -277,12 +277,20 @@ -edges[kBSLeft].GetDoubleBorderStripeWidth(stripe)); } +float ClampOrRound(float border_width) { + // Make sure non-zero borders never disappear + if (border_width > 0.0f && border_width <= 1.0f) + return 1.0f; + + return roundf(border_width); +} + void DrawSolidBorderRect(GraphicsContext& context, const FloatRect& border_rect, float border_width, const Color& color) { FloatRect stroke_rect(border_rect); - border_width = roundf(border_width); + border_width = ClampOrRound(border_width); stroke_rect.Inflate(-border_width / 2); bool was_antialias = context.ShouldAntialias(); @@ -807,7 +815,7 @@ if (use_path) path = &border_info.rounded_border_path; else - side_rect.SetHeight(roundf(edge.Width())); + side_rect.SetHeight(ClampOrRound(edge.Width())); PaintOneBorderSide(context, side_rect, kBSTop, kBSLeft, kBSRight, path, border_info.anti_alias, color, completed_edges); @@ -821,7 +829,7 @@ if (use_path) path = &border_info.rounded_border_path; else - side_rect.ShiftYEdgeTo(side_rect.MaxY() - roundf(edge.Width())); + side_rect.ShiftYEdgeTo(side_rect.MaxY() - ClampOrRound(edge.Width())); PaintOneBorderSide(context, side_rect, kBSBottom, kBSLeft, kBSRight, path, border_info.anti_alias, color, completed_edges); @@ -835,7 +843,7 @@ if (use_path) path = &border_info.rounded_border_path; else - side_rect.SetWidth(roundf(edge.Width())); + side_rect.SetWidth(ClampOrRound(edge.Width())); PaintOneBorderSide(context, side_rect, kBSLeft, kBSTop, kBSBottom, path, border_info.anti_alias, color, completed_edges); @@ -849,7 +857,7 @@ if (use_path) path = &border_info.rounded_border_path; else - side_rect.ShiftXEdgeTo(side_rect.MaxX() - roundf(edge.Width())); + side_rect.ShiftXEdgeTo(side_rect.MaxX() - ClampOrRound(edge.Width())); PaintOneBorderSide(context, side_rect, kBSRight, kBSTop, kBSBottom, path, border_info.anti_alias, color, completed_edges); @@ -960,8 +968,9 @@ ObjectPainter::DrawLineForBoxSide( graphics_context, side_rect.X(), side_rect.Y(), side_rect.MaxX(), side_rect.MaxY(), side, color, edge_to_render.BorderStyle(), - miter1 != kNoMiter ? roundf(adjacent_edge1.Width()) : 0, - miter2 != kNoMiter ? roundf(adjacent_edge2.Width()) : 0, antialias); + miter1 != kNoMiter ? ClampOrRound(adjacent_edge1.Width()) : 0, + miter2 != kNoMiter ? ClampOrRound(adjacent_edge2.Width()) : 0, + antialias); } }
diff --git a/third_party/WebKit/Source/core/svg/SVGTextContentElement.cpp b/third_party/WebKit/Source/core/svg/SVGTextContentElement.cpp index 9a1ea04..8e9533b6 100644 --- a/third_party/WebKit/Source/core/svg/SVGTextContentElement.cpp +++ b/third_party/WebKit/Source/core/svg/SVGTextContentElement.cpp
@@ -215,7 +215,7 @@ // Find selection start VisiblePosition start = VisiblePosition::FirstPositionInNode( - const_cast<SVGTextContentElement*>(this)); + *const_cast<SVGTextContentElement*>(this)); for (unsigned i = 0; i < charnum; ++i) start = NextPositionOf(start);
diff --git a/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp b/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp index 150a0de..8cb784b 100644 --- a/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp +++ b/third_party/WebKit/Source/core/svg/animation/SVGSMILElement.cpp
@@ -33,6 +33,7 @@ #include "core/dom/TaskRunnerHelper.h" #include "core/events/Event.h" #include "core/events/EventListener.h" +#include "core/frame/UseCounter.h" #include "core/svg/SVGSVGElement.h" #include "core/svg/SVGURIReference.h" #include "core/svg/animation/SMILTimeContainer.h"
diff --git a/third_party/WebKit/Source/modules/websockets/BUILD.gn b/third_party/WebKit/Source/modules/websockets/BUILD.gn index 47610a9..f26f634a 100644 --- a/third_party/WebKit/Source/modules/websockets/BUILD.gn +++ b/third_party/WebKit/Source/modules/websockets/BUILD.gn
@@ -14,7 +14,6 @@ "DocumentWebSocketChannel.h", "InspectorWebSocketEvents.cpp", "InspectorWebSocketEvents.h", - "WebPepperSocket.cpp", "WebPepperSocketChannelClientProxy.h", "WebPepperSocketImpl.cpp", "WebPepperSocketImpl.h",
diff --git a/third_party/WebKit/Source/modules/websockets/WebPepperSocket.cpp b/third_party/WebKit/Source/modules/websockets/WebPepperSocket.cpp deleted file mode 100644 index 13339417..0000000 --- a/third_party/WebKit/Source/modules/websockets/WebPepperSocket.cpp +++ /dev/null
@@ -1,51 +0,0 @@ -/* - * Copyright (C) 2011 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "public/web/WebPepperSocket.h" - -#include <memory> -#include "modules/websockets/WebPepperSocketImpl.h" -#include "platform/wtf/PtrUtil.h" - -namespace blink { - -WebPepperSocket* WebPepperSocket::Create(const WebDocument& document, - WebPepperSocketClient* client) { - if (!client) - return 0; - - std::unique_ptr<WebPepperSocketImpl> websocket = - WTF::MakeUnique<WebPepperSocketImpl>(document, client); - if (websocket && websocket->IsNull()) - return 0; - return websocket.release(); -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp b/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp index 2c85006d3..8af12e97 100644 --- a/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp +++ b/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.cpp
@@ -38,6 +38,7 @@ #include "modules/websockets/DocumentWebSocketChannel.h" #include "modules/websockets/WebPepperSocketChannelClientProxy.h" #include "modules/websockets/WebSocketChannel.h" +#include "platform/wtf/PtrUtil.h" #include "platform/wtf/text/CString.h" #include "platform/wtf/text/WTFString.h" #include "public/platform/WebURL.h" @@ -46,34 +47,31 @@ namespace blink { +std::unique_ptr<WebPepperSocket> WebPepperSocket::Create( + const WebDocument& document, + WebPepperSocketClient* client) { + DCHECK(client); + + return WTF::MakeUnique<WebPepperSocketImpl>(document, client); +} + WebPepperSocketImpl::WebPepperSocketImpl(const WebDocument& document, WebPepperSocketClient* client) : client_(client), channel_proxy_(WebPepperSocketChannelClientProxy::Create(this)), - binary_type_(kBinaryTypeBlob), is_closing_or_closed_(false), buffered_amount_(0), buffered_amount_after_close_(0) { Document* core_document = document; private_ = DocumentWebSocketChannel::Create( core_document, channel_proxy_.Get(), SourceLocation::Capture()); + DCHECK(private_); } WebPepperSocketImpl::~WebPepperSocketImpl() { private_->Disconnect(); } -WebPepperSocket::BinaryType WebPepperSocketImpl::GetBinaryType() const { - return binary_type_; -} - -bool WebPepperSocketImpl::SetBinaryType(BinaryType binary_type) { - if (binary_type > kBinaryTypeArrayBuffer) - return false; - binary_type_ = binary_type; - return true; -} - void WebPepperSocketImpl::Connect(const WebURL& url, const WebString& protocol) { private_->Connect(url, protocol); @@ -83,10 +81,6 @@ return subprotocol_; } -WebString WebPepperSocketImpl::Extensions() { - return extensions_; -} - bool WebPepperSocketImpl::SendText(const WebString& message) { String core_message = message; CString encoded_message = core_message.Utf8(); @@ -123,10 +117,6 @@ return true; } -unsigned long WebPepperSocketImpl::BufferedAmount() const { - return buffered_amount_; -} - void WebPepperSocketImpl::Close(int code, const WebString& reason) { is_closing_or_closed_ = true; private_->Close(code, reason); @@ -148,7 +138,6 @@ // FIXME: Deprecate these statements. subprotocol_ = subprotocol; - extensions_ = extensions; client_->DidConnect(); } @@ -158,15 +147,8 @@ void WebPepperSocketImpl::DidReceiveBinaryMessage( std::unique_ptr<Vector<char>> payload) { - switch (binary_type_) { - case kBinaryTypeBlob: - // FIXME: Handle Blob after supporting WebBlob. - break; - case kBinaryTypeArrayBuffer: - client_->DidReceiveArrayBuffer(WebArrayBuffer( - DOMArrayBuffer::Create(payload->data(), payload->size()))); - break; - } + client_->DidReceiveArrayBuffer( + WebArrayBuffer(DOMArrayBuffer::Create(payload->data(), payload->size()))); } void WebPepperSocketImpl::DidError() {
diff --git a/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.h b/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.h index 6446b45..1bf66f0 100644 --- a/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.h +++ b/third_party/WebKit/Source/modules/websockets/WebPepperSocketImpl.h
@@ -52,16 +52,11 @@ WebPepperSocketImpl(const WebDocument&, WebPepperSocketClient*); ~WebPepperSocketImpl() override; - bool IsNull() const { return !private_; } - - BinaryType GetBinaryType() const override; - bool SetBinaryType(BinaryType) override; + // WebPepperSocket implementation. void Connect(const WebURL&, const WebString& protocol) override; WebString Subprotocol() override; - WebString Extensions() override; bool SendText(const WebString&) override; bool SendArrayBuffer(const WebArrayBuffer&) override; - unsigned long BufferedAmount() const override; void Close(int code, const WebString& reason) override; void Fail(const WebString& reason) override; void Disconnect() override; @@ -82,9 +77,7 @@ Persistent<WebSocketChannel> private_; WebPepperSocketClient* client_; Persistent<WebPepperSocketChannelClientProxy> channel_proxy_; - BinaryType binary_type_; WebString subprotocol_; - WebString extensions_; bool is_closing_or_closed_; // m_bufferedAmount includes m_bufferedAmountAfterClose. unsigned long buffered_amount_;
diff --git a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp index e554812..db939766 100644 --- a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp +++ b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
@@ -132,10 +132,13 @@ // can be serialized. SkBitmap bitmap; const SkRect mask_record_bounds = reflection.MaskBounds(); - SkScalar mask_buffer_size = mask_record_bounds.width() * mask_record_bounds.height(); + SkRect mask_bounds_rounded; + mask_record_bounds.roundOut(&mask_bounds_rounded); + SkScalar mask_buffer_size = + mask_bounds_rounded.width() * mask_bounds_rounded.height(); if (mask_buffer_size < kMaxMaskBufferSize && mask_buffer_size > 0.0f) { bitmap.allocPixels(SkImageInfo::MakeN32Premul( - mask_record_bounds.width(), mask_record_bounds.height())); + mask_bounds_rounded.width(), mask_bounds_rounded.height())); SkiaPaintCanvas canvas(bitmap); canvas.clear(SK_ColorTRANSPARENT); canvas.translate(-mask_record_bounds.x(), -mask_record_bounds.y());
diff --git a/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp b/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp index 8f4bf08..f193cff 100644 --- a/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp +++ b/third_party/WebKit/Source/platform/loader/fetch/Resource.cpp
@@ -435,8 +435,19 @@ bool Resource::IsEligibleForIntegrityCheck( SecurityOrigin* security_origin) const { - return security_origin->CanRequest(GetResourceRequest().Url()) || - PassesAccessControlCheck(security_origin); + // Service workers do separate CORS checks. We need to check for opaque + // responses even if the response would otherwise be same origin. + if (GetResponse().WasFetchedViaServiceWorker()) { + return GetResponse().ServiceWorkerResponseType() != + kWebServiceWorkerResponseTypeOpaque; + } + + // Same origin, no CORS checks needed: + if (security_origin->CanRequest(GetResourceRequest().Url())) + return true; + + // Perform standard CORS check: + return PassesAccessControlCheck(security_origin); } void Resource::SetIntegrityDisposition(
diff --git a/third_party/WebKit/public/web/WebPepperSocket.h b/third_party/WebKit/public/web/WebPepperSocket.h index 5b0d6345f..fa83074 100644 --- a/third_party/WebKit/public/web/WebPepperSocket.h +++ b/third_party/WebKit/public/web/WebPepperSocket.h
@@ -31,6 +31,7 @@ #ifndef WebPepperSocket_h #define WebPepperSocket_h +#include <memory> #include "public/platform/WebCommon.h" #include "public/platform/WebPrivatePtr.h" #include "public/platform/WebString.h" @@ -63,28 +64,15 @@ kCloseEventCodeMaximumUserDefined = 4999 }; - enum BinaryType { kBinaryTypeBlob = 0, kBinaryTypeArrayBuffer = 1 }; - - BLINK_EXPORT static WebPepperSocket* Create(const WebDocument&, - WebPepperSocketClient*); + BLINK_EXPORT static std::unique_ptr<WebPepperSocket> Create( + const WebDocument&, + WebPepperSocketClient*); virtual ~WebPepperSocket() {} - // These functions come from binaryType attribute of the WebSocket API - // specification. It specifies binary object type for receiving binary - // frames representation. Receiving text frames are always mapped to - // WebString type regardless of this attribute. - // Default type is BinaryTypeBlob. But currently it is not supported. - // Set BinaryTypeArrayBuffer here ahead of using binary communication. - // See also, The WebSocket API - http://www.w3.org/TR/websockets/ . - virtual BinaryType GetBinaryType() const = 0; - virtual bool SetBinaryType(BinaryType) = 0; - virtual void Connect(const WebURL&, const WebString& protocol) = 0; - virtual WebString Subprotocol() { return WebString(); } - virtual WebString Extensions() { return WebString(); } + virtual WebString Subprotocol() = 0; virtual bool SendText(const WebString&) = 0; virtual bool SendArrayBuffer(const WebArrayBuffer&) = 0; - virtual unsigned long BufferedAmount() const { return 0; } virtual void Close(int code, const WebString& reason) = 0; virtual void Fail(const WebString& reason) = 0; virtual void Disconnect() = 0;
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 3b10a50..2de515a 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -2542,6 +2542,10 @@ <int value="171" label="RFH_BASE_URL_FOR_DATA_URL_SPECIFIED"/> <int value="172" label="RFPH_ILLEGAL_UPLOAD_PARAMS"/> <int value="173" label="SWDH_PROVIDER_CREATED_ILLEGAL_TYPE"/> + <int value="174" label="SWDH_PROVIDER_CREATED_ILLEGAL_TYPE_NOT_WINDOW"/> + <int value="175" label="SWDH_PROVIDER_CREATED_ILLEGAL_TYPE_CONTROLLER"/> + <int value="176" label="SWDH_PROVIDER_CREATED_DUPLICATE_ID"/> + <int value="177" label="SWDH_PROVIDER_CREATED_BAD_ID"/> </enum> <enum name="BadMessageReasonExtensions">