Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: third_party/WebKit/Source/modules/imagecapture/ImageCapture.cpp

Issue 2795923003: Image Capture: remove MediaSettingsRange.current (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/imagecapture/ImageCapture.h" 5 #include "modules/imagecapture/ImageCapture.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "core/dom/DOMException.h" 9 #include "core/dom/DOMException.h"
10 #include "core/dom/ExceptionCode.h" 10 #include "core/dom/ExceptionCode.h"
11 #include "core/fileapi/Blob.h" 11 #include "core/fileapi/Blob.h"
12 #include "core/frame/ImageBitmap.h" 12 #include "core/frame/ImageBitmap.h"
13 #include "modules/EventTargetModules.h" 13 #include "modules/EventTargetModules.h"
14 #include "modules/imagecapture/MediaSettingsRange.h" 14 #include "modules/imagecapture/MediaSettingsRange.h"
15 #include "modules/imagecapture/PhotoCapabilities.h" 15 #include "modules/imagecapture/PhotoCapabilities.h"
16 #include "modules/imagecapture/PhotoSettings.h" 16 #include "modules/imagecapture/PhotoSettings.h"
17 #include "modules/mediastream/MediaStreamTrack.h" 17 #include "modules/mediastream/MediaStreamTrack.h"
18 #include "modules/mediastream/MediaTrackCapabilities.h" 18 #include "modules/mediastream/MediaTrackCapabilities.h"
19 #include "modules/mediastream/MediaTrackSettings.h"
20 #include "platform/WaitableEvent.h" 19 #include "platform/WaitableEvent.h"
21 #include "platform/mojo/MojoHelper.h" 20 #include "platform/mojo/MojoHelper.h"
22 #include "public/platform/InterfaceProvider.h" 21 #include "public/platform/InterfaceProvider.h"
23 #include "public/platform/Platform.h" 22 #include "public/platform/Platform.h"
24 #include "public/platform/WebImageCaptureFrameGrabber.h" 23 #include "public/platform/WebImageCaptureFrameGrabber.h"
25 #include "public/platform/WebMediaStreamTrack.h" 24 #include "public/platform/WebMediaStreamTrack.h"
26 #include "wtf/PtrUtil.h" 25 #include "wtf/PtrUtil.h"
27 26
28 namespace blink { 27 namespace blink {
29 28
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 convertToBaseCallback(WTF::bind( 363 convertToBaseCallback(WTF::bind(
365 &ImageCapture::onSetOptions, wrapPersistent(this), 364 &ImageCapture::onSetOptions, wrapPersistent(this),
366 wrapPersistent(resolver)))); 365 wrapPersistent(resolver))));
367 } 366 }
368 367
369 const MediaTrackConstraintSet& ImageCapture::getMediaTrackConstraints() const { 368 const MediaTrackConstraintSet& ImageCapture::getMediaTrackConstraints() const {
370 return m_currentConstraints; 369 return m_currentConstraints;
371 } 370 }
372 371
373 void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const { 372 void ImageCapture::getMediaTrackSettings(MediaTrackSettings& settings) const {
374 if (m_capabilities.hasWhiteBalanceMode()) 373 settings = m_settings;
375 settings.setWhiteBalanceMode(m_capabilities.whiteBalanceMode()[0]);
376 if (m_capabilities.hasExposureMode())
377 settings.setExposureMode(m_capabilities.exposureMode()[0]);
378 if (m_capabilities.hasFocusMode())
379 settings.setFocusMode(m_capabilities.focusMode()[0]);
380
381 if (!m_currentPointsOfInterest.isEmpty())
382 settings.setPointsOfInterest(m_currentPointsOfInterest);
383
384 if (m_capabilities.hasExposureCompensation()) {
385 settings.setExposureCompensation(
386 m_capabilities.exposureCompensation()->current());
387 }
388 if (m_capabilities.hasColorTemperature())
389 settings.setColorTemperature(m_capabilities.colorTemperature()->current());
390 if (m_capabilities.hasIso())
391 settings.setIso(m_capabilities.iso()->current());
392
393 if (m_capabilities.hasBrightness())
394 settings.setBrightness(m_capabilities.brightness()->current());
395 if (m_capabilities.hasContrast())
396 settings.setContrast(m_capabilities.contrast()->current());
397 if (m_capabilities.hasSaturation())
398 settings.setSaturation(m_capabilities.saturation()->current());
399 if (m_capabilities.hasSharpness())
400 settings.setSharpness(m_capabilities.sharpness()->current());
401
402 if (m_capabilities.hasZoom())
403 settings.setZoom(m_capabilities.zoom()->current());
404 if (m_capabilities.hasTorch())
405 settings.setTorch(m_capabilities.torch());
406 } 374 }
407 375
408 ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track) 376 ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track)
409 : ContextLifecycleObserver(context), m_streamTrack(track) { 377 : ContextLifecycleObserver(context), m_streamTrack(track) {
410 DCHECK(m_streamTrack); 378 DCHECK(m_streamTrack);
411 DCHECK(!m_service.is_bound()); 379 DCHECK(!m_service.is_bound());
412 380
413 Platform::current()->interfaceProvider()->getInterface( 381 Platform::current()->interfaceProvider()->getInterface(
414 mojo::MakeRequest(&m_service)); 382 mojo::MakeRequest(&m_service));
415 383
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 if (!capabilities.is_null()) 457 if (!capabilities.is_null())
490 onCapabilitiesUpdateInternal(*capabilities); 458 onCapabilitiesUpdateInternal(*capabilities);
491 } 459 }
492 460
493 void ImageCapture::onCapabilitiesUpdateInternal( 461 void ImageCapture::onCapabilitiesUpdateInternal(
494 const media::mojom::blink::PhotoCapabilities& capabilities) { 462 const media::mojom::blink::PhotoCapabilities& capabilities) {
495 // TODO(mcasas): adapt the mojo interface to return a list of supported Modes 463 // TODO(mcasas): adapt the mojo interface to return a list of supported Modes
496 // when moving these out of PhotoCapabilities, https://crbug.com/700607. 464 // when moving these out of PhotoCapabilities, https://crbug.com/700607.
497 m_capabilities.setWhiteBalanceMode( 465 m_capabilities.setWhiteBalanceMode(
498 WTF::Vector<WTF::String>({toString(capabilities.white_balance_mode)})); 466 WTF::Vector<WTF::String>({toString(capabilities.white_balance_mode)}));
467 if (m_capabilities.hasWhiteBalanceMode())
468 m_settings.setWhiteBalanceMode(m_capabilities.whiteBalanceMode()[0]);
499 m_capabilities.setExposureMode( 469 m_capabilities.setExposureMode(
500 WTF::Vector<WTF::String>({toString(capabilities.exposure_mode)})); 470 WTF::Vector<WTF::String>({toString(capabilities.exposure_mode)}));
471 if (m_capabilities.hasExposureMode())
472 m_settings.setExposureMode(m_capabilities.exposureMode()[0]);
501 m_capabilities.setFocusMode( 473 m_capabilities.setFocusMode(
502 WTF::Vector<WTF::String>({toString(capabilities.focus_mode)})); 474 WTF::Vector<WTF::String>({toString(capabilities.focus_mode)}));
475 if (m_capabilities.hasFocusMode())
476 m_settings.setFocusMode(m_capabilities.focusMode()[0]);
503 477
478 HeapVector<Point2D> currentPointsOfInterest;
504 if (!capabilities.points_of_interest.isEmpty()) { 479 if (!capabilities.points_of_interest.isEmpty()) {
505 m_currentPointsOfInterest.clear();
506 for (const auto& point : capabilities.points_of_interest) { 480 for (const auto& point : capabilities.points_of_interest) {
507 Point2D webPoint; 481 Point2D webPoint;
508 webPoint.setX(point->x); 482 webPoint.setX(point->x);
509 webPoint.setY(point->y); 483 webPoint.setY(point->y);
510 m_currentPointsOfInterest.push_back(mojo::Clone(webPoint)); 484 currentPointsOfInterest.push_back(std::move(webPoint));
Reilly Grant (use Gerrit) 2017/04/04 22:46:29 The Point2D type doesn't have a move constructor s
mcasas 2017/04/04 22:59:47 Done.
511 } 485 }
512 } 486 }
487 m_settings.setPointsOfInterest(std::move(currentPointsOfInterest));
513 488
514 // TODO(mcasas): Remove the explicit MediaSettingsRange::create() when 489 // TODO(mcasas): Remove the explicit MediaSettingsRange::create() when
515 // mojo::StructTraits supports garbage-collected mappings, 490 // mojo::StructTraits supports garbage-collected mappings,
516 // https://crbug.com/700180. 491 // https://crbug.com/700180.
517 if (capabilities.exposure_compensation->max != 492 if (capabilities.exposure_compensation->max !=
518 capabilities.exposure_compensation->min) { 493 capabilities.exposure_compensation->min) {
519 m_capabilities.setExposureCompensation( 494 m_capabilities.setExposureCompensation(
520 MediaSettingsRange::create(*capabilities.exposure_compensation)); 495 MediaSettingsRange::create(*capabilities.exposure_compensation));
496 m_settings.setExposureCompensation(
497 capabilities.exposure_compensation->current);
521 } 498 }
522 if (capabilities.color_temperature->max != 499 if (capabilities.color_temperature->max !=
523 capabilities.color_temperature->min) { 500 capabilities.color_temperature->min) {
524 m_capabilities.setColorTemperature( 501 m_capabilities.setColorTemperature(
525 MediaSettingsRange::create(*capabilities.color_temperature)); 502 MediaSettingsRange::create(*capabilities.color_temperature));
503 m_settings.setColorTemperature(capabilities.color_temperature->current);
526 } 504 }
527 if (capabilities.iso->max != capabilities.iso->min) 505 if (capabilities.iso->max != capabilities.iso->min) {
528 m_capabilities.setIso(MediaSettingsRange::create(*capabilities.iso)); 506 m_capabilities.setIso(MediaSettingsRange::create(*capabilities.iso));
507 m_settings.setIso(capabilities.iso->current);
508 }
529 509
530 if (capabilities.brightness->max != capabilities.brightness->min) { 510 if (capabilities.brightness->max != capabilities.brightness->min) {
531 m_capabilities.setBrightness( 511 m_capabilities.setBrightness(
532 MediaSettingsRange::create(*capabilities.brightness)); 512 MediaSettingsRange::create(*capabilities.brightness));
513 m_settings.setBrightness(capabilities.brightness->current);
533 } 514 }
534 if (capabilities.contrast->max != capabilities.contrast->min) { 515 if (capabilities.contrast->max != capabilities.contrast->min) {
535 m_capabilities.setContrast( 516 m_capabilities.setContrast(
536 MediaSettingsRange::create(*capabilities.contrast)); 517 MediaSettingsRange::create(*capabilities.contrast));
518 m_settings.setContrast(capabilities.contrast->current);
537 } 519 }
538 if (capabilities.saturation->max != capabilities.saturation->min) { 520 if (capabilities.saturation->max != capabilities.saturation->min) {
539 m_capabilities.setSaturation( 521 m_capabilities.setSaturation(
540 MediaSettingsRange::create(*capabilities.saturation)); 522 MediaSettingsRange::create(*capabilities.saturation));
523 m_settings.setSaturation(capabilities.saturation->current);
541 } 524 }
542 if (capabilities.sharpness->max != capabilities.sharpness->min) { 525 if (capabilities.sharpness->max != capabilities.sharpness->min) {
543 m_capabilities.setSharpness( 526 m_capabilities.setSharpness(
544 MediaSettingsRange::create(*capabilities.sharpness)); 527 MediaSettingsRange::create(*capabilities.sharpness));
528 m_settings.setSharpness(capabilities.sharpness->current);
545 } 529 }
546 530
547 if (capabilities.zoom->max != capabilities.zoom->min) 531 if (capabilities.zoom->max != capabilities.zoom->min) {
548 m_capabilities.setZoom(MediaSettingsRange::create(*capabilities.zoom)); 532 m_capabilities.setZoom(MediaSettingsRange::create(*capabilities.zoom));
533 m_settings.setZoom(capabilities.zoom->current);
534 }
549 535
550 m_capabilities.setTorch(capabilities.torch); 536 m_capabilities.setTorch(capabilities.torch);
551 537
552 // TODO(mcasas): do |torch| when the mojom interface is updated, 538 // TODO(mcasas): do |torch| when the mojom interface is updated,
553 // https://crbug.com/700607. 539 // https://crbug.com/700607.
554 } 540 }
555 541
556 void ImageCapture::onServiceConnectionError() { 542 void ImageCapture::onServiceConnectionError() {
557 m_service.reset(); 543 m_service.reset();
558 for (ScriptPromiseResolver* resolver : m_serviceRequests) 544 for (ScriptPromiseResolver* resolver : m_serviceRequests)
559 resolver->reject(DOMException::create(NotFoundError, kNoServiceError)); 545 resolver->reject(DOMException::create(NotFoundError, kNoServiceError));
560 m_serviceRequests.clear(); 546 m_serviceRequests.clear();
561 } 547 }
562 548
563 DEFINE_TRACE(ImageCapture) { 549 DEFINE_TRACE(ImageCapture) {
564 visitor->trace(m_streamTrack); 550 visitor->trace(m_streamTrack);
565 visitor->trace(m_capabilities); 551 visitor->trace(m_capabilities);
552 visitor->trace(m_settings);
566 visitor->trace(m_currentConstraints); 553 visitor->trace(m_currentConstraints);
567 visitor->trace(m_currentPointsOfInterest);
568 visitor->trace(m_serviceRequests); 554 visitor->trace(m_serviceRequests);
569 EventTargetWithInlineData::trace(visitor); 555 EventTargetWithInlineData::trace(visitor);
570 ContextLifecycleObserver::trace(visitor); 556 ContextLifecycleObserver::trace(visitor);
571 } 557 }
572 558
573 } // namespace blink 559 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698