public AndroidAgent(
            IActivityTracker activityTracker,
            int contentId = -1)
        {
            ActivityTracker = activityTracker;
            ContentId       = contentId;

            var displaySize = GetRealSize(Application
                                          .Context
                                          .GetSystemService(global::Android.Content.Context.WindowService)
                                          .JavaCast <IWindowManager> ()
                                          .DefaultDisplay);

            Identity = new AgentIdentity(
                AgentType.Android,
                new Sdk(
                    SdkId.XamarinAndroid,
                    new FrameworkName(typeof(Java.Interop.Runtime)
                                      .Assembly
                                      .GetCustomAttribute <TargetFrameworkAttribute> ()
                                      .FrameworkName),
                    Array.Empty <string> (),
                    "Android"),
                GetApplicationName(),
                deviceManufacturer: Build.Manufacturer,
                screenWidth: displaySize.X,
                screenHeight: displaySize.Y);

            RepresentationManager.AddProvider(new AndroidRepresentationProvider());

            ViewHierarchyHandlerManager.AddViewHierarchyHandler("Android", this);
        }
Пример #2
0
        void AssertRaw(object value, bool hasInteractiveRepresentation)
        {
            value.ShouldNotBeNull();

            manager = new RepresentationManager();  // [SetUp] doesn't know we're looping

            for (int i = 0; i < 2; i++)
            {
                if (i == 1)
                {
                    manager.AddProvider(new EditAllTheThingsRepresentationProvider());
                }

                var valueType = value.GetType();
                var reps      = manager.Prepare(value);

                reps.Count.ShouldEqual(hasInteractiveRepresentation ? 3 : 2);
                reps.RepresentedType.ResolvedType.ShouldEqual(valueType);

                reps [0].GetType().ShouldEqual(valueType);
                reps [0].ShouldEqual(value);

                reps.GetRepresentation(0).CanEdit.ShouldEqual(i == 1);
            }
        }
        public EvaluationContextManager(
            RepresentationManager representationManager,
            object context = null)
        {
            RepresentationManager = representationManager
                                    ?? throw new ArgumentNullException(nameof(representationManager));

            Context = context;
        }
Пример #4
0
 public void PublishEvaluation(
     CodeCellId codeCellid,
     object result,
     EvaluationResultHandling resultHandling = EvaluationResultHandling.Replace)
 => MainThread.Post(() => PublishEvaluation(new Evaluation {
     CodeCellId     = codeCellid,
     ResultHandling = resultHandling,
     Result         = RepresentationManager.Prepare(result)
 }));
Пример #5
0
        protected Agent(bool unitTestContext)
        {
            agentServer = new AgentServer(this);

            if (!unitTestContext)
            {
                RepresentationManager.AddProvider(new ReflectionRepresentationProvider());
            }
        }
Пример #6
0
        /// <summary>
        /// Sets the value of the member represented by <paramref name="memberInfo"/> on the object pointed to
        /// by <paramref name="handle"/>.
        /// </summary>
        /// <returns><c>true</c>, if member was set, <c>false</c> otherwise.</returns>
        /// <param name="handle">The cache handle to the object on which we want to set a value.</param>
        /// <param name="memberInfo">The member which we want to set. Can be a field or a proprety.</param>
        /// <param name="value">The new value.</param>
        /// <param name="returnUpdatedValue">
        /// If set to <c>true</c>, set <paramref name="updatedValue"/> to the updated value of the object.
        /// </param>
        /// <param name="updatedValue">The updated value of the object.</param>
        public bool TrySetObjectMember(
            long handle,
            RepresentedMemberInfo memberInfo,
            object value,
            bool returnUpdatedValue,
            out InteractiveObject updatedValue)
        {
            updatedValue = null;

            var translatedValue = value;
            var propertyType    = memberInfo.MemberType.ResolvedType;

            if (value != null)
            {
                object convertedValue;
                if (RepresentationManager.TryConvertFromRepresentation(
                        memberInfo.MemberType,
                        new [] { value },
                        out convertedValue))
                {
                    translatedValue = convertedValue;
                }
            }

            // TODO: Special handling if null value comes in for non-nullable property?
            try {
                if (translatedValue != null)
                {
                    if (propertyType.IsEnum)
                    {
                        translatedValue = Enum.ToObject(propertyType, translatedValue);
                    }
                    else if (translatedValue.GetType() != propertyType)
                    {
                        translatedValue = Convert.ChangeType(translatedValue, propertyType);
                    }
                }
            } catch (InvalidCastException ice) {
                Log.Error(TAG, $"Cannot convert from {translatedValue.GetType ().Name} to {propertyType.Name}");
                throw ice;
            }

            var target = ObjectCache.Shared.GetObject(handle);

            memberInfo.SetValue(target, translatedValue);

            if (returnUpdatedValue)
            {
                updatedValue = RepresentationManager.PrepareInteractiveObject(target);
            }

            return(true);
        }
