Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "content/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 2246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2257 completed_client_redirect_src_ = from; | 2257 completed_client_redirect_src_ = from; |
| 2258 FOR_EACH_OBSERVER( | 2258 FOR_EACH_OBSERVER( |
| 2259 RenderViewObserver, observers_, DidCompleteClientRedirect(frame, from)); | 2259 RenderViewObserver, observers_, DidCompleteClientRedirect(frame, from)); |
| 2260 } | 2260 } |
| 2261 | 2261 |
| 2262 void RenderViewImpl::didCreateDataSource(WebFrame* frame, WebDataSource* ds) { | 2262 void RenderViewImpl::didCreateDataSource(WebFrame* frame, WebDataSource* ds) { |
| 2263 // The rest of RenderView assumes that a WebDataSource will always have a | 2263 // The rest of RenderView assumes that a WebDataSource will always have a |
| 2264 // non-null NavigationState. | 2264 // non-null NavigationState. |
| 2265 bool content_initiated = !pending_navigation_state_.get(); | 2265 bool content_initiated = !pending_navigation_state_.get(); |
| 2266 NavigationState* state = content_initiated ? | 2266 NavigationState* state = content_initiated ? |
| 2267 NavigationState::CreateContentInitiated() : | 2267 NavigationState::CreateContentInitiated(ds) : |
| 2268 pending_navigation_state_.release(); | 2268 pending_navigation_state_.release(); |
| 2269 | 2269 |
| 2270 // NavigationState::referred_by_prefetcher_ is true if we are | 2270 // NavigationState::referred_by_prefetcher_ is true if we are |
| 2271 // navigating from a page that used prefetching using a link on that | 2271 // navigating from a page that used prefetching using a link on that |
| 2272 // page. We are early enough in the request process here that we | 2272 // page. We are early enough in the request process here that we |
| 2273 // can still see the NavigationState of the previous page and set | 2273 // can still see the NavigationState of the previous page and set |
| 2274 // this value appropriately. | 2274 // this value appropriately. |
| 2275 // TODO(gavinp): catch the important case of navigation in a new | 2275 // TODO(gavinp): catch the important case of navigation in a new |
| 2276 // renderer process. | 2276 // renderer process. |
| 2277 if (webview()) { | 2277 if (webview()) { |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2313 | 2313 |
| 2314 ds->setExtraData(state); | 2314 ds->setExtraData(state); |
| 2315 | 2315 |
| 2316 FOR_EACH_OBSERVER( | 2316 FOR_EACH_OBSERVER( |
| 2317 RenderViewObserver, observers_, DidCreateDataSource(frame, ds)); | 2317 RenderViewObserver, observers_, DidCreateDataSource(frame, ds)); |
| 2318 } | 2318 } |
| 2319 | 2319 |
| 2320 void RenderViewImpl::didStartProvisionalLoad(WebFrame* frame) { | 2320 void RenderViewImpl::didStartProvisionalLoad(WebFrame* frame) { |
| 2321 WebDataSource* ds = frame->provisionalDataSource(); | 2321 WebDataSource* ds = frame->provisionalDataSource(); |
| 2322 NavigationState* navigation_state = NavigationState::FromDataSource(ds); | 2322 NavigationState* navigation_state = NavigationState::FromDataSource(ds); |
| 2323 NavigationState::LoadTimes* load_times = navigation_state->load_times(); | |
| 2323 | 2324 |
| 2324 // Update the request time if WebKit has better knowledge of it. | 2325 // Update the request time if WebKit has better knowledge of it. |
| 2325 if (navigation_state->request_time().is_null()) { | 2326 if (load_times->request_time().is_null()) { |
| 2326 double event_time = ds->triggeringEventTime(); | 2327 double event_time = ds->triggeringEventTime(); |
| 2327 if (event_time != 0.0) | 2328 if (event_time != 0.0) |
| 2328 navigation_state->set_request_time(Time::FromDoubleT(event_time)); | 2329 load_times->set_request_time(Time::FromDoubleT(event_time)); |
| 2329 } | 2330 } |
| 2330 | 2331 |
| 2331 // Start time is only set after request time. | 2332 // Start time is only set after request time. |
| 2332 navigation_state->set_start_load_time(Time::Now()); | 2333 load_times->set_start_load_time(Time::Now()); |
| 2333 | 2334 |
| 2334 bool is_top_most = !frame->parent(); | 2335 bool is_top_most = !frame->parent(); |
| 2335 if (is_top_most) { | 2336 if (is_top_most) { |
| 2336 navigation_gesture_ = frame->isProcessingUserGesture() ? | 2337 navigation_gesture_ = frame->isProcessingUserGesture() ? |
| 2337 NavigationGestureUser : NavigationGestureAuto; | 2338 NavigationGestureUser : NavigationGestureAuto; |
| 2338 | 2339 |
| 2339 // Make sure redirect tracking state is clear for the new load. | 2340 // Make sure redirect tracking state is clear for the new load. |
| 2340 completed_client_redirect_src_ = GURL(); | 2341 completed_client_redirect_src_ = GURL(); |
| 2341 } else if (frame->parent()->isLoading()) { | 2342 } else if (frame->parent()->isLoading()) { |
| 2342 // Take note of AUTO_SUBFRAME loads here, so that we can know how to | 2343 // Take note of AUTO_SUBFRAME loads here, so that we can know how to |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2429 navigation_state->transition_type() == | 2430 navigation_state->transition_type() == |
| 2430 content::PAGE_TRANSITION_AUTO_SUBFRAME; | 2431 content::PAGE_TRANSITION_AUTO_SUBFRAME; |
| 2431 | 2432 |
| 2432 // If we failed on a browser initiated request, then make sure that our error | 2433 // If we failed on a browser initiated request, then make sure that our error |
| 2433 // page load is regarded as the same browser initiated request. | 2434 // page load is regarded as the same browser initiated request. |
| 2434 if (!navigation_state->is_content_initiated()) { | 2435 if (!navigation_state->is_content_initiated()) { |
| 2435 pending_navigation_state_.reset(NavigationState::CreateBrowserInitiated( | 2436 pending_navigation_state_.reset(NavigationState::CreateBrowserInitiated( |
| 2436 navigation_state->pending_page_id(), | 2437 navigation_state->pending_page_id(), |
| 2437 navigation_state->pending_history_list_offset(), | 2438 navigation_state->pending_history_list_offset(), |
| 2438 navigation_state->transition_type(), | 2439 navigation_state->transition_type(), |
| 2439 navigation_state->request_time())); | 2440 navigation_state->load_times()->request_time())); |
| 2440 } | 2441 } |
| 2441 | 2442 |
| 2442 // Provide the user with a more helpful error page? | 2443 // Provide the user with a more helpful error page? |
| 2443 if (MaybeLoadAlternateErrorPage(frame, error, replace)) | 2444 if (MaybeLoadAlternateErrorPage(frame, error, replace)) |
| 2444 return; | 2445 return; |
| 2445 | 2446 |
| 2446 // Fallback to a local error page. | 2447 // Fallback to a local error page. |
| 2447 LoadNavigationErrorPage(frame, failed_request, error, std::string(), replace); | 2448 LoadNavigationErrorPage(frame, failed_request, error, std::string(), replace); |
| 2448 } | 2449 } |
| 2449 | 2450 |
| 2450 void RenderViewImpl::didReceiveDocumentData( | 2451 void RenderViewImpl::didReceiveDocumentData( |
| 2451 WebFrame* frame, const char* data, size_t data_len, | 2452 WebFrame* frame, const char* data, size_t data_len, |
| 2452 bool& prevent_default) { | 2453 bool& prevent_default) { |
| 2453 NavigationState* navigation_state = | 2454 NavigationState* navigation_state = |
| 2454 NavigationState::FromDataSource(frame->dataSource()); | 2455 NavigationState::FromDataSource(frame->dataSource()); |
| 2455 navigation_state->set_use_error_page(false); | 2456 navigation_state->set_use_error_page(false); |
| 2456 } | 2457 } |
| 2457 | 2458 |
| 2458 void RenderViewImpl::didCommitProvisionalLoad(WebFrame* frame, | 2459 void RenderViewImpl::didCommitProvisionalLoad(WebFrame* frame, |
| 2459 bool is_new_navigation) { | 2460 bool is_new_navigation) { |
| 2460 NavigationState* navigation_state = | 2461 NavigationState* navigation_state = |
| 2461 NavigationState::FromDataSource(frame->dataSource()); | 2462 NavigationState::FromDataSource(frame->dataSource()); |
| 2463 NavigationState::LoadTimes* load_times = navigation_state->load_times(); | |
| 2462 | 2464 |
| 2463 navigation_state->set_commit_load_time(Time::Now()); | 2465 if (load_times->commit_load_time().is_null()) { |
|
jam
2011/10/27 20:39:53
nit: this file doesn't use brace brackets for one
| |
| 2466 load_times->set_commit_load_time(Time::Now()); | |
| 2467 } | |
| 2468 | |
| 2464 if (is_new_navigation) { | 2469 if (is_new_navigation) { |
| 2465 // When we perform a new navigation, we need to update the last committed | 2470 // When we perform a new navigation, we need to update the last committed |
| 2466 // session history entry with state for the page we are leaving. | 2471 // session history entry with state for the page we are leaving. |
| 2467 UpdateSessionHistory(frame); | 2472 UpdateSessionHistory(frame); |
| 2468 | 2473 |
| 2469 // We bump our Page ID to correspond with the new session history entry. | 2474 // We bump our Page ID to correspond with the new session history entry. |
| 2470 page_id_ = next_page_id_++; | 2475 page_id_ = next_page_id_++; |
| 2471 | 2476 |
| 2472 // Advance our offset in session history, applying the length limit. There | 2477 // Advance our offset in session history, applying the length limit. There |
| 2473 // is now no forward history. | 2478 // is now no forward history. |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2559 | 2564 |
| 2560 void RenderViewImpl::didChangeIcon(WebFrame* frame, WebIconURL::Type type) { | 2565 void RenderViewImpl::didChangeIcon(WebFrame* frame, WebIconURL::Type type) { |
| 2561 FOR_EACH_OBSERVER(RenderViewObserver, observers_, | 2566 FOR_EACH_OBSERVER(RenderViewObserver, observers_, |
| 2562 DidChangeIcon(frame, type)); | 2567 DidChangeIcon(frame, type)); |
| 2563 } | 2568 } |
| 2564 | 2569 |
| 2565 void RenderViewImpl::didFinishDocumentLoad(WebFrame* frame) { | 2570 void RenderViewImpl::didFinishDocumentLoad(WebFrame* frame) { |
| 2566 WebDataSource* ds = frame->dataSource(); | 2571 WebDataSource* ds = frame->dataSource(); |
| 2567 NavigationState* navigation_state = NavigationState::FromDataSource(ds); | 2572 NavigationState* navigation_state = NavigationState::FromDataSource(ds); |
| 2568 DCHECK(navigation_state); | 2573 DCHECK(navigation_state); |
| 2569 navigation_state->set_finish_document_load_time(Time::Now()); | 2574 NavigationState::LoadTimes* load_times = navigation_state->load_times(); |
| 2575 DCHECK(load_times); | |
|
jam
2011/10/27 20:39:53
nit: these dchecks, at least for load_times, aren'
| |
| 2576 load_times->set_finish_document_load_time(Time::Now()); | |
| 2570 | 2577 |
| 2571 Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_, frame->identifier())); | 2578 Send(new ViewHostMsg_DocumentLoadedInFrame(routing_id_, frame->identifier())); |
| 2572 | 2579 |
| 2573 FOR_EACH_OBSERVER(RenderViewObserver, observers_, | 2580 FOR_EACH_OBSERVER(RenderViewObserver, observers_, |
| 2574 DidFinishDocumentLoad(frame)); | 2581 DidFinishDocumentLoad(frame)); |
| 2575 | 2582 |
| 2576 // Check whether we have new encoding name. | 2583 // Check whether we have new encoding name. |
| 2577 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 2584 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
| 2578 } | 2585 } |
| 2579 | 2586 |
| 2580 void RenderViewImpl::didHandleOnloadEvents(WebFrame* frame) { | 2587 void RenderViewImpl::didHandleOnloadEvents(WebFrame* frame) { |
| 2581 if (webview()->mainFrame() == frame) { | 2588 if (webview()->mainFrame() == frame) { |
| 2582 Send(new ViewHostMsg_DocumentOnLoadCompletedInMainFrame(routing_id_, | 2589 Send(new ViewHostMsg_DocumentOnLoadCompletedInMainFrame(routing_id_, |
| 2583 page_id_)); | 2590 page_id_)); |
| 2584 } | 2591 } |
| 2585 } | 2592 } |
| 2586 | 2593 |
| 2587 void RenderViewImpl::didFailLoad(WebFrame* frame, const WebURLError& error) { | 2594 void RenderViewImpl::didFailLoad(WebFrame* frame, const WebURLError& error) { |
| 2588 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidFailLoad(frame, error)); | 2595 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidFailLoad(frame, error)); |
| 2589 } | 2596 } |
| 2590 | 2597 |
| 2591 void RenderViewImpl::didFinishLoad(WebFrame* frame) { | 2598 void RenderViewImpl::didFinishLoad(WebFrame* frame) { |
| 2592 WebDataSource* ds = frame->dataSource(); | 2599 WebDataSource* ds = frame->dataSource(); |
| 2593 NavigationState* navigation_state = NavigationState::FromDataSource(ds); | 2600 NavigationState* navigation_state = NavigationState::FromDataSource(ds); |
| 2594 DCHECK(navigation_state); | 2601 DCHECK(navigation_state); |
| 2595 navigation_state->set_finish_load_time(Time::Now()); | 2602 NavigationState::LoadTimes* load_times = navigation_state->load_times(); |
| 2603 DCHECK(load_times); | |
| 2604 load_times->set_finish_load_time(Time::Now()); | |
| 2596 | 2605 |
| 2597 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidFinishLoad(frame)); | 2606 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidFinishLoad(frame)); |
| 2598 | 2607 |
| 2599 Send(new ViewHostMsg_DidFinishLoad(routing_id_, frame->identifier())); | 2608 Send(new ViewHostMsg_DidFinishLoad(routing_id_, frame->identifier())); |
| 2600 } | 2609 } |
| 2601 | 2610 |
| 2602 void RenderViewImpl::didNavigateWithinPage( | 2611 void RenderViewImpl::didNavigateWithinPage( |
| 2603 WebFrame* frame, bool is_new_navigation) { | 2612 WebFrame* frame, bool is_new_navigation) { |
| 2604 // If this was a reference fragment navigation that we initiated, then we | 2613 // If this was a reference fragment navigation that we initiated, then we |
| 2605 // could end up having a non-null pending navigation state. We just need to | 2614 // could end up having a non-null pending navigation state. We just need to |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2686 return; | 2695 return; |
| 2687 | 2696 |
| 2688 // If we are in view source mode, then just let the user see the source of | 2697 // If we are in view source mode, then just let the user see the source of |
| 2689 // the server's error page. | 2698 // the server's error page. |
| 2690 if (frame->isViewSourceModeEnabled()) | 2699 if (frame->isViewSourceModeEnabled()) |
| 2691 return; | 2700 return; |
| 2692 | 2701 |
| 2693 NavigationState* navigation_state = | 2702 NavigationState* navigation_state = |
| 2694 NavigationState::FromDataSource(frame->provisionalDataSource()); | 2703 NavigationState::FromDataSource(frame->provisionalDataSource()); |
| 2695 CHECK(navigation_state); | 2704 CHECK(navigation_state); |
| 2705 NavigationState::LoadTimes* load_times = navigation_state->load_times(); | |
| 2706 DCHECK(load_times); | |
| 2696 int http_status_code = response.httpStatusCode(); | 2707 int http_status_code = response.httpStatusCode(); |
| 2697 | 2708 |
| 2698 // Record page load flags. | 2709 // Record page load flags. |
| 2699 navigation_state->set_was_fetched_via_spdy(response.wasFetchedViaSPDY()); | 2710 load_times->set_was_fetched_via_spdy(response.wasFetchedViaSPDY()); |
| 2700 navigation_state->set_was_npn_negotiated(response.wasNpnNegotiated()); | 2711 load_times->set_was_npn_negotiated(response.wasNpnNegotiated()); |
| 2701 navigation_state->set_was_alternate_protocol_available( | 2712 load_times->set_was_alternate_protocol_available( |
| 2702 response.wasAlternateProtocolAvailable()); | 2713 response.wasAlternateProtocolAvailable()); |
| 2703 navigation_state->set_was_fetched_via_proxy(response.wasFetchedViaProxy()); | 2714 load_times->set_was_fetched_via_proxy(response.wasFetchedViaProxy()); |
| 2704 navigation_state->set_http_status_code(http_status_code); | 2715 load_times->set_http_status_code(http_status_code); |
| 2705 // Whether or not the http status code actually corresponds to an error is | 2716 // Whether or not the http status code actually corresponds to an error is |
| 2706 // only checked when the page is done loading, if |use_error_page| is | 2717 // only checked when the page is done loading, if |use_error_page| is |
| 2707 // still true. | 2718 // still true. |
| 2708 navigation_state->set_use_error_page(true); | 2719 navigation_state->set_use_error_page(true); |
| 2709 } | 2720 } |
| 2710 | 2721 |
| 2711 void RenderViewImpl::didFinishResourceLoad( | 2722 void RenderViewImpl::didFinishResourceLoad( |
| 2712 WebFrame* frame, unsigned identifier) { | 2723 WebFrame* frame, unsigned identifier) { |
| 2713 NavigationState* navigation_state = | 2724 NavigationState* navigation_state = |
| 2714 NavigationState::FromDataSource(frame->dataSource()); | 2725 NavigationState::FromDataSource(frame->dataSource()); |
| 2726 NavigationState::LoadTimes* load_times = navigation_state->load_times(); | |
| 2715 if (!navigation_state->use_error_page()) | 2727 if (!navigation_state->use_error_page()) |
| 2716 return; | 2728 return; |
| 2717 | 2729 |
| 2718 // Do not show error page when DevTools is attached. | 2730 // Do not show error page when DevTools is attached. |
| 2719 if (devtools_agent_->IsAttached()) | 2731 if (devtools_agent_->IsAttached()) |
| 2720 return; | 2732 return; |
| 2721 | 2733 |
| 2722 // Display error page, if appropriate. | 2734 // Display error page, if appropriate. |
| 2723 int http_status_code = navigation_state->http_status_code(); | 2735 int http_status_code = load_times->http_status_code(); |
| 2724 if (http_status_code == 404) { | 2736 if (http_status_code == 404) { |
| 2725 // On 404s, try a remote search page as a fallback. | 2737 // On 404s, try a remote search page as a fallback. |
| 2726 const GURL& document_url = frame->document().url(); | 2738 const GURL& document_url = frame->document().url(); |
| 2727 | 2739 |
| 2728 const GURL& error_page_url = | 2740 const GURL& error_page_url = |
| 2729 GetAlternateErrorPageURL(document_url, HTTP_404); | 2741 GetAlternateErrorPageURL(document_url, HTTP_404); |
| 2730 if (error_page_url.is_valid()) { | 2742 if (error_page_url.is_valid()) { |
| 2731 WebURLError original_error; | 2743 WebURLError original_error; |
| 2732 original_error.domain = "http"; | 2744 original_error.domain = "http"; |
| 2733 original_error.reason = 404; | 2745 original_error.reason = 404; |
| (...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4009 pepper_delegate_.ViewFlushedPaint(); | 4021 pepper_delegate_.ViewFlushedPaint(); |
| 4010 | 4022 |
| 4011 WebFrame* main_frame = webview()->mainFrame(); | 4023 WebFrame* main_frame = webview()->mainFrame(); |
| 4012 | 4024 |
| 4013 // If we have a provisional frame we are between the start and commit stages | 4025 // If we have a provisional frame we are between the start and commit stages |
| 4014 // of loading and we don't want to save stats. | 4026 // of loading and we don't want to save stats. |
| 4015 if (!main_frame->provisionalDataSource()) { | 4027 if (!main_frame->provisionalDataSource()) { |
| 4016 WebDataSource* ds = main_frame->dataSource(); | 4028 WebDataSource* ds = main_frame->dataSource(); |
| 4017 NavigationState* navigation_state = NavigationState::FromDataSource(ds); | 4029 NavigationState* navigation_state = NavigationState::FromDataSource(ds); |
| 4018 DCHECK(navigation_state); | 4030 DCHECK(navigation_state); |
| 4031 NavigationState::LoadTimes* load_times = navigation_state->load_times(); | |
| 4032 DCHECK(load_times); | |
| 4019 | 4033 |
| 4020 // TODO(jar): The following code should all be inside a method, probably in | 4034 // TODO(jar): The following code should all be inside a method, probably in |
| 4021 // NavigatorState. | 4035 // NavigatorState. |
| 4022 Time now = Time::Now(); | 4036 Time now = Time::Now(); |
| 4023 if (navigation_state->first_paint_time().is_null()) { | 4037 if (load_times->first_paint_time().is_null()) { |
| 4024 navigation_state->set_first_paint_time(now); | 4038 load_times->set_first_paint_time(now); |
| 4025 } | 4039 } |
| 4026 if (navigation_state->first_paint_after_load_time().is_null() && | 4040 if (load_times->first_paint_after_load_time().is_null() && |
| 4027 !navigation_state->finish_load_time().is_null()) { | 4041 !load_times->finish_load_time().is_null()) { |
| 4028 navigation_state->set_first_paint_after_load_time(now); | 4042 load_times->set_first_paint_after_load_time(now); |
| 4029 } | 4043 } |
| 4030 } | 4044 } |
| 4031 } | 4045 } |
| 4032 | 4046 |
| 4033 void RenderViewImpl::OnViewContextSwapBuffersPosted() { | 4047 void RenderViewImpl::OnViewContextSwapBuffersPosted() { |
| 4034 RenderWidget::OnSwapBuffersPosted(); | 4048 RenderWidget::OnSwapBuffersPosted(); |
| 4035 } | 4049 } |
| 4036 | 4050 |
| 4037 void RenderViewImpl::OnViewContextSwapBuffersComplete() { | 4051 void RenderViewImpl::OnViewContextSwapBuffersComplete() { |
| 4038 RenderWidget::OnSwapBuffersComplete(); | 4052 RenderWidget::OnSwapBuffersComplete(); |
| (...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4667 return webview()->settings()->useThreadedCompositor(); | 4681 return webview()->settings()->useThreadedCompositor(); |
| 4668 } | 4682 } |
| 4669 | 4683 |
| 4670 void RenderViewImpl::OnJavaBridgeInit( | 4684 void RenderViewImpl::OnJavaBridgeInit( |
| 4671 const IPC::ChannelHandle& channel_handle) { | 4685 const IPC::ChannelHandle& channel_handle) { |
| 4672 DCHECK(!java_bridge_dispatcher_.get()); | 4686 DCHECK(!java_bridge_dispatcher_.get()); |
| 4673 #if defined(ENABLE_JAVA_BRIDGE) | 4687 #if defined(ENABLE_JAVA_BRIDGE) |
| 4674 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this, channel_handle)); | 4688 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this, channel_handle)); |
| 4675 #endif | 4689 #endif |
| 4676 } | 4690 } |
| OLD | NEW |