private NameValueCollection CreateDeviceInfo(DeviceInfoCollection initialDeviceInfos, Report report, int pageNumber, string searchState, string replacementRoot, string linkTarget, string browserMode, bool useImageConsolidation, bool enablePowerBIFeatures)
        {
            NameValueCollection nameValueCollection = new NameValueCollection();

            foreach (DeviceInfo initialDeviceInfo in initialDeviceInfos)
            {
                nameValueCollection.Add(initialDeviceInfo.Name, initialDeviceInfo.Value);
            }
            nameValueCollection.Set("HTMLFragment", "true");
            nameValueCollection.Set("Section", pageNumber.ToString(CultureInfo.InvariantCulture));
            string value = ReportImageOperation.CreateUrl(report, this.m_viewerInstanceIdentifier, false);

            nameValueCollection.Set("StreamRoot", value);
            string value2 = ReportImageOperation.CreateUrl(report, this.m_viewerInstanceIdentifier, true);

            nameValueCollection.Set("ResourceStreamRoot", value2);
            nameValueCollection.Set("EnablePowerBIFeatures", enablePowerBIFeatures.ToString());
            //nameValueCollection.Set("ActionScript", this.ActionScriptMethod);
            if (!string.IsNullOrWhiteSpace(searchState))
            {
                nameValueCollection.Set("FindString", searchState);
            }
            if (!string.IsNullOrEmpty(replacementRoot))
            {
                nameValueCollection.Set("ReplacementRoot", replacementRoot);
            }
            nameValueCollection.Set("PrefixId", this.UniqueRenderingId);
            nameValueCollection.Set("StyleStream", "true");
            if (!string.IsNullOrEmpty(linkTarget))
            {
                nameValueCollection.Set("LinkTarget", linkTarget);
            }
            if (HttpContext.Current != null && HttpContext.Current.Request != null)
            {
                string userAgent = HttpContext.Current.Request.Headers["User-Agent"];
                if (userAgent != null)
                {
                    nameValueCollection.Set("UserAgent", userAgent);
                }
            }
            if (!string.IsNullOrEmpty(browserMode) && nameValueCollection["BrowserMode"] == null)
            {
                nameValueCollection.Set("BrowserMode", browserMode);
            }
            if (!useImageConsolidation)
            {
                nameValueCollection.Set("ImageConsolidation", "false");
            }
            return(nameValueCollection);
        }
        public int RenderReport(ReportControlSession session, string viewerInstanceIdentifier, PageCountMode pageCountMode, int pageNumber, InteractivityPostBackMode interactivityMode, string searchState, string replacementRoot, string hyperlinkTarget, string alertMessage, DeviceInfoCollection initialDeviceInfos, string browserMode, bool sizeToContent)
        {
            if (this.m_reportStream != null)
            {
                throw new InvalidOperationException();
            }
            this.m_session = session;
            this.ViewIteration++;
            this.m_pageNumber = pageNumber;

            this.m_viewerInstanceIdentifier = viewerInstanceIdentifier;
            this.m_alertMessage             = alertMessage;
            this.m_interactivityMode        = interactivityMode;
            bool useImageConsolidation     = !sizeToContent;
            NameValueCollection deviceInfo = this.CreateDeviceInfo(initialDeviceInfos, session.Report, pageNumber, searchState, replacementRoot, hyperlinkTarget, browserMode, useImageConsolidation, this.EnableHybrid);

            this.m_reportStream        = session.RenderReportHTML(deviceInfo, pageCountMode, out this.m_scrollScript, out this.m_pageStyles);
            this.m_autoRefreshInterval = session.Report.AutoRefreshInterval;
            int totalPages = session.Report.GetTotalPages();

            if (this.m_pageNumber > totalPages)
            {
                this.m_pageNumber = totalPages;
            }
            this.m_autoRefreshInterval = session.Report.AutoRefreshInterval;
            if (sizeToContent)
            {
                this.m_scrollScript = null;
            }
            string styleStreamName = LocalHtmlRenderer.GetStyleStreamName(pageNumber);
            string text            = default(string);

            byte[] streamImage = session.GetStreamImage(styleStreamName, (string)null, out text);
            this.m_styleBytesString = null;
            if (streamImage != null && streamImage.Length > 0)
            {
                Encoding encoding = new UTF8Encoding(false);
                this.m_styleBytesString = encoding.GetString(streamImage);
            }
            return(this.m_pageNumber);
        }