KR20160067200A - 다중-프로세스 브라우저 아키텍처 - Google Patents

다중-프로세스 브라우저 아키텍처 Download PDF

Info

Publication number
KR20160067200A
KR20160067200A KR1020167014531A KR20167014531A KR20160067200A KR 20160067200 A KR20160067200 A KR 20160067200A KR 1020167014531 A KR1020167014531 A KR 1020167014531A KR 20167014531 A KR20167014531 A KR 20167014531A KR 20160067200 A KR20160067200 A KR 20160067200A
Authority
KR
South Korea
Prior art keywords
browser
render
content
host
view
Prior art date
Application number
KR1020167014531A
Other languages
English (en)
Inventor
다린 피셔
브렛 윌슨
벤 굿거
아르노드 웨버
Original Assignee
구글 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 인코포레이티드 filed Critical 구글 인코포레이티드
Publication of KR20160067200A publication Critical patent/KR20160067200A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

다중-프로세스 브라우저 아키텍처에 대한 시스템들 및 방법들이 본원에서 설명된다. 실시예에서, 다중-프로세스 브라우저 아키텍처를 제공하는 시스템은 콘텐츠 영역을 렌더링하는 각각의 브라우저 인스턴스에 대한 적어도 하나의 렌더링 프로세스; 및 하나 또는 복수의 렌더링 엔진 프로세스들과 통신하는 적어도 하나의 브라우저 프로세스를 포함한다. 또 다른 실시예에서, 다중-프로세스 브라우저 아키텍처를 제공하는 방법은 각각의 콘텐츠 영역 인스턴스에 대해 고유한 렌더링 프로세스를 인스턴스화하는 단계 및 고유한 브라우저 프로세스를 인스턴스화하는 단계를 포함한다. 이러한 방식으로 브라우저들은 다른 브라우저 프로세스들에 영향을 미치는 오류 프로세스의 영향을 피할 수 있다. 이것은 사용자 경험을 향상시키면서 사용자 효율성을 개선할 수 있다.

Description