Пример #7
0
        public iOSAgent()
        {
            Identity = new AgentIdentity(
                AgentType.iOS,
                Sdk.FromEntryAssembly(SdkId.XamarinIos, "iOS"),
                NSBundle.MainBundle.InfoDictionary ["CFBundleName"] as NSString,
                screenWidth: (int)UIScreen.MainScreen.Bounds.Width,
                screenHeight: (int)UIScreen.MainScreen.Bounds.Height);

            RepresentationManager.AddProvider(new iOSRepresentationProvider());
            new UnifiedNativeHelper().Initialize();

            ViewHierarchyHandlerManager.AddViewHierarchyHandler("UIKit", this);
        }
Пример #8
0
        void AssertWordSizedNumber <T> (T [] values, WordSizedNumberFlags expectedFlags)
        {
            manager = new RepresentationManager();  // [SetUp] doesn't know we're looping
            //#if MAC || IOS
            //manager.AddProvider (new Unified.UnifiedRepresentationProvider ());
            //#endif

            for (int i = 0; i < values.Length; i++)
            {
                var reps = manager.Prepare(values [i]);
                reps.Count.ShouldEqual(2);
                var word = reps [0].ShouldBeInstanceOf <WordSizedNumber> ();
                word.Flags.ShouldEqual(expectedFlags);
                word.Value.ToString().ShouldEqual(values [i].ToString());
            }
        }
Пример #9
0
        public WpfAgent(Func <Window> mainWindowCreator = null)
        {
            this.mainWindowCreator = mainWindowCreator;
            latestMainWindow       = mainWindowCreator?.Invoke();
            if (latestMainWindow != null)
            {
                latestMainWindow.WindowState = WindowState.Minimized;
                latestMainWindow.Show();
            }

            Identity = new AgentIdentity(
                AgentType.WPF,
                Sdk.FromEntryAssembly("WPF"),
                Assembly.GetEntryAssembly().GetName().Name);

            RepresentationManager.AddProvider(wpfRepresentationProvider = new WpfRepresentationProvider());

            ViewHierarchyHandlerManager.AddViewHierarchyHandler("WPF", this);
        }
Пример #10
0
        public MacAgent()
        {
            #if MAC_MOBILE
            var          agentType = AgentType.MacMobile;
            const string profile   = "Modern";
            #elif MAC_DESKTOP
            var          agentType = AgentType.MacNet45;
            const string profile   = "Full";
            #endif

            Identity = new AgentIdentity(
                agentType,
                Sdk.FromEntryAssembly("Xamarin.Mac", profile),
                NSBundle.MainBundle.InfoDictionary ["CFBundleName"] as NSString);

            RepresentationManager.AddProvider(new MacRepresentationProvider());
            new UnifiedNativeHelper().Initialize();

            ViewHierarchyHandlerManager.AddViewHierarchyHandler("AppKit", this);
        }
Пример #11
0
        public RootRenderer(RendererContext context, RenderState renderState)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (renderState == null)
            {
                throw new ArgumentNullException(nameof(renderState));
            }

            this.context     = context;
            this.renderState = renderState;

            itemStates = ImmutableList <ItemState> .Empty;
            document   = context.Document;

            var representedObject = renderState.Source as RepresentedObject;

            if (representedObject != null)
            {
                foreach (var result in representedObject)
                {
                    AppendSubrenderState(result);
                }
            }
            else
            {
                if (renderState.Source != null && !(renderState.Source is JsonPayload))
                {
                    AppendSubrenderState(RepresentationManager.ToJson(renderState.Source));
                }
                AppendSubrenderState(renderState.Source);
            }
        }
Пример #12
0
 public EvaluationContextManager(RepresentationManager representationManager, object context = null);
Пример #13
0
 public void SetUp()
 {
     manager = new RepresentationManager();
 }