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

Side by Side Diff: Source/devtools/front_end/sdk/OverridesSupport.js

Issue 342443002: [DevTools] Ability to emulate touch or user agent, even when device emulation is turned off. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 508
509 /** 509 /**
510 * @param {string} deviceMetrics 510 * @param {string} deviceMetrics
511 * @param {string} userAgent 511 * @param {string} userAgent
512 */ 512 */
513 emulateDevice: function(deviceMetrics, userAgent) 513 emulateDevice: function(deviceMetrics, userAgent)
514 { 514 {
515 var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(d eviceMetrics); 515 var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(d eviceMetrics);
516 this._deviceMetricsChangedListenerMuted = true; 516 this._deviceMetricsChangedListenerMuted = true;
517 this._userAgentChangedListenerMuted = true; 517 this._userAgentChangedListenerMuted = true;
518 this.settings.userAgent.set(userAgent); 518 this.settings.deviceUserAgent.set(userAgent);
519 this.settings.deviceWidth.set(metrics.width); 519 this.settings.deviceWidth.set(metrics.width);
520 this.settings.deviceHeight.set(metrics.height); 520 this.settings.deviceHeight.set(metrics.height);
521 this.settings.deviceScaleFactor.set(metrics.deviceScaleFactor); 521 this.settings.deviceScaleFactor.set(metrics.deviceScaleFactor);
522 this.settings.deviceTextAutosizing.set(metrics.textAutosizing); 522 this.settings.deviceTextAutosizing.set(metrics.textAutosizing);
523 this.settings.overrideUserAgent.set(true); 523 this.settings.deviceTouch.set(true);
524 this.settings.emulateTouchEvents.set(true);
525 this.settings.emulateViewport.set(true); 524 this.settings.emulateViewport.set(true);
526 this.settings.emulateDevice.set(true); 525 this.settings.emulateDevice.set(true);
527 delete this._deviceMetricsChangedListenerMuted; 526 delete this._deviceMetricsChangedListenerMuted;
528 delete this._userAgentChangedListenerMuted; 527 delete this._userAgentChangedListenerMuted;
529 528
530 if (this._initialized) { 529 if (this._initialized) {
531 this._deviceMetricsChanged(); 530 this._deviceMetricsChanged();
532 this._userAgentChanged(); 531 this._userAgentChanged();
533 } 532 }
534 }, 533 },
535 534
536 /** 535 reset: function()
537 * @param {string} deviceMetrics
538 * @param {string} userAgent
539 * @return {boolean}
540 */
541 isEmulatingDevice: function(deviceMetrics, userAgent)
542 {
543 var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(d eviceMetrics);
544 return this.settings.userAgent.get() === userAgent
545 && this.settings.deviceWidth.get() === metrics.width
546 && this.settings.deviceHeight.get() === metrics.height
547 && this.settings.deviceScaleFactor.get() === metrics.deviceScaleFact or
548 && this.settings.deviceTextAutosizing.get() === metrics.textAutosizi ng
549 && this.settings.emulateTouchEvents.get()
550 && this.settings.emulateViewport.get();
551 },
552
553 resetEmulatedDevice: function()
554 { 536 {
555 this._deviceMetricsChangedListenerMuted = true; 537 this._deviceMetricsChangedListenerMuted = true;
556 this._userAgentChangedListenerMuted = true; 538 this._userAgentChangedListenerMuted = true;
557 this.settings.emulateDevice.set(false); 539 this.settings.emulateDevice.set(false);
540 this.settings.sensorsTouch.set(false);
558 this.settings.overrideUserAgent.set(false); 541 this.settings.overrideUserAgent.set(false);
559 this.settings.emulateTouchEvents.set(false); 542 this.settings.overrideDeviceOrientation.set(false);
560 this.settings.emulateViewport.set(false); 543 this.settings.overrideGeolocation.set(false);
544 this.settings.overrideCSSMedia.set(false);
561 delete this._deviceMetricsChangedListenerMuted; 545 delete this._deviceMetricsChangedListenerMuted;
562 delete this._userAgentChangedListenerMuted; 546 delete this._userAgentChangedListenerMuted;
563 547
564 if (this._initialized) { 548 if (this._initialized) {
565 this._deviceMetricsChanged(); 549 this._deviceMetricsChanged();
566 this._userAgentChanged(); 550 this._userAgentChanged();
567 } 551 }
568 }, 552 },
569 553
570 reset: function() 554 /**
555 * @param {string} deviceMetrics
556 * @param {string} userAgent
557 * @return {boolean}
558 */
559 isEmulatingDevice: function(deviceMetrics, userAgent)
571 { 560 {
572 this.settings.overrideDeviceOrientation.set(false); 561 var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(d eviceMetrics);
573 this.settings.overrideGeolocation.set(false); 562 return this.settings.deviceUserAgent.get() === userAgent
574 this.settings.overrideCSSMedia.set(false); 563 && this.settings.deviceWidth.get() === metrics.width
575 this.resetEmulatedDevice(); 564 && this.settings.deviceHeight.get() === metrics.height
565 && this.settings.deviceScaleFactor.get() === metrics.deviceScaleFact or
566 && this.settings.deviceTextAutosizing.get() === metrics.textAutosizi ng
567 && this.settings.deviceTouch.get()
568 && this.settings.emulateViewport.get();
576 }, 569 },
577 570
578 applyInitialOverrides: function() 571 applyInitialOverrides: function()
579 { 572 {
580 if (!this._target) { 573 if (!this._target) {
581 this._applyInitialOverridesOnTargetAdded = true; 574 this._applyInitialOverridesOnTargetAdded = true;
582 return; 575 return;
583 } 576 }
584 577
585 this._initialized = true; 578 this._initialized = true;
586 579
580 this._addEmulateDeviceListener(this._userAgentChanged);
581 this.settings.deviceUserAgent.addChangeListener(this._userAgentChanged, this);
587 this.settings.overrideUserAgent.addChangeListener(this._userAgentChanged , this); 582 this.settings.overrideUserAgent.addChangeListener(this._userAgentChanged , this);
588 this.settings.userAgent.addChangeListener(this._userAgentChanged, this); 583 this.settings.userAgent.addChangeListener(this._userAgentChanged, this);
589 this.settings.emulateDevice.addChangeListener(this._updateUserAgentAndTo uchOnEmulateDeviceChanged, this);
590 584
591 this.settings.emulateDevice.addChangeListener(this._deviceMetricsChanged , this); 585 this._addEmulateDeviceListener(this._deviceMetricsChanged);
592 this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged, this); 586 this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged, this);
593 this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged, this); 587 this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged, this);
594 this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsCha nged, this); 588 this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsCha nged, this);
595 this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetrics Changed, this); 589 this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetrics Changed, this);
596 this.settings.emulateViewport.addChangeListener(this._deviceMetricsChang ed, this); 590 this.settings.emulateViewport.addChangeListener(this._deviceMetricsChang ed, this);
597 this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChang ed, this); 591 this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChang ed, this);
598 WebInspector.settings.responsiveDesign.enabled.addChangeListener(this._d eviceMetricsChanged, this);
599 592
600 this.settings.overrideGeolocation.addChangeListener(this._geolocationPos itionChanged, this); 593 this.settings.overrideGeolocation.addChangeListener(this._geolocationPos itionChanged, this);
601 this.settings.geolocationOverride.addChangeListener(this._geolocationPos itionChanged, this); 594 this.settings.geolocationOverride.addChangeListener(this._geolocationPos itionChanged, this);
602 595
603 this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOr ientationChanged, this); 596 this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOr ientationChanged, this);
604 this.settings.deviceOrientationOverride.addChangeListener(this._deviceOr ientationChanged, this); 597 this.settings.deviceOrientationOverride.addChangeListener(this._deviceOr ientationChanged, this);
605 598
606 this.settings.emulateDevice.addChangeListener(this._emulateTouchEventsCh anged, this); 599 this._addEmulateDeviceListener(this._emulateTouchEventsChanged);
607 this.settings.emulateTouchEvents.addChangeListener(this._emulateTouchEve ntsChanged, this); 600 this.settings.deviceTouch.addChangeListener(this._emulateTouchEventsChan ged, this);
608 this.settings.emulateDevice.addChangeListener(this._updateUserAgentAndTo uchOnEmulateDeviceChanged, this); 601 this.settings.sensorsTouch.addChangeListener(this._emulateTouchEventsCha nged, this);
609 602
610 this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged, this); 603 this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged, this);
611 this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged, this); 604 this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged, this);
612 605
613 this.settings.emulateNetworkConditions.addChangeListener(this._networkCo nditionsChanged, this); 606 this.settings.emulateNetworkConditions.addChangeListener(this._networkCo nditionsChanged, this);
614 this.settings.networkConditionsDomains.addChangeListener(this._networkCo nditionsChanged, this); 607 this.settings.networkConditionsDomains.addChangeListener(this._networkCo nditionsChanged, this);
615 this.settings.networkConditionsThroughput.addChangeListener(this._networ kConditionsChanged, this); 608 this.settings.networkConditionsThroughput.addChangeListener(this._networ kConditionsChanged, this);
616 609
617 WebInspector.settings.showMetricsRulers.addChangeListener(this._showRule rsChanged, this); 610 WebInspector.settings.showMetricsRulers.addChangeListener(this._showRule rsChanged, this);
618 611
619 if (this.settings.overrideDeviceOrientation.get()) 612 if (this.settings.overrideDeviceOrientation.get())
620 this._deviceOrientationChanged(); 613 this._deviceOrientationChanged();
621 614
622 if (this.settings.overrideGeolocation.get()) 615 if (this.settings.overrideGeolocation.get())
623 this._geolocationPositionChanged(); 616 this._geolocationPositionChanged();
624 617
625 if (this.settings.emulateTouchEvents.get() && (this.settings.emulateDevi ce.get() || !this._responsiveDesignAvailable)) 618 if (this.isTouchEmulationEnabled())
626 this._emulateTouchEventsChanged(); 619 this._emulateTouchEventsChanged();
627 620
628 if (this.settings.overrideCSSMedia.get()) 621 if (this.settings.overrideCSSMedia.get())
629 this._cssMediaChanged(); 622 this._cssMediaChanged();
630 623
631 if (this.settings.emulateDevice.get()) 624 if (this.settings.emulateDevice.get())
632 this._deviceMetricsChanged(); 625 this._deviceMetricsChanged();
633 626
634 if (this.settings.overrideUserAgent.get()) 627 if (this.userAgentOverride())
635 this._userAgentChanged(); 628 this._userAgentChanged();
636 629
637 if (this.settings.emulateNetworkConditions.get()) 630 if (this.settings.emulateNetworkConditions.get())
638 this._networkConditionsChanged(); 631 this._networkConditionsChanged();
639 632
640 this._showRulersChanged(); 633 this._showRulersChanged();
641 }, 634 },
642 635
643 _updateUserAgentAndTouchOnEmulateDeviceChanged: function() 636 /**
637 * @param {function(this:WebInspector.OverridesSupport)} listener
638 */
639 _addEmulateDeviceListener: function(listener)
644 { 640 {
645 var value = this.settings.emulateDevice.get(); 641 this.settings.emulateDevice.addChangeListener(listener, this);
646 if (this.settings.overrideUserAgent.get() !== value) 642 WebInspector.settings.responsiveDesign.enabled.addChangeListener(listene r, this);
647 this.settings.overrideUserAgent.set(value);
648 if (this.settings.emulateTouchEvents.get() !== value && !this._responsiv eDesignAvailable)
649 this.settings.emulateTouchEvents.set(value);
650 }, 643 },
651 644
652 _userAgentChanged: function() 645 _userAgentChanged: function()
653 { 646 {
654 if (this._userAgentChangedListenerMuted) 647 if (this._userAgentChangedListenerMuted)
655 return; 648 return;
656 var userAgent = this.settings.overrideUserAgent.get() ? this.settings.us erAgent.get() : ""; 649 var userAgent = this.userAgentOverride();
657 NetworkAgent.setUserAgentOverride(userAgent); 650 NetworkAgent.setUserAgentOverride(userAgent);
658 if (this._userAgent !== userAgent) 651 if (this._userAgent !== userAgent)
659 this._updateUserAgentWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering." )); 652 this._updateUserAgentWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering." ));
660 this._userAgent = userAgent; 653 this._userAgent = userAgent;
661 this.maybeHasActiveOverridesChanged(); 654 this.maybeHasActiveOverridesChanged();
662 }, 655 },
663 656
664 _onPageResizerAvailableSizeChanged: function() 657 _onPageResizerAvailableSizeChanged: function()
665 { 658 {
666 if (this._initialized) 659 if (this._initialized)
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 return; 784 return;
792 } 785 }
793 786
794 var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation. parseSetting(this.settings.deviceOrientationOverride.get()); 787 var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation. parseSetting(this.settings.deviceOrientationOverride.get());
795 PageAgent.setDeviceOrientationOverride(deviceOrientation.alpha, deviceOr ientation.beta, deviceOrientation.gamma); 788 PageAgent.setDeviceOrientationOverride(deviceOrientation.alpha, deviceOr ientation.beta, deviceOrientation.gamma);
796 this.maybeHasActiveOverridesChanged(); 789 this.maybeHasActiveOverridesChanged();
797 }, 790 },
798 791
799 _emulateTouchEventsChanged: function() 792 _emulateTouchEventsChanged: function()
800 { 793 {
801 if (this.hasTouchInputs() && this.settings.emulateTouchEvents.get()) 794 var emulateTouch = this.isTouchEmulationEnabled();
802 return;
803
804 var emulateTouch = this.settings.emulateTouchEvents.get() && (this.setti ngs.emulateDevice.get() || !this._responsiveDesignAvailable);
805 var targets = WebInspector.targetManager.targets(); 795 var targets = WebInspector.targetManager.targets();
806 for (var i = 0; i < targets.length; ++i) 796 for (var i = 0; i < targets.length; ++i)
807 targets[i].domModel.emulateTouchEventObjects(emulateTouch); 797 targets[i].domModel.emulateTouchEventObjects(emulateTouch);
808 this.maybeHasActiveOverridesChanged(); 798 this.maybeHasActiveOverridesChanged();
809 }, 799 },
810 800
811 _cssMediaChanged: function() 801 _cssMediaChanged: function()
812 { 802 {
813 if (this.isInspectingDevice() && this.settings.overrideCSSMedia.get()) 803 if (this.isInspectingDevice() && this.settings.overrideCSSMedia.get())
814 return; 804 return;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 * @return {boolean} 844 * @return {boolean}
855 */ 845 */
856 hasActiveOverrides: function() 846 hasActiveOverrides: function()
857 { 847 {
858 return this._hasActiveOverrides; 848 return this._hasActiveOverrides;
859 }, 849 },
860 850
861 maybeHasActiveOverridesChanged: function() 851 maybeHasActiveOverridesChanged: function()
862 { 852 {
863 var hasActiveOverrides = 853 var hasActiveOverrides =
864 this.settings.overrideUserAgent.get() || 854 !!this.userAgentOverride() ||
865 (this.settings.emulateDevice.get() && !this.isInspectingDevice()) || 855 (this.settings.emulateDevice.get() && !this.isInspectingDevice()) ||
866 this.settings.overrideGeolocation.get() || 856 this.settings.overrideGeolocation.get() ||
867 this.settings.overrideDeviceOrientation.get() || 857 this.settings.overrideDeviceOrientation.get() ||
868 (this.settings.emulateTouchEvents.get() && this.settings.emulateDevi ce.get() && !this.hasTouchInputs()) || 858 this.isTouchEmulationEnabled() ||
869 (this.settings.overrideCSSMedia.get() && !this.isInspectingDevice()) ; 859 (this.settings.overrideCSSMedia.get() && !this.isInspectingDevice()) ;
870 if (this._hasActiveOverrides !== hasActiveOverrides) { 860 if (this._hasActiveOverrides !== hasActiveOverrides) {
871 this._hasActiveOverrides = hasActiveOverrides; 861 this._hasActiveOverrides = hasActiveOverrides;
872 this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.H asActiveOverridesChanged); 862 this.dispatchEventToListeners(WebInspector.OverridesSupport.Events.H asActiveOverridesChanged);
873 } 863 }
874 }, 864 },
875 865
876 _onMainFrameNavigated: function() 866 _onMainFrameNavigated: function()
877 { 867 {
878 if (this._initialized) 868 if (this._initialized)
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 this.settings.userAgent = WebInspector.settings.createSetting("userAgent ", ""); 912 this.settings.userAgent = WebInspector.settings.createSetting("userAgent ", "");
923 913
924 this.settings.emulateDevice = WebInspector.settings.createSetting("emula teDevice", false); 914 this.settings.emulateDevice = WebInspector.settings.createSetting("emula teDevice", false);
925 this.settings.deviceWidth = WebInspector.settings.createSetting("deviceW idth", 800); 915 this.settings.deviceWidth = WebInspector.settings.createSetting("deviceW idth", 800);
926 this.settings.deviceHeight = WebInspector.settings.createSetting("device Height", 600); 916 this.settings.deviceHeight = WebInspector.settings.createSetting("device Height", 600);
927 this.settings.deviceScaleFactor = WebInspector.settings.createSetting("d eviceScaleFactor", window.devicePixelRatio); 917 this.settings.deviceScaleFactor = WebInspector.settings.createSetting("d eviceScaleFactor", window.devicePixelRatio);
928 this.settings.deviceTextAutosizing = WebInspector.settings.createSetting ("deviceTextAutosizing", true); 918 this.settings.deviceTextAutosizing = WebInspector.settings.createSetting ("deviceTextAutosizing", true);
929 this.settings.deviceFitWindow = WebInspector.settings.createSetting("dev iceFitWindow", true); 919 this.settings.deviceFitWindow = WebInspector.settings.createSetting("dev iceFitWindow", true);
930 // FIXME: rename viewport to mobile everywhere in the code. 920 // FIXME: rename viewport to mobile everywhere in the code.
931 this.settings.emulateViewport = WebInspector.settings.createSetting("emu lateViewport", false); 921 this.settings.emulateViewport = WebInspector.settings.createSetting("emu lateViewport", false);
932 this.settings.emulateTouchEvents = WebInspector.settings.createSetting(" emulateTouchEvents", false); 922 this.settings.deviceTouch = WebInspector.settings.createSetting("deviceT ouch", false);
923 this.settings.deviceUserAgent = WebInspector.settings.createSetting("dev iceUserAgent", false);
933 924
934 this.settings.overrideGeolocation = WebInspector.settings.createSetting( "overrideGeolocation", false); 925 this.settings.overrideGeolocation = WebInspector.settings.createSetting( "overrideGeolocation", false);
935 this.settings.geolocationOverride = WebInspector.settings.createSetting( "geolocationOverride", ""); 926 this.settings.geolocationOverride = WebInspector.settings.createSetting( "geolocationOverride", "");
936 this.settings.overrideDeviceOrientation = WebInspector.settings.createSe tting("overrideDeviceOrientation", false); 927 this.settings.overrideDeviceOrientation = WebInspector.settings.createSe tting("overrideDeviceOrientation", false);
937 this.settings.deviceOrientationOverride = WebInspector.settings.createSe tting("deviceOrientationOverride", ""); 928 this.settings.deviceOrientationOverride = WebInspector.settings.createSe tting("deviceOrientationOverride", "");
938 this.settings.overrideCSSMedia = WebInspector.settings.createSetting("ov errideCSSMedia", false); 929 this.settings.overrideCSSMedia = WebInspector.settings.createSetting("ov errideCSSMedia", false);
939 this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("em ulatedCSSMedia", "print"); 930 this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("em ulatedCSSMedia", "print");
931 this.settings.sensorsTouch = WebInspector.settings.createSetting("sensor sTouch", false);
940 932
941 this.settings.emulateNetworkConditions = WebInspector.settings.createSet ting("emulateNetworkConditions", false); 933 this.settings.emulateNetworkConditions = WebInspector.settings.createSet ting("emulateNetworkConditions", false);
942 this.settings.networkConditionsDomains = WebInspector.settings.createSet ting("networkConditionsDomains", ""); 934 this.settings.networkConditionsDomains = WebInspector.settings.createSet ting("networkConditionsDomains", "");
943 this.settings.networkConditionsThroughput = WebInspector.settings.create Setting("networkConditionsThroughput", 0); 935 this.settings.networkConditionsThroughput = WebInspector.settings.create Setting("networkConditionsThroughput", 0);
944 936
945 this.maybeHasActiveOverridesChanged(); 937 this.maybeHasActiveOverridesChanged();
946 938
947 if (this._applyInitialOverridesOnTargetAdded) { 939 if (this._applyInitialOverridesOnTargetAdded) {
948 delete this._applyInitialOverridesOnTargetAdded; 940 delete this._applyInitialOverridesOnTargetAdded;
949 this.applyInitialOverrides(); 941 this.applyInitialOverrides();
(...skipping 20 matching lines...) Expand all
970 * @return {boolean} 962 * @return {boolean}
971 */ 963 */
972 isInspectingDevice: function() 964 isInspectingDevice: function()
973 { 965 {
974 return !!this._target && this._target.isMobile(); 966 return !!this._target && this._target.isMobile();
975 }, 967 },
976 968
977 /** 969 /**
978 * @return {boolean} 970 * @return {boolean}
979 */ 971 */
972 isEmulateDeviceEnabled: function()
973 {
974 return this.settings.emulateDevice.get() && (!this._responsiveDesignAvai lable || WebInspector.settings.responsiveDesign.enabled.get());
975 },
976
977 /**
978 * @return {boolean}
979 */
980 isTouchEmulationEnabled: function()
981 {
982 return !this.hasTouchInputs() && ((this.isEmulateDeviceEnabled() && this .settings.deviceTouch.get()) || this.settings.sensorsTouch.get());
983 },
984
985 /**
986 * @return {string}
987 */
988 userAgentOverride: function()
989 {
990 return this.isEmulateDeviceEnabled() ? this.settings.deviceUserAgent.get () : (this.settings.overrideUserAgent.get() ? this.settings.userAgent.get() : "" );
991 },
992
993 /**
994 * @return {boolean}
995 */
980 hasTouchInputs: function() 996 hasTouchInputs: function()
981 { 997 {
982 return !!this._target && this._target.hasTouchInputs; 998 return !!this._target && this._target.hasTouchInputs;
983 }, 999 },
984 1000
1001 updateSensorsTouchToMatchDeviceTouch: function()
1002 {
1003 var enabled = this.isEmulateDeviceEnabled() && this.settings.deviceTouch .get();
1004 if (this.settings.sensorsTouch.get() !== enabled)
1005 this.settings.sensorsTouch.set(enabled);
1006 },
1007
1008 updateUserAgentToMatchDeviceUserAgent: function()
1009 {
1010 var userAgent = this.settings.deviceUserAgent.get();
1011 if (this.isEmulateDeviceEnabled() && userAgent && this.settings.userAgen t.get() !== userAgent)
1012 this.settings.userAgent.set(userAgent);
1013 var enabled = this.isEmulateDeviceEnabled() && !!this.settings.deviceUse rAgent.get();
1014 if (this.settings.overrideUserAgent.get() !== enabled)
1015 this.settings.overrideUserAgent.set(enabled);
1016 },
1017
985 /** 1018 /**
986 * Compute the font scale factor. 1019 * Compute the font scale factor.
987 * 1020 *
988 * Chromium on Android uses a device scale adjustment for fonts used in text autosizing for 1021 * Chromium on Android uses a device scale adjustment for fonts used in text autosizing for
989 * improved legibility. This function computes this adjusted value for text autosizing. 1022 * improved legibility. This function computes this adjusted value for text autosizing.
990 * 1023 *
991 * For a description of the Android device scale adjustment algorithm, see: 1024 * For a description of the Android device scale adjustment algorithm, see:
992 * chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultipli er(...) 1025 * chrome/browser/chrome_content_browser_client.cc, GetFontScaleMultipli er(...)
993 * 1026 *
994 * @param {number} width 1027 * @param {number} width
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 1078
1046 deviceSelectElement.addEventListener("change", deviceSelected, false); 1079 deviceSelectElement.addEventListener("change", deviceSelected, false);
1047 1080
1048 var emulatedSettingChangedMuted = false; 1081 var emulatedSettingChangedMuted = false;
1049 WebInspector.overridesSupport.settings.deviceWidth.addChangeListener(emu latedSettingChanged); 1082 WebInspector.overridesSupport.settings.deviceWidth.addChangeListener(emu latedSettingChanged);
1050 WebInspector.overridesSupport.settings.deviceHeight.addChangeListener(em ulatedSettingChanged); 1083 WebInspector.overridesSupport.settings.deviceHeight.addChangeListener(em ulatedSettingChanged);
1051 WebInspector.overridesSupport.settings.deviceScaleFactor.addChangeListen er(emulatedSettingChanged); 1084 WebInspector.overridesSupport.settings.deviceScaleFactor.addChangeListen er(emulatedSettingChanged);
1052 WebInspector.overridesSupport.settings.deviceTextAutosizing.addChangeLis tener(emulatedSettingChanged); 1085 WebInspector.overridesSupport.settings.deviceTextAutosizing.addChangeLis tener(emulatedSettingChanged);
1053 WebInspector.overridesSupport.settings.emulateViewport.addChangeListener (emulatedSettingChanged); 1086 WebInspector.overridesSupport.settings.emulateViewport.addChangeListener (emulatedSettingChanged);
1054 WebInspector.overridesSupport.settings.deviceFitWindow.addChangeListener (emulatedSettingChanged); 1087 WebInspector.overridesSupport.settings.deviceFitWindow.addChangeListener (emulatedSettingChanged);
1055 WebInspector.overridesSupport.settings.emulateTouchEvents.addChangeListe ner(emulatedSettingChanged); 1088 WebInspector.overridesSupport.settings.deviceTouch.addChangeListener(emu latedSettingChanged);
1056 WebInspector.overridesSupport.settings.overrideUserAgent.addChangeListen er(emulatedSettingChanged); 1089 WebInspector.overridesSupport.settings.deviceUserAgent.addChangeListener (emulatedSettingChanged);
1057 WebInspector.overridesSupport.settings.userAgent.addChangeListener(emula tedSettingChanged);
1058 emulatedSettingChanged(); 1090 emulatedSettingChanged();
1059 1091
1060 function deviceSelected() 1092 function deviceSelected()
1061 { 1093 {
1062 if (deviceSelectElement.selectedIndex === devices.length - 1) 1094 if (deviceSelectElement.selectedIndex === devices.length - 1)
1063 return; 1095 return;
1064 1096
1065 var option = deviceSelectElement.options[deviceSelectElement.selecte dIndex]; 1097 var option = deviceSelectElement.options[deviceSelectElement.selecte dIndex];
1066 emulatedSettingChangedMuted = true; 1098 emulatedSettingChangedMuted = true;
1067 WebInspector.overridesSupport.emulateDevice(option.metrics, option.u serAgent); 1099 WebInspector.overridesSupport.emulateDevice(option.metrics, option.u serAgent);
(...skipping 14 matching lines...) Expand all
1082 } 1114 }
1083 } 1115 }
1084 deviceSelectElement.selectedIndex = index; 1116 deviceSelectElement.selectedIndex = index;
1085 } 1117 }
1086 1118
1087 return deviceSelectElement; 1119 return deviceSelectElement;
1088 }, 1120 },
1089 1121
1090 /** 1122 /**
1091 * @param {!Document} document 1123 * @param {!Document} document
1092 * @return {{select: !Element, input: !Element}}
1093 */
1094 createUserAgentSelectAndInput: function(document)
1095 {
1096 var overrideUserAgentSetting = WebInspector.overridesSupport.settings.ov errideUserAgent;
1097 var userAgentSetting = WebInspector.overridesSupport.settings.userAgent;
1098 var userAgents = WebInspector.OverridesSupport._userAgents.concat([[WebI nspector.UIString("Other"), "Other"]]);
1099
1100 var userAgentSelectElement = document.createElement("select");
1101 for (var i = 0; i < userAgents.length; ++i)
1102 userAgentSelectElement.add(new Option(userAgents[i][0], userAgents[i ][1]));
1103 userAgentSelectElement.selectedIndex = 0;
1104
1105 var otherUserAgentElement = document.createElement("input");
1106 otherUserAgentElement.type = "text";
1107 otherUserAgentElement.value = userAgentSetting.get();
1108 otherUserAgentElement.title = userAgentSetting.get();
1109
1110 settingChanged();
1111 userAgentSetting.addChangeListener(settingChanged);
1112 userAgentSelectElement.addEventListener("change", userAgentSelected, fal se);
1113
1114 otherUserAgentElement.addEventListener("dblclick", textDoubleClicked, tr ue);
1115 otherUserAgentElement.addEventListener("blur", textChanged, false);
1116 otherUserAgentElement.addEventListener("keydown", textKeyDown, false);
1117
1118 function userAgentSelected()
1119 {
1120 var value = userAgentSelectElement.options[userAgentSelectElement.se lectedIndex].value;
1121 if (value !== "Other") {
1122 userAgentSetting.removeChangeListener(settingChanged);
1123 userAgentSetting.set(value);
1124 userAgentSetting.addChangeListener(settingChanged);
1125 otherUserAgentElement.value = value;
1126 otherUserAgentElement.title = value;
1127 otherUserAgentElement.readOnly = true;
1128 } else {
1129 otherUserAgentElement.readOnly = !overrideUserAgentSetting.get() ;
1130 otherUserAgentElement.focus();
1131 }
1132 overrideUserAgentSetting.set(true);
1133 }
1134
1135 function settingChanged()
1136 {
1137 var value = userAgentSetting.get();
1138 var options = userAgentSelectElement.options;
1139 var selectionRestored = false;
1140 for (var i = 0; i < options.length; ++i) {
1141 if (options[i].value === value) {
1142 userAgentSelectElement.selectedIndex = i;
1143 selectionRestored = true;
1144 break;
1145 }
1146 }
1147
1148 otherUserAgentElement.readOnly = !overrideUserAgentSetting.get() || selectionRestored;
1149 if (!selectionRestored)
1150 userAgentSelectElement.selectedIndex = options.length - 1;
1151
1152 if (otherUserAgentElement.value !== value) {
1153 otherUserAgentElement.value = value;
1154 otherUserAgentElement.title = value;
1155 }
1156 }
1157
1158 function textKeyDown(event)
1159 {
1160 if (isEnterKey(event))
1161 textChanged();
1162 }
1163
1164 function textDoubleClicked()
1165 {
1166 userAgentSelectElement.selectedIndex = userAgents.length - 1;
1167 userAgentSelected();
1168 }
1169
1170 function textChanged()
1171 {
1172 if (userAgentSetting.get() !== otherUserAgentElement.value)
1173 userAgentSetting.set(otherUserAgentElement.value);
1174 }
1175
1176 overrideUserAgentSetting.addChangeListener(overrideUserAgentChanged);
1177 function overrideUserAgentChanged()
1178 {
1179 otherUserAgentElement.readOnly = !overrideUserAgentSetting.get() || (userAgentSelectElement.options[userAgentSelectElement.selectedIndex].value !== "Other");
1180 }
1181
1182 return { select: userAgentSelectElement, input: otherUserAgentElement };
1183 },
1184
1185 /**
1186 * @param {!Document} document
1187 * @return {!Element} 1124 * @return {!Element}
1188 */ 1125 */
1189 createNetworkThroughputSelect: function(document) 1126 createNetworkThroughputSelect: function(document)
1190 { 1127 {
1191 var throughputSetting = WebInspector.overridesSupport.settings.networkCo nditionsThroughput; 1128 var throughputSetting = WebInspector.overridesSupport.settings.networkCo nditionsThroughput;
1192 var emulateNetworkSetting = WebInspector.overridesSupport.settings.emula teNetworkConditions; 1129 var emulateNetworkSetting = WebInspector.overridesSupport.settings.emula teNetworkConditions;
1193 var throughputSelectElement = document.createElement("select"); 1130 var throughputSelectElement = document.createElement("select");
1194 var presets = WebInspector.OverridesSupport._networkThroughputPresets; 1131 var presets = WebInspector.OverridesSupport._networkThroughputPresets;
1195 for (var i = 0; i < presets.length; ++i) 1132 for (var i = 0; i < presets.length; ++i)
1196 throughputSelectElement.add(new Option(presets[i][0], presets[i][1]) ); 1133 throughputSelectElement.add(new Option(presets[i][0], presets[i][1]) );
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 }, 1166 },
1230 1167
1231 __proto__: WebInspector.Object.prototype 1168 __proto__: WebInspector.Object.prototype
1232 } 1169 }
1233 1170
1234 1171
1235 /** 1172 /**
1236 * @type {!WebInspector.OverridesSupport} 1173 * @type {!WebInspector.OverridesSupport}
1237 */ 1174 */
1238 WebInspector.overridesSupport; 1175 WebInspector.overridesSupport;
OLDNEW
« no previous file with comments | « Source/devtools/front_end/elements/OverridesView.js ('k') | Source/devtools/front_end/ui/SettingsUI.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698