다중-프로세스 브라우저 아키텍처{MULTI-PROCESS BROWSER ARCHITECTURE}
본 발명의 실시예들은 브라우저 기술에 관한 것이다.
브라우저들은 웹 콘텐츠 또는 지역적으로 저장된 콘텐츠에 액세스하는 데에 사용된다. 그러한 콘텐츠의 위치는 흔히 URL(uniform resource locator)과 같은 위치 어드레스에 의해 식별된다. 브라우저는 URL을 URL과 연관된 콘텐츠에 액세스하는 데에 사용할 수 있다. 사용자는 브라우저를 상이한 콘텐츠 영역들로 지향하는 사용자-인터페이스를 통해 브라우저와 상호작용할 수 있다.
콘텐츠 영역들은 텍스트, 오디오, 비디오 및 콘텐츠 전달의 그 외 형식들을 포함할 수 있다. 통상적인 윈도우즈 환경에서, 다수의 콘텐츠 영역들은 다수의 창에서 보일 수 있고 콘텐츠 영역당 하나의 창이 존재할 수 있다. 오늘날의 브라우저들은 사용자가 단일 브라우저 창에서 다수의 콘텐츠 영역들을 볼 수 있게 한다. 단일 브라우저 창에서 다수의 콘텐츠 영역을 보는 것은 탭 뷰 방식으로 알려져 있을 수 있다. 콘텐츠를 보기 위해 이러한 방식을 사용하는 브라우저들은 탭 뷰 브라우저들로 불릴 수 있다. 탭 뷰 브라우저는 사용자가 상이한 탭들의 선택을 통해 상이한 콘텐츠 영역들 사이에서 전환하게 할 수 있다. 게다가, 사용자는 브라우저에 의해 백그라운드에서 한 탭에 대한 콘텐츠가 취득되는 동안 다른 탭에서 콘텐츠 영역을 볼 수 있다.
*오늘날 사용중인 통상의 브라우저들은 MICROSOFT INTERNET EXPLORER, MOZILLA FIREFOX, APPLE SAFARI 및 OPERA를 포함한다. 사용자는 이러한 브라우저들 중 임의의 하나를 콘텐츠 영역에 액세스하기 위해 사용할 수 있다. 브라우저 창은 보통 브라우저에 대응하는 아이콘을 클릭함으로써 열린다. 브라우저 창이 열리면, 사용자는 브라우저의 사용자 인터페이스를 통해 다수의 다른 브라우저 창을 열 수 있다. 그러나, 사용자가 브라우저의 사용자 인터페이스를 사용하여 여는 새로운 창은 새로운 운영 체계(OS) 프로세스들로서 열리지 않을 수 있다. 더욱이 탭 뷰 방식을 따른 브라우저들에서, 새로운 탭들은 새롭고 고유한 OS 프로세스들로서 열리지 않을 수 있다. 새롭게 열린 탭들은 단일 브라우저 프로세스의 일부로서 존재한다. 브라우저의 새로운 OS 프로세스 또는 브라우저 프로세스는 브라우저 아이콘을 더블 클릭함으로써만 열릴 수 있다.
브라우저의 콘텐츠를 렌더링하는 임의의 단일 탭에서 오류가 발생한다면, 그것은 모든 다른 콘텐츠 영역들에 영향을 끼칠 수 있는데 이는 그것들이 동일한 브라우저 프로세스에 존재하기 때문이다. 일 예시에서, 단일 콘텐츠 영역을 렌더링하는 탭에서 오류가 발생하는 것은 브라우저 프로세스의 예상치 못한 종료를 야기할 수 있다. 브라우저 프로세스의 예상치 못한 종료는 사용자 경험(user's experience)을 크게 떨어뜨린다.
브라우저의 콘텐츠는 렌더링 엔진에 의해 디스플레이 디바이스 상에 디스플레이하기 위해 렌더링된다. 오늘날 사용중인 브라우저들은 디스플레이하기 위한 콘텐츠 영역을 렌더링하는 단일 렌더링 엔진을 특징으로 할 수 있다. 렌더링 엔진에 의해 렌더링되는 콘텐츠 영역들은 단일 콘텐츠 영역 또는 탭 뷰 브라우저의 경우에는 다수의 콘텐츠 영역으로 존재할 수 있다. 따라서 단일 렌더링 엔진은 탭 뷰 브라우저의 다수의 탭에 콘텐츠를 렌더링할 수 있고 그에 따라 렌더링 엔진과 콘텐츠 영역(들) 사이에 일-대-다수 관계가 존재하게 된다. 이러한 방식은 렌더링 엔진에서의 오류가 그것과 연관되어 있는 모든 콘텐츠 영역에 영향을 끼칠 수 있으므로 사용자에게 도움이 되지 않을 수 있다. 렌더링 엔진이 브라우저 프로세스의 일부인 예시에서, 이것은 전체 브라우저 프로세스가 무응답이 되게 할 수 있다. 무응답 브라우저 프로세스는 사용자가 브라우저의 사용자 인터페이스 컴포넌트들과 상호작용하지 못하게 할 수 있다. 게다가 브라우저의 무응답 상태의 지시가 보통은 브라우저의 사용자 인터페이스에 의해 사용자에게 제공되지 않는다. 이것은 사용자 경험에 영향을 끼칠 수 있고 사용자 태스크의 효율성을 크게 감소시킬 수 있다. 사용자가 상호작용하던 콘텐츠가 이제 무응답이 될 수 있고 그에 따라 그 콘텐츠와 상호작용하는 동안에 사용자에 의해 완료된 작업의 손실 가능성이 존재하게 되기 때문에 사용자 태스크의 효율의 감소가 발생할 수 있다.
오류 브라우저 프로세서들이 다른 브라우저 프로세스들에 영향을 끼치지 못하게 하여 사용자 경험 및 사용자 효율성을 개선하는 시스템들 및 방법들이 요구된다.
본 발명의 실시예들은 다중-프로세스 브라우저 아키텍처를 위한 시스템들 및 방법들에 관한 것이다. 일 실시에에서, 다중-프로세스 브라우저 아키텍처를 제공하는 시스템은 콘텐츠 영역을 렌더링하는 각각의 브라우저 인스턴스에 대한 적어도 하나의 렌더링 프로세스; 및 하나 또는 복수의 렌더링 엔진 프로세스와 통신하는 적어도 하나의 브라우저 프로세스를 포함한다.
또 다른 실시예에서, 다중-프로세스 브라우저 아키텍처를 제공하는 방법은 각각의 콘텐츠 영역 인스턴스에 대해 고유한 렌더링 프로세스를 인스턴스화하는(instantiate) 단계 및 고유한 브라우저 프로세스를 인스턴스화하는 단계를 포함한다.
이러한 방법으로 브라우저들은 다른 브라우저 프로세스들에 영향을 끼치는 오류 프로세스 또는 다수의 오류 프로세스의 영향들을 피할 수 있다.
다양한 실시예들의 구조 및 동작뿐 아니라 추가적인 실시예들, 실시예들의 특징들 및 이점들이 첨부한 도면들을 참조로 하여 상세하게 후술된다.
본 발명의 실시예들은 첨부한 도면들을 참조로 하여 설명된다. 도면들에서, 유사한 참조 번호들은 동일한 또는 기능적으로 유사한 구성요소들을 가리킬 수 있다. 구성요소가 처음으로 나타난 도면은 일반적으로 대응하는 참조 번호의 맨 왼쪽 숫자(left-most digit)에 의해 가리켜진다.
도 1은 실시예에 따른 다중-프로세스 브라우저 아키텍처의 아키텍처도이다.
도 2A는 실시예에 따른 다중-프로세스 브라우저 아키텍처의 다양한 쓰레드(thread)들을 도시하는 도이다.
도 2B는 실시예에 따른 다중-프로세스 브라우저 아키텍처의 작업을 도시하는 아키텍처도이다.
도 3은 실시예에 따라 새롭게 인스턴스화된 탭에 대해 렌더 뷰를 생성하는 데에 사용될 수 있는 방법을 도시하는 흐름도이다.
도 4는 실시예에 따라 새롭게 인스턴스화된 팝업 창에 대해 렌더 뷰를 생성하는 데에 사용될 수 있는 방법을 도시하는 흐름도이다.
도 5는 실시예에 따라 교착 상태의(deadlocked) 렌더링 엔진 프로세스를 종료하는 데에 사용될 수 있는 방법을 도시하는 흐름도이다.
도 6은 실시예에 따라 무응답 렌더링 엔진 프로세스를 재생성하는 데에 사용될 수 있는 방법을 도시하는 흐름도이다.
본 발명의 실시예들은 다중-프로세스 브라우저 아키텍처를 위한 시스템들 및 방법들에 관한 것이다. 본 발명의 실시예들에서, 사용자 경험의 품질 및 사용자 효율성은 개선된다.
본 발명의 실시예들이 특정한 응용들에 대해 설명적인 실시예들을 참조로 하여 설명되고, 본 발명은 그에 제한되지 않는 것으로 이해되어야 한다. 본원에 제공된 교시들에 대한 이해를 하는 당업자들은 추가적인 수정들, 응용들 및 실시예들이 그 범위 및 본 발명이 중요하게 사용되는 추가적인 분야 내에서 가능함을 인식할 것이다.
본원에서 사용된 용어 "URL"은 콘텐츠 어드레스를 의미한다. URL들은 인터넷과 같은 하나 이상의 네트워크들에 걸쳐 저장된 콘텐츠를 어드레싱할 수 있다. 또 다른 예에서, URL은 지역적으로 저장된 파일의 위치에 대응하는 경로일 수 있다. 이러한 예들은 예시적일 뿐 그 정의를 제한하려는 것은 아니다.
본원에서 사용된 용어 "콘텐츠 영역"은 URL에 의해 어드레싱된 콘텐츠를 디스플레이할 수 있는 사용자 인터페이스 디스플레이의 영역을 의미한다. 설명적인 예로서, 콘텐츠 영역에 디스플레이된 콘텐츠는 예를 들면, 웹 페이지, 애플리케이션, 문서, 비디오, 멀티미디어 콘텐츠, 미래 활용 콘텐츠 메커니즘 또는 그것들의 임의의 조합을 포함할 수 있다. 이러한 예들은 예시적일 뿐 그 정의를 제한하려는 것은 아니다.
사용된 용어 "쓰레드"는 다른 쓰레드들과 독립적으로 실행할 수 있는 그러나 다른 쓰레드들과 직접 데이터를 공유할 수 있는 실행 명령어들의 시퀀스를 의미한다.
본 발명의 실시예들의 이러한 상세한 설명은 다수의 섹션으로 나뉜다. 제1 섹션은 도 1, 도 2A 및 도 2B에 관한 본 발명의 실시예에 따른 다중-프로세스 브라우저 아키텍처를 설명한다. 제2 섹션은 본 발명의 실시예들에 따라 도 3 내지 도 6에 관한 다중-프로세스 브라우저 아키텍처의 동작에서 사용될 수 있는 다양한 방법들을 설명한다. 마지막 섹션은 다중-프로세스 브라우저 아키텍처의 실시예의 예시 동작을 설명한다.
시스템
*이 섹션은 도 1 내지 도 2B에 관한 실시예에 따라 다중-프로세스 브라우저 아키텍처를 설명한다.
도 1은 실시예에 따른 다중-프로세스 브라우저 아키텍처의 아키텍처도이다. 도 1은 시스템(100)을 포함한다.
시스템(100)은 브라우징을 지원할 수 있는 임의의 디바이스 상에서 구현될 수 있다. 그러한 디바이스는 명령어들을 실행 및 저장하기 위한 프로세서 및 메모리를 갖는 디바이스를 포함할 수 있지만 이에 한정되지는 않는다. 그러한 디바이스는 소프트웨어, 펌웨어 및 하드웨어를 포함할 수 있다. 소프트웨어는 하나 이상의 애플리케이션들 및 운영 체계를 포함할 수 있다. 하드웨어는 프로세서, 메모리 및 사용자 인터페이스 디스플레이를 포함할 수 있지만 이에 한정되지는 않는다. 마우스, 터치 감응형 스크린과 같은 선택적 입력 디바이스들 또는 임의의 미래 진화형 상호작용 방식이 사용될 수 있다.
다중-프로세스 브라우저 아키텍처(100)는 원격 서버(도시되지 않음)에 접속할 수 있고 디스플레이를 위한 데이터를 다운로드할 수 있다. 예시들에서, 데이터는 하이퍼텍스트 마크업 언어(hypertext markup language), 동적 하이퍼텍스트 마크업 언어(dynamic hypertext markup language), 확장가능한 마크업 언어(extendable markup language), 이미지 데이터, 비디오 또는 사운드로 나타낼 수 있다. 또 다른 예시에서, 다중-프로세스 브라우저 아키텍처(100)는 AJAX(Asynchronous JavaScript and XML) 프레임워크에 따라 스크립트들을 다운로드하고 실행할 수 있다. AJAX 프레임워크는 콘텐츠 영역을 재로딩하는 일 없이 콘텐츠 영역을 업데이트하기 위해 서버로부터 데이터를 비동기적으로 송신하고 수신한다.
다중-프로세스 브라우저 아키텍처(100)는 프로세스간 통신(130)을 통하여 하나 또는 복수의 렌더러(renderer)들(120A-N)에 연결된 브라우저 프로세스들(110)을 포함한다. 브라우저 프로세스(110)는 인터넷과 같은 하나 이상의 네트워크들을 거쳐 하나 이상의 웹 서버들(도시되지 않음)과 통신할 수 있다. 브라우저 프로세스(110)는 또한 데이터를 입력하는 사용자가 커맨드들을 입력하거나 또는 다른 제어 정보를 브라우저 프로세스(110)에 제공하게 하는 입력(도시되지 않음)과 통신할 수 있다. 렌더링 엔진 프로세스(들)(120A-N)은 브라우저 프로세스(110)를 실행하는 클라이언트 디바이스에서 디스플레이하기 위한 데이터를 렌더링할 수 있다.
브라우저 프로세스(110) 및 렌더링 엔진 프로세스(들)(120A-N)는 프로세스간 통신(130)을 통해 통신할 수 있다. 실시예에서, 프로세스간 통신(130)은 네임드 파이프(named pipe)와 같은 프로세스간 통신 방법을 포함할 수 있다.
네임드 파이프는 당업자들에게 알려진 프로세스간 통신의 형식이다. 네임드 파이프는 두 개의 프로세스가 서로 통신하게 할 수 있다. 네임드 파이프들은 추가적인 쓰레드들을 도입하는 일 없이 프로세스간 통신을 허가할 수 있다. 게다가, 네임드 파이프들은 사용자들이 네임드 파이프의 구성을 제어하게 할 수 있다. 네임드 파이프의 구성에 대한 제어는 사용자가 네임드 파이프를 통한 통신에 보안 제한을 가하고 네임드 파이프의 전체 성능을 제어할 수 있도록 한다.
*도 2A는 시스템(100)의 동작에 포함된 다양한 쓰레드를 도시하는 도이다. 메인 브라우저 쓰레드(220)는 하나 또는 복수의 렌더 뷰 호스트(들)(218)를 포함할 수 있다. I/O(입력/출력) 쓰레드(230)는 리소스 디스패처(dispatcher) 호스트(228)를 포함할 수 있다. 메인 렌더러 쓰레드(254)는 렌더 프로세스(242)를 포함할 수 있고 렌더 쓰레드(256)는 하나 또는 복수의 렌더 뷰(들)(246)를 포함할 수 있다. 렌더 프로세스 호스트(214) 및 렌더 프로세스(242)는 프로세스간 통신(130)을 통해 통신할 수 있다.
프로세스간 통신(130)은 연속된 바이트들의 어레이들로서 메시지들을 통신할 수 있다. 연속된 바이트들의 어레이들은 연속적으로 통신될 수 있다. 송신되는 각각의 메시지에는 헤더 구조체가 프리픽스(prefix)될 수 있다. 헤더 구조체는 메시지 유형, 메시지에 포함된 데이터의 길이, 및 라우팅 식별자를 규정할 수 있다. 라우팅 식별자는 수신 프로세스 내에서 메시지의 목적지를 지정하는 데에 사용될 수 있다. 메시지들은 시스템(100)의 상이한 컴포넌트들 사이에서, 예를 들면, 콘텐츠 영역들의 인스턴스화 또는 인스턴스화된 콘텐츠 영역들과의 상호 작용 동안에 통신될 수 있다.
도 2B는 시스템(100)의 컴포넌트들의 작업을 도시하는 세부 아키텍처도이다.
도 2B는 브라우저 프로세스(110) 및 복수의 렌더링 엔진 프로세스들(120A-N)을 도시한다. 실시예에서, 브라우저 프로세스(110)는 렌더 뷰 호스트(218), 렌더 프로세스 호스트(214), 리소스 디스패쳐 호스트(228) 및 채널(222)을 더 포함할 수 있다. 채널(222)은 추가로 필터(224)도 포함할 수 있다. 렌더 프로세스 호스트(214)는 또한 브라우저 스테이트(212)를 포함할 수 있다. 하기의 섹션들에서는, 시스템(100)의 다양한 쓰레드들이 더 설명된다.
메인 브라우저 쓰레드(220)
메인 브라우저 쓰레드(220)는 렌더 뷰 호스트(218) 및 렌더 프로세스 호스트(214)를 포함할 수 있다.
렌더 뷰 호스트(218)는 렌더 뷰(246)를 관리할 수 있다. 렌더 뷰 호스트(218)는 대응하는 렌더 프로세스 호스트(214)를 통해 메시지를 통신할 수 있다. 렌더 프로세스 호스트(214)는 이 메시지를 렌더 프로세스(242)에 통신할 수 있다. 렌더 프로세스(242)는 동일한 메시지를 렌더링 엔진 프로세스(120A-N)에서 대응하는 렌더 뷰(246)에 통신할 수 있다. 그러한 메시지들은 콘텐츠 영역들의 인스턴스화 또는 인스턴스화된 콘텐츠 영역들과의 상호작용 동안 통신될 필요가 있을 수 있다. 이러한 방법으로, 렌더 뷰 호스트(218)는 렌더 뷰(246)와 통신하고 이를 관리할 수 있다. 실시예에서, 복수의 렌더 뷰 호스트(들)(214)는 복수의 렌더 뷰(들)(246)를 관리할 수 있다.
렌더 프로세스 호스트(214)는 복수의 렌더링 엔진 프로세스(들)(120A-N)의 각각에 대해 존재할 수 있다. 렌더 프로세스 호스트(214)는 브라우저 스테이트(212)를 관리하고 렌더링 엔진 프로세스(120A-N)와 통신할 수 있다. 각각의 렌더 뷰(246)에 대응하는 렌더 프로세스 호스트(214)는 메인 브라우저 쓰레드(220)에서 렌더 뷰 호스트(218)를 유지한다.
브라우저 스테이트(212)는 브라우저 프로세스(110)에 의해 유지될 수 있다. 브라우저 스테이트(212)는 렌더링 엔진 프로세스(들)(120A-N)의 세션 정보를 포함할 수 있다. 렌더링 엔진 프로세스(120A-N)가 그것의 동작에서 오류를 겪거나 종료할 필요가 있다면, 브라우저 프로세스(110)는 오류가 발생한 렌더링 엔진 프로세스(들)(120A-N)를 재생성하고 그것의 세션 정보를 브라우저 스테이트(212)에 재저장할 수 있다. 브라우저 스테이트(212)는 사용자가 상이한 콘텐츠 영역들을 브라우징하는 동안 축적할 수 있는 세션 쿠키들 또는 세션 히스토리를 포함할 수 있다. 일례로서, 세션 쿠키는 웹 서버가 사용자를 구별하고 이동 중에 사용자와 관련된 데이터를 유지하는 데에 사용될 수 있다. 세션 히스토리는 이전에 방문한 콘텐츠 영역들의 목록 및 렌더링 엔진 프로세스(120A-N)에 의해 렌더링된 그것들 각각의 상태를 포함할 수 있다. 렌더링 엔진 프로세스(120A-N)에 의해 렌더링된 콘텐츠 영역에 대한 세션 히스토리는 형식 필드에 입력된 하나의 또는 복수의 사용자 값들을 포함할 수 있다. 추가적으로 세션 히스토리는 콘텐츠 영역의 스크롤 위치를 저장할 수 있다.
입력/출력(I/O) 쓰레드(230)
입력/출력(I/O) 쓰레드(230)는 리소스 디스패쳐 호스트(228) 및 채널(222)을 포함할 수 있다. 채널(222)은 필터(224)를 더 포함할 수 있다. I/O(입력/출력) 쓰레드(230)는 브라우저 프로세스(110)가 렌더링 엔진 프로세스(120A-N)와 통신하는 데에 사용될 수 있다. 게다가 메인 브라우저 쓰레드(220)와 연관된 I/O 쓰레드(230)는 브라우저 프로세스(110)로부터 하나 또는 복수의 렌더 뷰(들)(246)로 메시지들을 통신할 수 있다. 브라우저 프로세스(110)에서 콘텐츠 영역에 대응하는 콘텐츠에 대한 리소스 요청들은 I/O 쓰레드(230)에 의해 통신될 수 있다.
채널(222)은 메인 브라우저 쓰레드(220)에 메시지들을 통신할 수 있다. 도 2B를 참조하면, 채널(222)은 I/O 쓰레드(230)에 속할 수 있다. 채널(222)은 렌더 뷰(들)(246)와 메인 브라우저 쓰레드(220) 사이에서 프록시로서 동작할 수 있다. 채널 프록시(226)는 채널(222)과 렌더 프로세스 호스트(214) 사이에서 메시지들을 통신할 수 있다.
채널(222)에 속한 필터(224)는 렌더 프로세스 호스트(214)에 의해 채널에서 구성될 수 있다. 필터(224)는 렌더링 엔진 프로세스(들)(120A-N)로부터의 리소스 요청 메시지들을 인터셉트할 수 있고 그것들을 직접 리소스 디스패쳐 호스트(228)로 전달할 수 있다.
이러한 방법으로, 콘텐츠에 대한 리소스 요청들은 I/O 쓰레드(230)에 의해 핸들링될 수 있고 이것은 메인 브라우저 쓰레드(220)에 의해 행해질 필요가 있는 리소스 핸들링의 양을 감소시킬 수 있다.
메인 렌더러 쓰레드(254)
메인 렌더러 쓰레드(254)는 렌더 프로세스(242)를 포함할 수 있다. 렌더 프로세스(242)는 렌더러 스테이트(244)를 더 포함할 수 있다.
렌더 프로세스(242)는 각각의 렌더러 프로세스(120A-N)에 포함될 수 있다. 렌더 프로세스(242)는 브라우저 프로세스(110)와의 통신을 관리할 수 있고 또한 렌더러 스테이트(244)를 유지할 수 있다. 각각의 렌더 프로세스(242)는 하나 혹은 복수의 렌더 뷰(들)(246)와 통신할 수 있다.
렌더러 스테이트(244)는 대응하는 렌더링 엔진 프로세스(120A-N)의 스테이트와 관련된 정보를 유지할 수 있다. 렌더러 스테이트(244)는 대응하는 렌더링 엔진 프로세스(120A-N)가 무응답이 되었는지 또는 그것이 시스템 리소스들을 요청하고 있는지에 대한 정보를 포함할 수 있다.
렌더 쓰레드(256)
렌더 쓰레드(256)는 리소스 디스패쳐(250), 웹키트(252) 및 렌더 뷰(246)를 포함할 수 있다.
렌더 뷰(246)는 브라우저에서 고유한 콘텐츠 영역에 대응할 수 있다. 본 발명을 제한하려는 것이 아닌 일례로서, 각각의 새로운 창 또는 탭 인스턴스화는 새로운 렌더링 엔진 프로세스(120A-N)를 생성할 수 있고 그 프로세스에 대한 렌더 뷰(246)를 생성할 수 있다. 본 발명을 제한하려는 것이 아닌 일례로서, 콘텐츠 영역은 탭 뷰 브라우저의 탭일 수 있다. 또 다른 실시예에서, 렌더 뷰(246)는 HTML(Hyper Text Markup Language) 파서(parser) 및 자바스크립트 인터프리터(interpreter)를 포함할 수 있다. HTML 파서는 당업자들에게 알려져 있고 콘텐츠를 적절히 렌더링하기 위해 HTML 마크-업 태그들을 식별하는 데에 사용될 수 있다. 자바스크립트 인터프리터는 콘텐츠의 일부일 수 있는 자바스크립트를 식별하는 데에 사용될 수 있다.
렌더 뷰(246)는 렌더 프로세스(242)에 의해 관리될 수 있다. 각각의 렌더 뷰(246)는 뷰 ID(248)에 의해 식별된다. 뷰 ID(뷰 식별자)(248)는 특정한 렌더러 프로세스(120A-N)에서 렌더 뷰(246)의 상이한 인스턴스들을 식별하는 데에 사용될 수 있다. 뷰 ID(들)(248)는 렌더러 프로세스(120A-N)의 인스턴스마다 고유할 수 있다. 브라우저 프로세스(110)로부터 렌더 뷰(242)를 식별하기 위해, 뷰 ID(248)에 더해 렌더 프로세스 호스트(214)가 요구될 수 있다. 브라우저 프로세스(110)로부터 특정한 콘텐츠 영역으로의 통신은 렌더 뷰 호스트(218)를 통해 달성될 수 있다.
리소스 디스패쳐(250)는 각각의 렌더 프로세스(120A-N)에 포함될 수 있다. 리소스 디스패쳐(250)는 웹키트(252)와 통신할 수 있다. 리소스 디스패쳐(250)는 브라우저 프로세스(110)에서 콘텐츠 영역에 대응하는 콘텐츠에 대한 리소스 요청들을 핸들링할 수 있다. 웹키트(252)는 각각의 렌더 프로세스(120A-N)에 포함될 수 있다. 웹키트(252)는 데이터 구조체의 형식으로 브라우저 프로세스(110)의 콘텐츠 영역내의 콘텐츠를 저장하고 관리할 수 있다.
워치독(Watch dog) 쓰레드(262)
워치독 쓰레드(262)는 각각의 렌더링 엔진 프로세스(120A-N)에 포함될 수 있다. 워치독 쓰레드(262)는 오류 렌더링 엔진 프로세스(120A-N)를 검출할 수 있고 대응하는 렌더링 엔진 프로세스(120A-N)를 종료할 수 있다.
실시예에서, 브라우저(110)는 무응답일 수 있는 탭을 닫으려는 사용자 요청에 응답하여 메시지를 워치독 쓰레드(262)에 보낼 수 있다. 그러한 메시지는 워치독 쓰레드(262)가 렌더링 엔진 프로세스(120A-N)를 종료하게 할 수 있다.
콘텐츠 영역들에 의한 렌더링 엔진 프로세스의 공유
렌더링 엔진 프로세스들(120A-N) 중 어느 하나는 예를 들면, 탭들 또는 창들과 같은 상이한 콘텐츠 영역들 사이에서 공유될 필요가 있을 수 있다. 이것은 부(parent) 콘텐츠 영역이 그것이 통신하길 원하는 새로운 자(child) 창을 인스턴스화할 때 발생할 수 있다. 이러한 통신은 핸들의 도움으로 달성될 수 있다. 본 발명을 제한하려는 것이 아닌 일례로서, 핸들은 부 콘텐츠 영역이 자 창과의 통신을 설정할 수 있게 하는 식별자일 수 있다. 콘텐츠를 렌더링하기 위해서, 자 콘텐츠 영역은 부 콘텐츠 영역을 렌더링한 렌더링 엔진 프로세스(120A-N)의 동일한 인스턴스를 사용할 수 있다. 새로운 자 콘텐츠 영역이 새로운 창으로 인스턴스화될 필요가 있을 수 있는 경우에, 렌더 뷰(246)는 렌더 뷰 호스트(218)에 정보를 통신할 수 있다. 렌더 뷰 호스트(218)는 자 콘텐츠 영역에 대한 새로운 탭 또는 창을 인스턴스화할 수 있다. 부 콘텐츠 영역에 대응하는 렌더 뷰(246)는 자 콘텐츠 영역에 대응하는 새로운 렌더 뷰(246)에 대한 식별자를 렌더 뷰 호스트(218)로 전달할 수 있다. 이것은 자 콘텐츠 영역이 부 콘텐츠 영역을 렌더링한 렌더링 엔진 프로세스(120A-N)의 동일한 인스턴스를 사용하도록 할 수 있다.
콘텐츠 영역의 우선 순위화
일례로서, 렌더링 엔진 프로세스(들)(120A-N)의 어느 한 인스턴스는 주어진 시간에서 액티브 콘텐츠 영역과 연관될 수 있다. 액티브 콘텐츠 영역은 사용자가 현재 상호작용하고 있는 임의의 콘텐츠 영역을 의미한다. 액티브 콘텐츠 영역의 예시는 포어그라운드(foreground) 탭 또는 포어그라운드 창일 수 있다. 본 발명을 제한하려는 것이 아닌 실시예에서, 백그라운드 콘텐츠 영역을 렌더링하는 렌더링 엔진 프로세스(120A-N)는 낮은 우선 순위 프로세스로 취급될 수 있다. 낮은 우선 순위 프로세스는 시스템 리소스들의 할당에 있어 낮은 우선 순위를 가질 수 있다. 게다가, 낮은 우선 순위 프로세스는 포어그라운드 렌더러 프로세스보다 그것의 메모리를 스와핑 아웃시킬 가능성이 더 있다. 메모리 스와핑은 당업자들에 의해 일반적으로 사용되는 방법을 지칭한다. 본 발명을 제한하려는 것이 아닌 일례로서, 메모리 스와핑은 운영 체계가 프로그램을 실행하고 그것의 메인 메모리보다 큰 데이터 파일들을 조작하게 한다. 운영 체계는 가능한 많은 데이터를 메인 메모리에 저장하고 나머지를 디스크 상에 둘 수 있다. 운영 체계가 디스크로부터 데이터를 필요로 할 때, 그것은 보통 당 분야에서 페이지 또는 세그먼트로 지칭되는, 메인 메모리내의 데이터의 일부를 디스크 상의 데이터의 일부로 교체할 수 있다.
동작
이 섹션은 도 1 내지 도 2B에서 설명된 시스템의 동작에서 사용될 수 있는 다양한 방법들을 설명한다. 명료함을 위해, 방법들은 시스템(100)에 대하여 설명되었지만, 그것들이 시스템(100)으로만 제한되도록 의도되지 않는다.
도 3은 새롭게 인스턴스화된 탭에 대한 렌더 뷰를 생성하는 데에 사용될 수 있는 실시예에 따른 방법(300)을 설명하는 흐름도이다(단계(302-310)). 방법(300)은 사용자가 각각의 아이콘을 클릭함으로써 브라우저 프로세스(110)를 인스턴스화하는 것으로 시작한다(단계(302)). 브라우저 프로세스(110)는 브라우저 프로세스(110)에 의해 어드레싱될 수 있는 콘텐츠를 렌더링하기 위해 새로운 렌더링 엔진 프로세스(120A)를 인스턴스화한다(단계(304)). 브라우저 프로세스(110)는 새로운 탭이 인스턴스화되었는지를 체크한다(단계(306)). 새로운 탭이 인스턴스화되지 않았다면 방법(300)은 리턴한다. 브라우저 프로세스(110)가 새로운 탭이 인스턴스화된 것으로 판단한다면, 렌더 뷰 호스트(218)는 렌더 뷰(246)를 생성할 렌더 프로세스 호스트(214)를 식별한다(단계(308)). 그리고 렌더 프로세스 호스트(214)가 렌더 뷰(246)를 생성한다(단계(310)). 이러한 방법으로, 사용자에 의해 인스턴스화된 탭에 대한 새로운 렌더 뷰를 생성할 수 있다.
도 4는 인스턴스화되는 팝-업 창에 대한 렌더 뷰를 생성하는 데에 사용될 수 있는 실시예에 따른 방법(400)을 설명하는 흐름도이다(단계(402-412)). 방법(400)은 브라우저 프로세스(110)가 콘텐츠 영역이 팝-업 창의 인스턴스화를 요청하였는지 체크하는 것으로 시작한다(단계(402)). 브라우저 프로세스(110)의 콘텐츠 영역이 팝-업 창의 인스턴스화를 요청하지 않았다면, 방법(400)은 리턴한다. 브라우저 프로세스(110)의 콘텐츠 영역이 팝-업을 인스턴스화 했다면, 콘텐츠에 대응하는 렌더 뷰(246)는 팝-업 창에 대한 새로운 렌더 뷰(246)를 인스턴스화할 대응하는 렌더 프로세스 호스트(214)에 메시지를 보낸다(단계(404)). 렌더 프로세스 호스트(214)를 사용하여 렌더 뷰(246)를 생성한다(단계(406)). 이러한 방법으로, 팝-업 창에 대한 새로운 렌더 뷰를 생성할 수 있다.
도 5는 교착 상태의 렌더링 엔진 프로세스(120A-N)를 종료하는 데에 사용될 수 있는 실시예에 따른 방법(500)을 설명하는 흐름도이다(단계(502-506)). 방법(500)은 브라우저 프로세스(100)가 워치독 쓰레드(262)가 렌더링 엔진 프로세스(들)(120A-N)의 교착 상태를 검출하였는지 체크하는 것으로 시작한다(단계(502)). 워치독 쓰레드(262)가 렌더링 엔진 프로세스 교착 상태를 검출하지 않았다면, 방법(500)은 리턴한다. 워치독 쓰레드(262)가 렌더링 엔진 프로세스 교착 상태를 검출했다면, 교착 상태의 렌더링 엔진 프로세스(들)(120A-N)의 종료를 승인하도록 사용자에게 통지한다(단계(504)). 워치독 쓰레드(262)는 사용자가 교착 상태의 렌더링 엔진 프로세스(들)(120A-N)의 종료를 승인했는지를 체크한다(단계(506)). 사용자가 교착 상태의 렌더링 엔진 프로세스의 종료를 승인하지 않았다면, 방법(500)은 리턴한다. 사용자가 교착 상태의 렌더링 엔진 프로세스(들)(120A-N)의 종료를 승인했다면, 교착 상태의 렌더링 엔진 프로세스(들)(120A-N)는 워치독 쓰레드(262)에 의해 종료된다(단계(508)). 이러한 방법으로, 교착 상태의 렌더링 엔진 프로세스(120A-N)는 워치독 쓰레드(262)에 의해 종료된다.
도 6은 무응답인 렌더링 엔진 프로세스를 재생성하는 데에 사용될 수 있는 실시예에 따른 방법(600)을 설명하는 흐름도이다(단계(602-606)). 방법(600)은 브라우저 프로세스(110)가 렌더링 엔진 프로세스(120A)가 응답중인지를 체크하는 것으로 시작한다(단계(602)). 렌더링 엔진 프로세스(120A)가 응답중이라면, 방법(600)은 리턴한다. 렌더링 엔진 프로세스(120A)가 응답중이 아니라면 브라우저 프로세스(110)는 새로운 렌더링 엔진 프로세스를 생성한다(단계(604)). 그리고 브라우저 프로세스(110)는 브라우저 스테이트(212)에 포함될 수 있는 세션 히스토리를 재저장한다(단계(606)). 이러한 방법으로, 무응답인 렌더링 엔진 프로세스(120A)는 브라우저 프로세스(110)에 의해 재생성될 수 있다.
예시 동작
이 섹션은 다중-프로세스 브라우저 아키텍처(100)의 실시예의 예시 동작을 설명한다. 다음의 예시 동작은 시스템(100)에 대해 설명되지만, 그것은 시스템(100)의 실시예들로 제한되지는 않는다.
이 예시에서는, 사용자가 온라인 쇼핑 스토어인 아마존으로부터 책을 구매하기로 결정한다. 아마존에 의해 제공되는 콘텐츠를 방문하기 위해 사용자는 먼저 그의 데스크톱 상의 브라우저 아이콘을 클릭할 수 있다. 본 발명을 제한하려는 것이 아닌 일례로서, 이 브라우저 아이콘은 탭 뷰 브라우저에 대응한다. 브라우저 아이콘을 클릭하는 것은 브라우저 프로세스(110)를 시작할 수 있다. 사용자가 스크린 상의 콘텐츠를 볼 필요가 있기 때문에, 브라우저 프로세스(110)는 렌더링 엔진 프로세스(120A)를 인스턴스화할 수 있다. 대부분의 경우에서, 브라우저들은 브라우저가 시작됐을 때 그것이 이동하는 "홈페이지"로 알려진 디폴트 페이지를 갖는다. 브라우저 프로세스(110)는 새로운 렌더 뷰 호스트(218)를 생성할 수 있다. 렌더 뷰 호스트(218)는 새로운 렌더 프로세스 호스트(214)를 식별할 수 있다. 렌더 프로세스 호스트(214)는 새로운 렌더 뷰(246)를 생성할 수 있다. 렌더 뷰(246)는 브라우저의 홈페이지에 의해 제공되는 콘텐츠를 렌더링한다.
책을 구매하려 아마존을 방문하기 위해, 사용자는 브라우저 창 내에서 새로운 탭을 열기로 결정한다. 사용자가 새로운 탭을 열기 위한 지시를 제공하면, 브라우저 프로세스(110)는 새로운 렌더링 엔진 프로세스(120B)를 생성하고 탭을 인스턴스화한다. 브라우저 프로세스(110)는 새로운 렌더 뷰 호스트(218)를 생성할 수 있다. 렌더 뷰 호스트(218)는 새로운 렌더 프로세스 호스트(214)를 식별할 수 있다. 렌더 프로세스 호스트(214)는 그 탭과 관련된 콘텐츠를 위한 새로운 렌더 뷰(246)를 생성할 수 있다. 그리고 사용자는 브라우저의 어드레스 바에 URL "http://www.amazon.com"을 입력할 수 있고 "http://www.amazon.com"에 의해 제공되는 콘텐츠로 이동하기 위해 키보드 상의 "Enter" 키를 누를 수 있다. 그리고 렌더 뷰(246)는 "http://www.amazon.com"에 의해 제공되는 콘텐츠를 렌더링할 수 있다. 새로운 탭 인스턴스화에 응답하는 렌더 뷰의 생성은 도 3에 도시된 방법(300)에서 설명된다.
렌더 뷰(246)가 "http://www.amazon.com"에 대한 모든 콘텐츠를 렌더링한 후에, 사용자는 콘텐츠를 보기 시작하고 아마존 홈페이지 상에 제공된 "도서" 링크를 클릭함으로써 아마존 서점으로 이동하기로 결정한다. 사용자가 "도서" 링크를 클릭하면, 그는 "http://www.amazon.com"으로부터 도서와 관련된 상이한 콘텐츠를 가진 페이지로 이동할 수 있다. 사용자가 그 페이지로부터 이동할 수 있지만, 동일한 렌더 뷰(246)에 의해 콘텐츠가 렌더링될 수 있고 새로운 콘텐츠를 위한 새로운 렌더 뷰가 인스턴스화될 필요가 없을 수 있다. 렌더 뷰(246)는 아마존 웹사이트의 "도서"와 관련된 페이지에 대한 콘텐츠를 렌더링한다.
아마존은 특정 도서에 대해 특가 정책을 실행 중일 수 있고 웹사이트는 그 특가 할인에 사용자의 관심을 모으기 위해 팝-업 창을 생성하기를 원할 수 있다. 아마존 콘텐츠 영역에 의해 팝-업 창이 생성되어야 할 때, 현재 창의 콘텐츠에 대응하는 렌더 뷰(246)로부터 대응하는 렌더 프로세스 호스트(214)에 메시지를 보낼 수 있다. 그리고 렌더 프로세스 호스트(214)는 팝-업 창에 대응하는 콘텐츠를 렌더링하기 위해 렌더 뷰(246)의 새로운 인스턴스를 생성한다. 따라서 팝-업 창은 사용자에게 디스플레이될 수 있다. 새로운 탭 인스턴스화에 응답하는 렌더 뷰의 생성은 도 4에 도시된 방법(400)에서 설명된다.
사용자는 "도서" 페이지 상의 관심 도서를 위해 아마존을 계속해서 브라우징하기를 원할 수 있지만, "도서" 페이지에 의해 제공되는 특정 콘텐츠는 페이지를 렌더링하는 탭이 무응답이 되게 한다. 이러한 무응답 동작은 "도서" 페이지에 의해 제공되는 콘텐츠를 렌더링할 책임이 있는 무응답인 렌더링 엔진 프로세스(120B)에 의해 야기될 수 있다. 사용자에게 이러한 탭의 무응답 상태를 알리기 위해, 예를 들면, 브라우저 프로세스(110)는 사용자가 탭을 닫기를 원하는지 물어보는 프롬프트를 디스플레이할 수 있다. 세션 히스토리와 탭에 렌더링된 콘텐츠의 스크롤 위치가 브라우저 프로세스(110)에 의해 브라우저 스테이트(212)에 저장되었기 때문에, 사용자가 렌더러 프로세스(120B)를 종료하도록 탭을 닫기로 결정하더라도, 브라우저 프로세스(110)는 렌더링 엔진 프로세스(120B)가 무응답이 되던 때에 존재한 콘텐츠를 갖도록 닫힌 탭을 재생성할 수 있다. 교착 상태의 렌더링 엔진 프로세스의 종료가 도 5의 방법(500)에서 설명된다. 무응답 렌더링 엔진 프로세스의 재생성은 또한 도 6에 도시된 방법(600)에서 설명된다.
렌더링 엔진 프로세스(120B)가 브라우저에서 열린 임의의 다른 탭들에 의해 사용되지 않기 때문에, 렌더링 엔진 프로세스(120B)의 임의의 오류 또는 워치독 쓰레드(262) 또는 사용자에 의한 렌더링 엔진 프로세스(120B)의 종료는 다른 렌더링 엔진 프로세스(120A) 또는 브라우저 프로세스(110)에 영향을 미치지 않을 수 있다.
이러한 방식으로 브라우저들은 다른 브라우저 프로세스들에 영향을 끼치는 하나의 또는 다수의 오류 프로세스의 영향을 피할 수 있다. 이것은 사용자 경험을 향상하면서 사용자 효율성을 개선할 수 있다.
결론
발명의 내용 및 요약 섹션들이 아닌, 발명을 실시하기 위한 구체적인 내용 섹션이 특허청구범위를 해석하는 데에 사용되도록 의도된 것이 이해될 것이다. 발명의 내용 및 요약 섹션들은 발명자(들)에 의해 고려되는 본 발명의 하나 이상의 그러나 모두는 아닌 예시적인 실시예들을 나열할 수 있고, 따라서 어느 방법으로도 본 발명 및 첨부된 청구범위를 제한하도록 의도되지 않았다.
본 발명은 구체화된 기능들 및 그것들의 관계들의 구현을 도시하는 기능적 설계 블록들의 도음으로 전술되었다. 이러한 기능적 설계 블록들의 경계는 명세서의 편의를 위해 본원에서 임의적으로 정의되었다. 대안적인 경계들이 구체화된 기능들 및 그것들의 관계들이 적절히 수행되는 한 정의될 수 있다.
특정 실시예들의 전술된 설명은 다른이들도 당 분야의 기술 내의 지식을 적용함으로써, 과도한 실험없이 본 발명의 일반적인 개념을 벗어나지 않고, 그러한 특정한 실시예들을 다양한 응용들을 위해 쉽게 변경 및/또는 적용할 수 있다는 본 발명의 일반적인 본질을 충분히 설명할 것이다. 그러므로, 그러한 적용들 및 변경들은 본원에 나타난 교시 및 지침에 기초하여, 개시된 실시예들의 균등항들의 의미 및 범위 내에 있도록 의도된다. 본 명세서의 용어 또는 어구가 당업자들에 의해 이해될 수 있도록, 본원의 어구 또는 용어는 설명의 목적일 뿐, 제한적 이지는 않다.
본 발명의 폭 및 범위는 전술된 예시적인 실시예들에 의해 제한되어서는 안되고, 첨부의 청구범위 및 그것들의 균등항들에 따라서만 정의되어야 한다.

Claims (18)

  1. 브라우저의 콘텐츠 영역을 인스턴스화(instantiate)하는 컴퓨터 기반 시스템으로서,
    하나 이상의 프로세서들;
    콘텐츠 영역을 렌더링하는 각각의 브라우저 인스턴스에 대한 적어도 하나의 렌더링 엔진 프로세스; 및
    하나 또는 복수의 렌더링 엔진 프로세스들과 통신하는 적어도 하나의 브라우저 프로세스
    를 포함하고,
    상기 브라우저 프로세스 및 상기 렌더링 엔진 프로세스는 상기 하나 이상의 프로세서들 상에서 구현되는 시스템.
  2. 제1항에 있어서,
    상기 브라우저 프로세스는 렌더 뷰 호스트를 포함하는 시스템.
  3. 제2항에 있어서,
    상기 렌더 뷰 호스트는 상기 적어도 하나의 렌더링 엔진 프로세스의 각각에 대하여 적어도 하나의 렌더 뷰를 인스턴스화하는 시스템.
  4. 제3항에 있어서,
    상기 렌더 뷰는 콘텐츠 영역에 콘텐츠를 렌더링하는 시스템.
  5. 제4항에 있어서,
    상기 렌더 뷰는 뷰 식별자를 포함하는 시스템.
  6. 제1항에 있어서,
    상기 렌더링 엔진 프로세스는 웹키트(webkit)를 포함하는 시스템.
  7. 제1항에 있어서,
    상기 렌더링 엔진 프로세스는 워치독 쓰레드(thread)를 포함하는 시스템.
  8. 제1항에 있어서,
    렌더 프로세스를 인스턴스화하는 렌더 프로세스 호스트를 더 포함하는 시스템.
  9. 제7항에 있어서,
    상기 렌더 프로세스는 렌더러 스테이트를 포함하는 시스템.
  10. 제7항에 있어서,
    상기 렌더 프로세스 호스트는 브라우저 스테이트를 포함하는 시스템.
  11. 제1항에 있어서,
    상기 브라우저 프로세스에 리소스들을 제공하는 리소스 디스패쳐(dispatcher) 호스트를 더 포함하는 시스템.
  12. 제1항에 있어서,
    상기 렌더링 엔진은 상기 리소스 디스패쳐 호스트에 리소스 요청들을 제공하는 리소스 디스패쳐를 포함하는 시스템.
  13. 브라우저의 콘텐츠 영역을 인스턴스화하는 컴퓨터 구현 방법으로서,
    (a) 각각의 콘텐츠 영역 인스턴스에 대하여 고유한 렌더링 엔진 프로세스를 인스턴스화하는 단계; 및
    (b) 고유한 브라우저 프로세스를 인스턴스화하는 단계
    를 포함하고,
    (a) - (b)의 단계들 중 적어도 하나가 하나 이상의 프로세서들 상에서 구현되는 방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 렌더링 엔진 프로세스의 각각에 대하여 적어도 하나의 렌더 뷰를 인스턴스화하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 렌더 뷰를 사용하여 상기 콘텐츠 영역 인스턴스에 콘텐츠를 렌더링하는 단계를 더 포함하는 방법.
  16. 제13항에 있어서,
    렌더 프로세스 호스트를 사용하여 렌더 프로세스를 인스턴스화하는 단계를 더 포함하는 방법.
  17. 제13항에 있어서,
    리소스 디스패쳐 호스트를 사용하여 상기 브라우저 프로세스에 하나 이상의 리소스들을 제공하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    리소스 디스패쳐를 사용하여 상기 리소스 디스패쳐에 하나 이상의 리소스 요청들을 제공하는 단계를 더 포함하는 방법.
KR1020167014531A 2008-05-13 2009-05-12 다중-프로세스 브라우저 아키텍처 KR20160067200A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5271908P 2008-05-13 2008-05-13
US61/052,719 2008-05-13
PCT/US2009/002917 WO2009139845A1 (en) 2008-05-13 2009-05-12 Multi-process browser architecture

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027989A Division KR101664367B1 (ko) 2008-05-13 2009-05-12 다중-프로세스 브라우저 아키텍처

Publications (1)

Publication Number Publication Date
KR20160067200A true KR20160067200A (ko) 2016-06-13

Family

ID=40872467

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167014531A KR20160067200A (ko) 2008-05-13 2009-05-12 다중-프로세스 브라우저 아키텍처
KR1020107027989A KR101664367B1 (ko) 2008-05-13 2009-05-12 다중-프로세스 브라우저 아키텍처

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020107027989A KR101664367B1 (ko) 2008-05-13 2009-05-12 다중-프로세스 브라우저 아키텍처

Country Status (8)

Country Link
US (4) US8307300B1 (ko)
EP (1) EP2304566A1 (ko)
KR (2) KR20160067200A (ko)
CN (1) CN102027454A (ko)
AU (1) AU2009246884B2 (ko)
BR (1) BRPI0911981B1 (ko)
CA (1) CA2723274C (ko)
WO (1) WO2009139845A1 (ko)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307300B1 (en) 2008-05-13 2012-11-06 Google Inc. Content resizing and caching in multi-process browser architecture
US8819585B2 (en) * 2008-10-27 2014-08-26 Microsoft Corporation Child window surfacing and management
US9232011B2 (en) * 2010-03-26 2016-01-05 Microsoft Technology Licensing, Llc Tracking navigation flows within the same browser tab
EP2608047A4 (en) * 2010-08-16 2014-04-30 Rakuten Inc INTERNET MANAGEMENT DEVICE, INTERNET MANAGEMENT METHOD, INTERNET MANAGEMENT PROGRAM, COMPUTER-READABLE RECORDING MEDIUM FOR RECORDING THE PROGRAM, AND INTERNET SYSTEM
JP2012058856A (ja) * 2010-09-06 2012-03-22 Sony Corp 情報処理装置、情報処理方法及び情報処理プログラム
US8667505B2 (en) * 2010-09-14 2014-03-04 Microsoft Corporation Message queue management
CN102467565B (zh) * 2010-11-19 2016-05-11 北京奇虎科技有限公司 一种浏览器内核切换的方法
US8589950B2 (en) 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
CN102436457B (zh) * 2011-02-18 2014-04-16 奇智软件(北京)有限公司 一种分配浏览器进程的方法及其设备
US8832690B1 (en) 2011-06-21 2014-09-09 Google Inc. Multi-threaded virtual machine processing on a web page
US9928083B2 (en) * 2011-07-08 2018-03-27 Microsoft Technology Licensing, Llc Tab trimming
US9563971B2 (en) * 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
CN103019832B (zh) * 2011-09-20 2016-08-31 百度在线网络技术(北京)有限公司 浏览器的切换控制方法及装置
US8700990B1 (en) * 2011-09-20 2014-04-15 Google Inc. PDF plugin to view any page
CN103176775B (zh) * 2011-12-22 2016-08-24 腾讯科技(深圳)有限公司 一种实现网页应用程序本地化的方法和装置
CN104035815B (zh) * 2011-12-29 2017-12-12 北京奇虎科技有限公司 一种窗口防假死方法和装置
CN102591711B (zh) 2011-12-29 2014-06-25 奇智软件(北京)有限公司 一种窗口防假死方法和装置
US9384711B2 (en) * 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
CN102622439B (zh) * 2012-03-06 2014-06-11 北京奇虎科技有限公司 一种在浏览器中展示文档的方法及装置
CN102915251B (zh) * 2012-03-08 2014-06-18 北京金山安全软件有限公司 一种多页面浏览器处理消息的方法和装置
CN102663318B (zh) * 2012-03-22 2015-04-08 百度在线网络技术(北京)有限公司 一种浏览器进程权限的控制方法
CN103377228B (zh) * 2012-04-25 2016-09-07 阿里巴巴集团控股有限公司 一种用于浏览器的页面内容呈现方法及装置
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9177533B2 (en) 2012-05-31 2015-11-03 Microsoft Technology Licensing, Llc Virtual surface compaction
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9690748B1 (en) * 2012-07-02 2017-06-27 Amazon Technologies, Inc. Delivering notifications to background applications
US10021052B1 (en) 2012-09-22 2018-07-10 Sitting Man, Llc Methods, systems, and computer program products for processing a data object identification request in a communication
US9996631B2 (en) * 2012-09-25 2018-06-12 Opera Software As Information management and display in web browsers
CN103713910B (zh) * 2012-09-28 2018-03-02 腾讯科技(深圳)有限公司 一种检测多核浏览器内核的方法和装置
US9070211B1 (en) * 2012-10-18 2015-06-30 Google Inc. Webview tag for a sandboxed multiprocess browser
CN103793282B (zh) * 2012-11-02 2017-08-18 阿里巴巴集团控股有限公司 一种浏览器及其结束标签页的方法
US9367211B1 (en) * 2012-11-08 2016-06-14 Amazon Technologies, Inc. Interface tab generation
KR101401948B1 (ko) * 2012-11-19 2014-05-30 한국인터넷진흥원 대규모 웹사이트 방문점검 방법
KR101388962B1 (ko) * 2012-11-19 2014-04-24 한국인터넷진흥원 대규모 웹사이트 고속 점검방법
US9977683B2 (en) * 2012-12-14 2018-05-22 Facebook, Inc. De-coupling user interface software object input from output
US11050851B2 (en) * 2013-04-30 2021-06-29 Adobe Inc. Drag-and-drop clipboard for HTML documents
US9542906B2 (en) 2013-05-10 2017-01-10 Microsoft Technology Licensing, Llc Shared compositional resources
US20140344729A1 (en) * 2013-05-15 2014-11-20 Microsoft Corporation Primitive-based composition
US10803232B2 (en) 2013-06-06 2020-10-13 International Business Machines Corporation Optimizing loading of web page based on aggregated user preferences for web page elements of web page
US10334776B2 (en) * 2013-06-12 2019-07-02 Agco Corporation Method and system having an intermediate holding vessel for combining chemical injection substances for a spray system
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
CN104376016B (zh) * 2013-08-15 2019-06-07 腾讯科技(深圳)有限公司 一种浏览器中跨进程渲染方法和装置
CN103559097B (zh) * 2013-10-18 2017-06-09 北京奇虎科技有限公司 一种浏览器中进程间通信的方法、装置和浏览器
CN103544068B (zh) * 2013-10-18 2017-05-24 北京奇虎科技有限公司 一种浏览器中进程间通信的方法、装置和浏览器
US9692633B2 (en) 2013-11-15 2017-06-27 Sap Se Role-based resource navigation
US10282395B2 (en) * 2013-11-15 2019-05-07 Sap Se Handling timer-based resizing events based on activity detection
CN103647768A (zh) * 2013-12-06 2014-03-19 北京奇虎科技有限公司 游戏客户端及其实现方法
CN104809122B (zh) * 2014-01-24 2019-03-26 北京猎豹移动科技有限公司 一种访问网页的方法及装置
JP6703370B2 (ja) * 2014-03-14 2020-06-03 国立大学法人 東京大学 ドキュメント提供システム、提供側装置、表示側装置、及びプログラム
CN106105090B (zh) * 2014-04-14 2019-10-22 迈克菲股份有限公司 利用会话共享自动登录和登出会话
US9652130B1 (en) * 2014-04-23 2017-05-16 Google Inc. Auto-sizing an untrusted view
US9747165B1 (en) 2014-04-23 2017-08-29 Google Inc. Self-recovering application
CN103955388B (zh) * 2014-04-29 2017-09-12 百度在线网络技术(北京)有限公司 客户端的冷启动方法及装置
US20150339033A1 (en) * 2014-05-21 2015-11-26 Facebook, Inc. Asynchronous Execution of Tasks for a GUI
US9348645B2 (en) * 2014-05-30 2016-05-24 Apple Inc. Method and apparatus for inter process priority donation
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
US10387540B2 (en) * 2014-09-09 2019-08-20 Intentional Software Corporation Generating a visual layout tree using caching techniques
US10402478B2 (en) 2014-09-09 2019-09-03 Intentional Software Corporation Linking visual layout nodes of a visual layout tree using positioning pointers
US11003833B2 (en) 2014-09-09 2021-05-11 Microsoft Technology Licensing, Llc Adding visual description nodes to a visual description tree during layout
US10353991B2 (en) 2014-09-09 2019-07-16 Intentional Software Corporation Generating a visual description tree based on a layout interruption record
US10387547B2 (en) 2014-09-09 2019-08-20 Intentional Software Corporation Layout engine for creating a visual layout tree for a document
US10430500B2 (en) 2014-09-09 2019-10-01 Intentional Software Corporation Detecting and animating a change in position of a visual layout node of a visual layout tree
TW201616846A (zh) * 2014-10-16 2016-05-01 Walton Advanced Eng Inc 一種引導裝置之執行方法
US10136650B2 (en) * 2015-03-18 2018-11-27 Umm-Al-Qura University Repellant composition for an anti-repellant fabric and a device to evaluate the same
JP6658136B2 (ja) * 2016-03-14 2020-03-04 コニカミノルタ株式会社 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム
US10938915B1 (en) * 2016-08-16 2021-03-02 United Services Automobile Association (Usaa) Session data isolation and management
CN107067244B (zh) 2016-11-03 2020-09-29 阿里巴巴集团控股有限公司 业务实现方法、支付方法、业务实现装置及支付服务端
US11122013B2 (en) * 2017-02-16 2021-09-14 Emerald Cactus Ventures, Inc. System and method for encrypting data interactions delineated by zones
WO2018151851A1 (en) * 2017-02-16 2018-08-23 Tenta, Llc System and method for establishing simultaneous encrypted virtual private networks from a single computing device
WO2018151847A1 (en) * 2017-02-16 2018-08-23 Tenta, Llc System and method for creating encrypted virtual private network hotspot
CN109101298B (zh) * 2017-06-20 2021-09-07 武汉斗鱼网络科技有限公司 Windows跨进程窗口管理方法、存储介质、电子设备及系统
US20190347315A1 (en) * 2018-05-08 2019-11-14 International Business Machines Corporation Methods and systems for rendering web pages with restricted features
US10983811B2 (en) 2018-06-03 2021-04-20 Apple Inc. Multi-process model for cross-platform applications
US10474479B1 (en) 2018-06-03 2019-11-12 Apple Inc. Preventing framework conflicts for multi-OS applications
US10671236B2 (en) * 2018-09-20 2020-06-02 Salesforce.Com, Inc. Stateful, contextual, and draggable embedded widget
US11334385B2 (en) * 2020-02-26 2022-05-17 The Toronto-Dominion Bank Browser-based processing of data

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764235A (en) * 1996-03-25 1998-06-09 Insight Development Corporation Computer implemented method and system for transmitting graphical images from server to client at user selectable resolution
US5819263A (en) 1996-07-19 1998-10-06 American Express Financial Corporation Financial planning system incorporating relationship and group management
AU6037198A (en) * 1997-01-27 1998-08-26 Benjamin Slotznick System for delivering and simultaneously displaying primary and secondary information, and for displaying only the secondary information during interstitial space
US6212560B1 (en) * 1998-05-08 2001-04-03 Compaq Computer Corporation Dynamic proxy server
US6820235B1 (en) 1998-06-05 2004-11-16 Phase Forward Inc. Clinical trial data management system and method
US6456305B1 (en) * 1999-03-18 2002-09-24 Microsoft Corporation Method and system for automatically fitting a graphical display of objects to the dimensions of a display window
US7028264B2 (en) * 1999-10-29 2006-04-11 Surfcast, Inc. System and method for simultaneous display of multiple information sources
US6742043B1 (en) * 2000-01-14 2004-05-25 Webtv Networks, Inc. Reformatting with modular proxy server
JP2003521784A (ja) * 2000-02-04 2003-07-15 アメリカ オンライン インコーポレーティッド スケーラブルなウェブページを配信およびレンダリングするためのシステムとプロセス
US6915484B1 (en) * 2000-08-09 2005-07-05 Adobe Systems Incorporated Text reflow in a structured document
US7073199B1 (en) 2000-08-28 2006-07-04 Contentguard Holdings, Inc. Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine
US6657647B1 (en) * 2000-09-25 2003-12-02 Xoucin, Inc. Controlling the order in which content is displayed in a browser
US7343419B1 (en) * 2000-10-05 2008-03-11 Aol Llc Rerouting media to selected media applications
US7665115B2 (en) * 2001-02-02 2010-02-16 Microsoft Corporation Integration of media playback components with an independent timing specification
US6943773B2 (en) 2001-05-11 2005-09-13 Palmone, Inc. Page flicking mechanism for electronic display devices that paginate content
US6983307B2 (en) * 2001-07-11 2006-01-03 Kirusa, Inc. Synchronization among plural browsers
WO2003009102A2 (en) * 2001-07-19 2003-01-30 Wind River Systems, Inc. Browser having dynamically self-adjusting rendering functionality
US7127503B2 (en) * 2001-10-10 2006-10-24 Juniper Networks, Inc. Computer networking system, device, and method for improved speed in web page rendering
US7257776B2 (en) * 2002-02-05 2007-08-14 Microsoft Corporation Systems and methods for scaling a graphical user interface according to display dimensions and using a tiered sizing schema to define display objects
CN1669020A (zh) * 2002-02-15 2005-09-14 特里迪姆公司 用于实时系统控制的组件模型
US20050116966A1 (en) * 2002-04-04 2005-06-02 Graham James J. Web imaging serving technology
AU2003212464A1 (en) * 2002-04-25 2003-11-10 Thomson Licensing S.A. Video resolution control for a web browser and video display
US20030221068A1 (en) 2002-05-23 2003-11-27 Michael Tsuji Method and system for data cache
US6973480B2 (en) * 2002-09-26 2005-12-06 Sun Microsystems, Inc. Mechanism for implementing server-side pluglets
KR20040049488A (ko) * 2002-12-06 2004-06-12 삼성전자주식회사 애플릿 실행 장치 및 방법
US20040128342A1 (en) * 2002-12-31 2004-07-01 International Business Machines Corporation System and method for providing multi-modal interactive streaming media applications
US20070128899A1 (en) 2003-01-12 2007-06-07 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
US20080177994A1 (en) * 2003-01-12 2008-07-24 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
US20040152062A1 (en) * 2003-02-03 2004-08-05 Adams Milton N. Web-based learning and literacy education using core constructs and constructive surfing
EP1605336A4 (en) * 2003-03-18 2007-01-24 Access Co Ltd NAVIGATION PROGRAM AND CONTENT DISPLAY DEVICE
DE10349972A1 (de) * 2003-10-24 2005-05-25 Röhm GmbH & Co. KG Verfahren zur Herstellung von polymerisierbaren Polyhydroxyverbindungen
KR100624786B1 (ko) * 2004-01-29 2006-09-19 엘지전자 주식회사 무선 네트워크망을 통해 통신하는 서버 시스템
US7546539B2 (en) 2004-03-10 2009-06-09 Siebel Systems, Inc. Browser back and forth navigation
US20060004785A1 (en) 2004-06-03 2006-01-05 International Business Machines Corporation Saving multiple browser instances as a selectable web project
US20060031760A1 (en) * 2004-08-05 2006-02-09 Microsoft Corporation Adaptive document layout server/client system and process
US20060080292A1 (en) 2004-10-08 2006-04-13 Alanzi Faisal Saud M Enhanced interface utility for web-based searching
US7921365B2 (en) 2005-02-15 2011-04-05 Microsoft Corporation System and method for browsing tabbed-heterogeneous windows
US7596760B2 (en) 2005-04-07 2009-09-29 Microsoft Corporation System and method for selecting a tab within a tabbed browser
US7827503B2 (en) 2005-07-27 2010-11-02 Yahoo! Inc. Automatically generating a search result in a separate window for a displayed symbol that is selected with a drag and drop control
US7703013B1 (en) * 2005-08-16 2010-04-20 Adobe Systems Inc. Methods and apparatus to reformat and distribute content
US7673233B2 (en) 2005-09-08 2010-03-02 Microsoft Corporation Browser tab management
US8775662B2 (en) 2005-09-27 2014-07-08 Blackberry Limited System and method for progressive delivery of multimedia objects
US7506248B2 (en) * 2005-10-14 2009-03-17 Ebay Inc. Asynchronously loading dynamically generated content across multiple internet domains
US20100153836A1 (en) * 2008-12-16 2010-06-17 Rich Media Club, Llc Content rendering control system and method
US7475359B2 (en) 2006-02-09 2009-01-06 International Business Machines Corporation User interface for a tabbed pane
AU2007227611B2 (en) * 2006-03-15 2013-07-11 Google Llc Automatic display of resized images
US20080065237A1 (en) 2006-09-10 2008-03-13 Long Wesley V Dynamic HTML based Multi Tabbed Sortable Results
US20090210631A1 (en) * 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
CN100568808C (zh) * 2006-10-12 2009-12-09 国际商业机器公司 对多个网络服务器并行操作的方法和装置
US7996756B2 (en) * 2007-09-12 2011-08-09 Vistaprint Technologies Limited System and methods for displaying user modifiable server-rendered images
US20090132949A1 (en) 2007-11-16 2009-05-21 Jason Bosarge Methods and systems for transmitting, receiving and annotating internet content
US20090228838A1 (en) * 2008-03-04 2009-09-10 Ryan Christopher N Content design tool
US8307300B1 (en) * 2008-05-13 2012-11-06 Google Inc. Content resizing and caching in multi-process browser architecture
US9071651B2 (en) * 2008-06-05 2015-06-30 Microsoft Technology Licensing, Llc Dynamic content delivery to network-enabled static display device
US8356247B2 (en) * 2008-12-16 2013-01-15 Rich Media Worldwide, Llc Content rendering control system and method
US8799806B2 (en) 2008-12-31 2014-08-05 Verizon Patent And Licensing Inc. Tabbed content view on a touch-screen device
US20100218122A1 (en) * 2009-02-20 2010-08-26 Microsoft Corporation Asynchronously uploading and resizing content in web-based applications
US8140646B2 (en) 2009-06-04 2012-03-20 Microsoft Corporation Network application performance enhancement using speculative execution
US8924943B2 (en) * 2009-07-17 2014-12-30 Ebay Inc. Browser emulator system
US20110271217A1 (en) 2010-04-30 2011-11-03 Microsoft Corporation Configurable presets for tab groups

Also Published As

Publication number Publication date
EP2304566A1 (en) 2011-04-06
US20130014037A1 (en) 2013-01-10
US8307300B1 (en) 2012-11-06
US8291078B2 (en) 2012-10-16
WO2009139845A1 (en) 2009-11-19
AU2009246884B2 (en) 2014-10-16
BRPI0911981A2 (pt) 2016-09-13
KR20110019741A (ko) 2011-02-28
BRPI0911981B1 (pt) 2019-10-15
CA2723274A1 (en) 2009-11-19
KR101664367B1 (ko) 2016-10-10
AU2009246884A1 (en) 2009-11-19
US20090287824A1 (en) 2009-11-19
CN102027454A (zh) 2011-04-20
CA2723274C (en) 2016-07-26
US8402383B1 (en) 2013-03-19
US8954589B2 (en) 2015-02-10

Similar Documents

Publication Publication Date Title
KR101664367B1 (ko) 다중-프로세스 브라우저 아키텍처
US9485240B2 (en) Multi-account login method and apparatus
US20090288098A1 (en) Separate Plug-In Processes In Browsers and Applications Thereof
US10015226B2 (en) Methods for making AJAX web applications bookmarkable and crawlable and devices thereof
US20140143644A1 (en) Web browser page transition acceleration
US20060265662A1 (en) System and method for generating and updating user interfaces of web-based applications
US8914813B1 (en) Interfaces to enable cross-browser extensions and applications thereof
US11799849B2 (en) Secure web application delivery platform
KR100481064B1 (ko) 서버와 클라이언트노드 사이의 접속을 관리하기 위한시스템 및 방법
EP1872208A1 (en) Method and apparatus to select and deliver portable portlets
Aguilar SignalR Programming in Microsoft ASP. NET
JP2002063090A (ja) ウェブ・ページに対するブックマーク・イベントを処理するための装置および方法
US20090222736A1 (en) Systems and methods for a filter module for a browser history
US20130304807A1 (en) Methods, systems, and computer program products for processing a non-returnable command response based on a markup element
Message et al. Controlling control flow in web applications
Smith et al. Serving JSON
Reid et al. HTML5 APIs

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application